Update an MCP server
Authentication
Path parameters
UUID of the MCP server registration. It must belong to the authenticated workspace; an id from another workspace answers 404, exactly like an unknown one. Returned as id by GET /api/mcp-servers.
Request
Unknown keys are ignored. Empty or whitespace-only strings are treated as absent. At least one field is required.
New display name, trimmed. Re-registers the server.
New agent-facing description; null clears it. Re-registers the server.
New MCP endpoint (http/https). Must not target private/internal addresses. Re-registers the server.
New credential, stored encrypted; null clears it (refused for hosted providers).
Replaces all custom headers (at most 20). Stored encrypted and never returned.
New approval policy (always_ask, fine_grained or no_approval).
New transport (SSE or STREAMABLE_HTTP). Re-registers the server; hosted providers accept only theirs.
Replaces all per-tool decisions (auto_approved or requires_approval, keyed by tool
name). Only with fine_grained (sent or stored); at most 50; disabled is rejected.
Send {} to clear them.
Response
Updated. toolOverridesSync is present when decisions were pushed or re-applied.
A single MCP server as returned by the create, retrieve and update endpoints: the summary
fields plus deleted_at and the applied per-tool decisions. secret_token and
custom_headers are never returned.
What happened when per-tool decisions were pushed to the voice engine. Present only when decisions were sent, or re-applied after a re-registration or cleanup of legacy values.

