Both bridges are deliberately empty — no SDK, no schemas, no REST calls — so whatever the hosted server gains, a stdio client picks up without upgrading anything, and the two transports cannot drift apart.
AgentMail's single MCP implementation, hosted at `https://mcp.agentmail.to/mcp` over Streamable HTTP. Everything else in the repository is transport: an npm bridge and a PyPI bridge that pull the tool catalog from that server and forward calls to it.
- The hosted endpoint as the primary integration, over OAuth or the server's per-request API-key header
- `npx -y agentmail-mcp` with `AGENTMAIL_API_KEY` for Node clients that only speak stdio
- `uvx agentmail-mcp` for the same thing without a Node toolchain
- A tool catalog discovered at runtime, so new tools reach you on the next connection rather than in a bridge release
- `--tools name1,name2` to hand a stdio client a filtered catalog instead of the whole surface
- Structured MCP results and errors preserved through both bridges, which hold no SDK and no tool definitions of their own
An AgentMail API key in `AGENTMAIL_API_KEY`, or OAuth where your client supports it. Nothing to install on the hosted path. If you are on the Python bridge, know its one gap: cancelling a call stops the local wait but the server keeps processing, because the Python SDK version it targets exposes no way to forward the cancellation upstream.
One command plus a key — npx -y agentmail-mcp, then supply credentials
