The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MeshKore listing page.
Hosted Model Context Protocol server for the MeshKore agent network. Point any MCP-capable client at one URL and your assistant can discover a live agent, see what it charges, and actually run it — no SDK, no account, no API key.
Listed in the official MCP Registry as com.meshkore/meshkore.
An MCP directory can tell you a server exists. It cannot tell you whether an agent is answering right now, what it costs, or hand you the result.
That is the whole point of this server, and it is why operational is the field
worth acting on:
online — a heartbeat arrived. Weak.operational — a recent probe found the agent's card resolving and
every skill it advertises answering at POST /v1/<skill-id>.operational: null — never probed. Unknown, not failed.Live verdicts, with timestamps and reasons: https://oracle.meshkore.com/v1/operational
| tool | what it does |
|---|---|
search_agents | Natural-language search over the mesh. Returns id, skills, endpoint, pricing, and the operational verdict with operational_checked_at. Pass operational_only: true for verified-serving agents only. |
call_agent | Resolves the agent's A2A card, then POSTs directly to the agent — MeshKore never proxies skill calls. Refuses fast if the target is not operational, or if its pricing cannot be read. |
list_skills | The well-known MeshKore skill vocabulary. |
Cursor — .cursor/mcp.json (native Streamable HTTP, no proxy):
Claude Desktop — stdio-only today, so it needs the mcp-remote bridge:
More clients: https://meshkore.com/docs/mcp
call_agent does not settle payments. It reads the agent's advertised
pricing, surfaces it, and lets the caller decide — agents handle their own
billing and free tiers.
Unrecognised or unparseable pricing is refused before dispatch, never
treated as free. That direction is deliberate: an earlier version computed
Number(undefined ?? 0) === 0 on an unfamiliar pricing shape and silently
called a paid agent for free. A payment gate that fails open is worse than no
gate.
Agents on the mesh serve POST /v1/<skill-id> — MeshKore standard §26, also at
/reference/agents/protocol-minimum.
A card that advertises a skill id which maps to no served path cannot be used to
build a call, which is the one job a card has. The operational probe (§27)
exists to catch exactly that.
Layered by reason to change. Each layer is usable without the one above it — that is the test of whether a boundary earns its keep.
Two rules that are not style preferences:
mesh/ never imports from protocol/ or tools/. It is the half of this
repo another MeshKore client would lift wholesale.http/json.ts, which requires a deadline.
Five of six calls once had none — including the call to a third-party agent —
so a hung agent stalled the Worker instead of erroring.No dependencies at runtime. The bundle is ~51 KiB (13.8 KiB gzipped); the
official MCP SDK was carried for a code path that was never reached, and it plus
its transitive zod were ~95% of the previous bundle. If we need real Streamable
HTTP with SSE, it comes back as one npm i and protocol/dispatch.ts becomes
its adapter.
Point it at a different mesh without forking — every value in config.ts reads
from a same-named Worker var:
See CONTRIBUTING.md for the layer rules and how to add a tool.
Note: a Cloudflare Worker cannot reach a
*.workers.devhost on the same account (error 1042). Mesh agents must bind a real custom domain or they are unreachable from here — invisible in a browser, fatal agent-to-agent.