Update a connector's capabilities
/v1/mcp-integrations/{slug}/capabilitiesUpdate a connector's capabilities.
Applies several changes at once: switch capabilities on or off, pin the current definition (clears drift), release a quarantined definition despite its scan findings, and set the call policy of a tool: is_privileged (refused for a caller that received untrusted content recently, unless a person approves the call), requires_approval (every call waits for a person's approval; the agent's identical retry then goes ahead once) and trusted_output (its results do not make the caller untrusted). Returns the updated list.
Requires an organization admin key, or a workspace admin key for the owning workspace (an organization-level connector needs an organization admin). Returns 400 for a capability of another connector, release on a definition that is not quarantined, or is_privileged / requires_approval on something other than a tool. Returns 402 when the organization's plan does not include the MCP Gateway. Returns 404 when the connector does not exist in the organization.
Authorization
AuthorizationBearer va_A platform API key (
va_...), created under Settings > API keys. Scoped to an organization or one workspace, with an admin or member role. Used by the management API.
Path parameters
slugstringrequiredThe connector's slug (
mcpi-...).
Query parameters
organizationstringrequiredThe organization's identifier (slug).
Request body application/json
the changes
capabilitiesobject[]requiredThe changes, one per capability. At least one.
Child attributes
idstring<uuid>requiredThe capability's ID (UUID). It must belong to the connector (or to the server's connector).
enabledbooleanSwitch the capability on or off.
pinbooleantrueapproves the current definition, clearing drift. Connectors only.releasebooleantrueserves a quarantined definition despite its scan findings. Releases this exact definition only: a later change is scanned again. A 400 when it is not quarantined.is_privilegedbooleanTools only: refuse the tool for a caller that received untrusted content recently, unless approved.
requires_approvalbooleanTools only: hold every call until a person approves it.
trusted_outputbooleanMark what it returns as trusted, so it does not make the caller untrusted.
Responses
dataobject[]The capabilities, all of them (not paginated).
Child attributes
idstring<uuid>The capability's ID (UUID), used to update it.
typeenum<string>TOOL,PROMPT,RESOURCEorRESOURCE_TEMPLATE.One of
"TOOL","PROMPT","RESOURCE","RESOURCE_TEMPLATE"identifierstringWhat identifies it at the upstream: the name of a tool or prompt, the URI of a resource, the URI template of a resource template.
namestringThe capability's name, as the upstream gives it.
titlestringHuman-readable title, when the upstream gives one.
descriptionstringDescription, as the upstream gives it.
annotationsobjectTool annotations (hints such as read-only or destructive), as a JSON object, when the upstream gives them.
input_schemaobjectTools: the JSON Schema of the arguments.
output_schemaobjectTools: the JSON Schema of the structured result, when the upstream gives one.
argumentsobjectPrompts: the prompt's arguments, as the upstream lists them.
uristringResources: the resource URI.
uri_templatestringResource templates: the URI template.
mime_typestringResources and resource templates: the MIME type, when given.
schema_hashstringSHA-256 of the current definition (hex).
pinned_schema_hashstringSHA-256 of the approved (pinned) definition.
driftedbooleantruewhen the current definition differs from the pinned one. A drifted capability is refused until it is pinned again.scannedbooleantruewhen the current definition has been scanned for tool poisoning (hidden instructions in its description or schema).falsefor a definition synced before scanning was available.scan_findingsobjectWhat the scan found in the current definition: a list of objects with
check_type,descriptionandfield. Absent when not scanned.quarantinedbooleantruewhen the scan found tool poisoning and no admin has released this definition: it is refused on calls and hidden from listings.released_bystringThe user who released the current definition despite its findings. Absent unless released.
released_atstring<date-time>When the current definition was released (ISO 8601). Absent unless released.
is_privilegedbooleanTools:
truerefuses the tool for a caller that received untrusted content recently (a result from a tool not markedtrusted_output), unless a person approves that exact call. Tools ofOPENAPIandHTTPconnectors other than GET and HEAD start privileged.requires_approvalbooleanTools:
trueholds every call until a person approves that exact call; the agent's identical retry then goes ahead once.trusted_outputbooleantrue: what it returns does not make the caller untrusted. Defaultfalse.enabledbooleanWhether the capability is switched on for the connector. A capability that appears after the first sync starts off, and every tool of an
OPENAPIorHTTPconnector starts off.statusenum<string>ACTIVE(listed by the upstream on the last sync) orREMOVED.One of
"ACTIVE","REMOVED"server_enabledbooleanIn a server's listing: whether that server has it switched on. Absent in a connector's listing.
effective_enabledbooleanWhether a call to it would be allowed: enabled, active, on for the server, not drifted and not quarantined.
first_seen_atstring<date-time>When a sync first found it (ISO 8601).
last_seen_atstring<date-time>When a sync last found it (ISO 8601).
totalinteger<int64>How many there are.