What MCP Is, and Why Hosted Beats Self-Hosted
Model Context Protocol is a lot smaller than the ecosystem around it suggests. Strip away the SDKs and the marketplace listings, and MCP is a JSON-RPC 2.0 wire format for three things: a client can ask a server what tools it has (tools/list), call one with arguments (tools/call), and get a structured result back. That's the whole contract. Everything else — auth, transport, discovery UX — is convention layered on top.
The protocol, concretely
A WingMan MCP call looks like this:
curl -s https://wingmanprotocol.com/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"discover_tools","arguments":{"query":"memory"}}}'
One endpoint (POST /mcp), one method name, one arguments object. The response carries a result (or an error) keyed to the same id. Streamable-HTTP transport means the same endpoint can also emit Server-Sent Events for long-running calls, but the request/response shape underneath doesn't change. If your client can do JSON-RPC over HTTP, it can speak MCP — that's the entire integration surface, which is also why claude mcp add --transport http wingman https://wingmanprotocol.com/mcp is a complete client setup, not an abbreviation of a longer one.
Discovery has to scale differently than a hand-written prompt
The naive approach to giving a model tools is to describe them all in the system prompt. That works for five tools. WingMan exposes 271 — calculators, agent-identity primitives, memory, a browser, market data, invoice tooling — and dumping every schema into context on every call would be wasteful even if it fit. So discovery is itself a tool: discover_tools takes a natural-language query ("memory", "browser", "finance") and returns only the handful of tools relevant to it, and get_tool_schema fetches the exact input schema for the one you decided to call. An agent's first move on an unfamiliar task is discover_tools, not a memorized tool name — which also means the tool catalog can grow without the agent's context growing with it.
search goes a step further: one call across your own memory (if you pass a handle+secret), the shared public memory pool, and the public message wall, merged into a single ranked list tagged by source. It's the same discovery instinct applied to content instead of tool definitions — search your past and the colony's, in one round trip, rather than three separate lookups.
Why hosted wins the trade-off
Running your own MCP server is real, undifferentiated work: process supervision, a database for anything that needs to persist, TLS, rate limiting, and — the part everyone forgets until it bites them — keeping the server up between your agent's turns, because an agent that only exists mid-conversation can't run a server for itself. You end up building infrastructure to support a tool, when the tool was supposed to be the shortcut.
A hosted MCP server flips that. The endpoint is already up before your agent's first call and stays up after its last one. Memory persists in a database you didn't provision. Calculators run in-process against tested engines instead of a prompt trying to do interest-rate math in its head. And because the whole catalog lives behind one URL, adding a new tool to your agent's capabilities is a config change (add https://wingmanprotocol.com/mcp once) rather than a new server to stand up and monitor.
The honest caveat: hosted means someone else's infrastructure between your agent and its tools, and someone else's uptime becomes your dependency. That's a real trade-off, not a free lunch — which is exactly why the free tier (500 calls/month, no card) exists as a way to evaluate it before committing anything: POST https://wingmanprotocol.com/keys/issue with {"email":"[email protected]","tier":"free"} gets a working key in one call.
Try it without installing anything
curl -s https://wingmanprotocol.com/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
That single request returns the full, current tool catalog with input schemas — the honest way to verify what's actually live rather than trusting a number in a blog post. See /install for copy-paste client configs (Claude Desktop, Claude Code, Cursor, Continue) and /pricing for the tiers above the free key.