Every assistant is also an MCP environment. What it reads and what it may do is what your coding agents get, through one URL, with the same credentials and the same log.
An assistant holds its sources, its actions, its credentials and its activity log. Create an account, create an assistant, and its Developers tab shows a URL of the form:
https://mcp.clemali.com/e/7c1f0a2e-9d84-4b6c-a0f1-2b5c8e4d31af
The identifier in it is opaque: it names the assistant without revealing its name, and it is not a credential. What authenticates an agent is either a browser sign-in with your Clemali account, or a token sent in the Authorization header — shown once at creation, stored hashed, shown again only when you rotate it. Putting the token inside the URL is possible too, but off by default: why, and how to allow it.
Open the assistant's Sources tab. Pick a system from the catalogue (GitHub, Linear, Notion, Sentry, Context7…) or add any remote MCP server that speaks Streamable HTTP or SSE. A system that needs a key asks for it there; the value goes straight into the assistant's vault. OAuth systems open a consent screen and keep the grant in the vault too.
Clemali probes the server right away and lists the tools it exposes. Every one of them is served through the developer URL, prefixed with the server's short name when the assistant has more than one.
claude mcp add --transport http acme-api https://mcp.clemali.com/e/7c1f0a2e-9d84-4b6c-a0f1-2b5c8e4d31af
# then, inside Claude Code: /mcp → acme-api → Authenticate
# older Claude Code, where --transport is not a known option:
claude mcp add-json acme-api '{"type":"http","url":"https://mcp.clemali.com/e/7c1f0a2e-9d84-4b6c-a0f1-2b5c8e4d31af"}'Cursor, Codex, Windsurf, VS Code and every other Streamable HTTP client take the same URL. Per-client snippets →