Skip to main content
anyformat runs a remote Model Context Protocol server. Any MCP host, such as Claude Code, Claude Desktop or Cursor, connects to it and calls anyformat as tools. The tools are the same v3 endpoints you call by hand, under the same API key, rate limits and error envelope.

Endpoint

/mcp and /mcp/ are the same endpoint. There is no stdio package; a host that only speaks stdio connects through mcp-remote (below).

Auth

The server accepts the same af_... API key as the REST API, as a bearer token. A key that works on /v3 works on /mcp. Mint one at app.anyformat.ai/api-key. A missing or unknown key returns 401 with the API’s error envelope (MISSING_API_KEY or INVALID_API_KEY). Repeated invalid keys from one address are throttled and return 429 with Retry-After, as on the REST API. There is no OAuth flow today.

Connect

Add the server with the claude mcp add command. --scope user makes it available in every project; --scope project writes it to the project’s .mcp.json.
Or write .mcp.json in the project root. Claude Code expands ${VAR} from the environment.
Check with claude mcp list, then ask Claude to list your workflows.

Tools

The server exposes these tools today. Each one calls the matching v3 endpoint under your key, so the endpoint page is the reference for its inputs, outputs and errors. The graph a tool takes or returns is the one on the Node schemas page. A host reads the full input schema from the server, so an agent can compose a valid graph without you pasting the schema into the conversation. The document flow an agent follows is upload_documents, then run_document_packet, then get_run with wait_seconds set, so one call waits for the result instead of the agent polling. parse_document is the one-call shortcut when the agent only needs the markdown of a single document.
delete_workflow and delete_document_packet are irreversible. Their descriptions ask the agent to call request_approval with a one-line summary and to wait for your approval before deleting. That approval is a card the host shows you; a host that does not render it still sees the destructiveHint and can ask you its own way.

Tool annotations

Every tool declares the standard MCP annotations, so a host can decide when to ask you before calling it. All tools set openWorldHint: false: they only reach anyformat.

Authorization and limits

Authorization follows the API key. Whatever the key can do on /v3, it can do over /mcp, on the key’s organization only. Each tool needs one of the key’s scopes: the list and get tools need read, the tools that create, run, update or delete need write. A tool the key cannot call is left out of the server’s tool list, and a direct call to it is answered as an unknown tool. Every tool call passes through the gateway’s normal rate limiting, so the rate limit tiers apply per tool call as they do per request.

Errors

A failed tool call returns an MCP tool error whose message is the API’s error envelope as JSON: { error, detail, error_code, retryable, request_id, status }. Read error_code to branch, status for the equivalent HTTP status code, and quote request_id in a support request. A TOPOLOGY_INVALID error carries detail.violations[], one entry per broken rule, with the node ids involved.