Mycelio is a signature-rooted, agent-native protocol for discovering and invoking SaaS services. 50–200× smaller on the wire than HTTP+JSON. Vendors don't implement anything — their existing APIs stay untouched.
myc://mycelio.prowl.world:4242
63 tests
10 verbs · ROUTE working
An AI agent today pays for every byte its LLM reads or writes. Just finding a payments API and making one call burns ~5,000 tokens on JSON envelopes, OpenAPI specs, and TLS handshakes — before the reasoning even starts.
Discover + inspect + invoke, end to end. Same outcome, same vendor, same Stripe charge. Three orders of magnitude less plumbing for the LLM to chew through.
Think of it as food delivery for API calls. The agent is the customer. The vendor's backend (Stripe, Plaid, Resend, your-API-here) is the restaurant — keeps cooking HTTP+JSON exactly as today.
Between them sits mycd, the courier daemon. It speaks
binary Mycelio frames to the agent and outbound HTTP to the vendor.
The agent never sees HTTP; the vendor never sees Mycelio.
Vendors publish a ~400-byte signed manifest describing their endpoints. The directory co-signs it. That's all — no SDK to install, no servers to run, no code to write. The protocol's translation layer meets the API where it lives.
Mycelio overlaps with three other emerging agent protocols. The decisive difference is the second row of this table: every other protocol asks the vendor to ship code — run a server, expose an endpoint, maintain another integration. Mycelio asks the vendor to sign a 400-byte file describing the API they already have.
DISCOVER)
What Mycelio is not trying to be: a replacement for MCP inside an agent's tool-use loop (MCP is good at that), a peer-to-peer agent network like A2A, or a function-calling syntax like OpenAI's. It's the agent-to-service layer — discover, verify, invoke — for any backend that already speaks HTTP.
The reference daemon is running on the public internet right now.
pip install 'mycelio[server]'
import asyncio
from mycelio.client import MycelioClient
async def main():
async with MycelioClient("mycelio.prowl.world", 4242) as c:
services = await c.discover(category="payments")
for s in services:
print(s.name, s.hash.hex()[:16])
asyncio.run(main())
See examples/
for full DISCOVER and ROUTE demos with signature verification.
Full wire spec: protocol-v0.md · Manifest format: manifest-v0.md
INSPECT, ROUTE tunneling to real HTTP backends. 63 tests.prowl-bench design manifest subcommand.
Streaming through ROUTE, peer-to-peer shard relay, and the BENCH / CLAIM / PAY / INDEX verbs are reserved in the spec but not on the active roadmap — the protocol's job is done once Phase 2 ships.
Mycelio is a protocol, not a product. The spec is authoritative; this Python reference is one implementation. Ports in Go, Rust, JS, and others are welcome.
The canonical directory implementation is Prowl. Other directories can exist and federate via signed manifests — the spec doesn't assume one operator.