REST and MCP
BetaThe handful of endpoints that stay outside GraphQL: binary upload, log streams, the MCP server and the deploy hook.
A few endpoints stay REST because GraphQL is the wrong transport for them: binary upload and long-lived byte streams.
Prop
Type
MCP server
AI agents reach Deplo at POST /api/mcp, speaking the Model Context
Protocol, revision 2026-07-28. This is the wire-protocol reference;
for setup and the token-driven security model, see
MCP server.
Beta
It works and is gated like everything else, but the spec revision is new and the tool surface will move. It is a different framing of this same API, not a second one: each tool runs a GraphQL document in-process as the caller's own principal, so every capability gate, folder grant, token scope and 2FA policy applies identically.
Authentication is the ordinary API token, there is no MCP-specific credential:
claude mcp add --transport http deplo https://deplo.example.com/api/mcp \
--header "Authorization: Bearer deplo_your_token" \
--header "X-Deplo-Team: acme"The protocol is stateless (no session, no initialize handshake). Every
call runs in one team: the default is chosen by X-Deplo-Team when the
agent is connected, and every tool takes an optional team argument (id or
slug) to work in another; list_teams names the ones the connection can
act in. tools/list returns only the tools the token can actually call.
A 403 means the team has switched MCP off (Settings -> MCP Server, needs
manage_team) or the token's owner lacks manage_mcp there; a 429 means
the per-token rate limit.
No tool can reveal a secret, whatever capabilities the token holds:
list_env shows keys with masked values and there is no reveal_env.
That holds for graphql_query and graphql_mutate too, the two tools
that run a query the agent wrote: they refuse by name any field that
returns a credential or runs a command in a container.
Everything else the token's capabilities allow, it can do, Deplo adds
no confirmation step of its own. Destructive tools carry
destructiveHint in tools/list, which is what makes an MCP client ask
its own user first.
Deploy hook
The deploy hook (POST /api/apps/[id]/deploy-hook/[token]) has moved to its
own page: see Deploy hook for the request,
response and error codes.
See also
Did this page help you?