Publish a platform's tools on the Liberrex MCP mesh (peer keys, per-call user identity, permissions), plus the Liberrex AI MCP server.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"liberrex-mcp-server","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# liberrex-mcp-server (Python) Publish a platform's tools on the **Liberrex MCP mesh**, so that Liberrex AI, Animatoria, the ERP and any other platform of the ecosystem can call them. It follows the shared [mesh conventions](../../MCP_MESH.md): peer keys, per-call user identity, permissions, write control and `[code]` errors. The package also ships the **Liberrex AI platform server** (`liberrex-mcp-server`): agents, copilot and sales intelligence (next best action, next best product…) as tools. - Python ≥ 3.10, built on the official `mcp` SDK v2. Stateless Streamable HTTP (any instance answers any call) or stdio. - Pair it with [`liberrex-mcp-client`](../../mcp-client/python) on the calling side. - TypeScript equivalent: [`@liberrex/mcp-server`](../typescript). ```bash pip install liberrex-mcp-server ``` ## Publish your platform's tools ```python from typing import Optional from liberrex_mcp_server import PeerRegistry, PlatformError, PlatformServer, ToolContext server = PlatformServer("erp", title="Acme ERP", peers=PeerRegistry.from_env()) @server.tool(permission="invoices.read", category="finance") def overdue_invoices(ctx: ToolContext, customer: Optional[str] = None, limit: int = 20) -> dict: """Overdue invoices the user can see, oldest first.""" user = ctx.require_identity() # who the call acts for: user_id, tenant_id, roles, locale rows = invoices.overdue(tenant=user.tenant_id, user=user.user_id, customer=customer, limit=limit) if rows is None: raise PlatformError("not_found", "Unknown customer") # → "[not_found] Unknown customer" return {"items": rows} @server.tool(permission="invoices.write", write=True) async def send_reminder(ctx: ToolContext, invoice_id: str) -> dict: """Send a payment reminder.""" ... ``` Then serve it: ```python app.mount("/mcp", server.asgi()) # FastAPI / Starlette; the endpoint answers at /mcp/ server.run_http(port=8765) # standalone, at /mcp server.run_std…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.