MCP Gateway API: schemas

The request and response bodies of the operations in this API.

AddCatalogEntryBiomeToolDto

PropertyTypeRequiredDescription
biomeInstallationIdstringyesBiome installation that owns the tool.
biomeToolKeystringyesTool key from the authoritative workflow contribution. NOT the projected <biomeId>__<key> form.
kindCatalogEntryRequestKindyesDiscriminator. biome_workflow_tools — a workflow-backed biome tool.

AddCatalogEntryMcpServerDto

PropertyTypeRequiredDescription
discoveredToolIdstring (uuid)yesID of the discovered tool to add.
kindCatalogEntryRequestKindyes

AddToolToCatalogDto

PropertyTypeRequiredDescription
entryAddCatalogEntryMcpServerDto or AddCatalogEntryBiomeToolDtoyes

AdmitToolDto

PropertyTypeRequiredDescription
expectedDefinitionHashstringyesThe definitionHash the admin reviewed. Admission is refused with 409 if the tool definition has changed since.

CapabilityRoleBindingResponseDto

PropertyTypeRequiredDescription
concreteCapabilityRefstringyesConcrete capability ref the role resolves to.
createdAtstring (date-time)yes
idstringyes
orgIdstringyes
rolestringyesAbstract logical role name.
updatedAtstring (date-time)yes

CapabilityRoleBindingResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of CapabilityRoleBindingResponseDtoyes

CapabilityRoleBindingResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataCapabilityRoleBindingResponseDtoyes

CatalogEntryRequestKind

Type: one of "mcp_server", "biome_workflow_tools"

CatalogResponseDto

PropertyTypeRequiredDescription
_countobjectnoNumber of tools in this catalog.
createdAtstring (date-time)yes
descriptionstringyes
idstringyes
isDefaultbooleanyes
namestringyes
orgIdstringyes
updatedAtstring (date-time)yes
versionnumberyes

CatalogResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of CatalogResponseDtoyes

CatalogResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataCatalogResponseDtoyes

CreateCatalogDto

PropertyTypeRequiredDescription
descriptionstringyesCatalog description.
isDefaultbooleannoWhether this is the default catalog.
namestringyesCatalog name.

DiscoveredToolResponseDto

PropertyTypeRequiredDescription
admittedDefinitionHashstring or nullnoHash of the definition an admin admitted. Absent: never admitted.
annotationsobject or nullnoMCP tool annotations as the upstream sent them.
canonicalNamestringyes
createdAtstring (date-time)yes
definitionHashstring or nullnoHash of the tool definition as last discovered. Send it to the admit route.
descriptionstringyes
displayNamestringyes
enabledByAdminbooleanyes
idstringyes
inputSchemaobject or nullno
orgMcpServerIdstringyes
outputSchemaobject or nullnoJSON Schema of the tool result, when the upstream declares one.
requiredCapabilitiesarray of stringyesCapabilityRef strings this tool needs (per-tool, or inherited from the catalog service default). The agent auto-grant engine unions these across an agent's armed tools. Empty ⇒ no declared capabilities.
statusone of "active", "retired", "disabled", "awaiting_admission"yes
toolGroupstring or nullno
updatedAtstring (date-time)yes
versionnumberyes

DiscoveredToolResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of DiscoveredToolResponseDtoyes

DiscoveredToolResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataDiscoveredToolResponseDtoyes

McpDiscoveryCatalogServerDto

PropertyTypeRequiredDescription
availabilityone of "attachable", "inactive"yes
contributedToolCountnumberyes
displayNamestringyes
idstringyes
readinessStatestring (11 values)yes
serviceKeystringyes

McpDiscoveryCatalogSnapshotDto

PropertyTypeRequiredDescription
availabilityone of "attachable", "inactive"yesAggregate readiness rolled up from contributing servers. attachable iff every contributing server is ready for the requested intent.
connectionUrlstringyesURL the worker connects to ({gateway}/mcp/catalog/{catalogId}).
contributingServersarray of McpDiscoveryCatalogServerDtoyes
descriptionstringyes
idstringyes
isDefaultbooleanyes
namestringyes
orgIdstringyes
readinessStatestring (11 values)yes
toolCountnumberyes
versionnumberyes

McpDiscoveryCatalogSnapshotDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of McpDiscoveryCatalogSnapshotDtoyes

McpDiscoveryInventoryResponseDto

PropertyTypeRequiredDescription
activeToolCountnumberyes
authTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"no
availabilityone of "attachable", "inactive"yes
catalogIsDefaultbooleanno
catalogVersionnumberno
connectionUrlstringyes
contributingServerCountnumberno
descriptionstringyes
displayNamestringyes
healthStatusstringno
idstringyes
isVirtualbooleanyes
kindone of "server", "catalog"yes
orgIdstringno
ownershipTypeone of "system", "org"no
readinessStatestring (11 values)yes
serverTypeone of "native_mcp", "openapi_bridge"no
serviceKeystringyes
specAuthTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"no
toolCountnumberyes
toolGroupsarray of stringyes

McpDiscoveryInventoryResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of McpDiscoveryInventoryResponseDtoyes

McpDiscoveryServerResponseDto

PropertyTypeRequiredDescription
activeToolCountnumberyes
authTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"yes
availabilityone of "attachable", "inactive"yes
connectionUrlobject or nullno
descriptionstringyes
displayNamestringyes
healthStatusstringyes
idstringyes
isActivebooleanyes
openapiSpecUrlobject or nullno
orgIdobject or nullno
ownershipTypeone of "system", "org"yes
readinessStatestring (11 values)yes
serverTypeone of "native_mcp", "openapi_bridge"yes
serviceKeystringyes
specAuthTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"yes
toolCountnumberyes
toolGroupsarray of stringyes

McpDiscoveryServerResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of McpDiscoveryServerResponseDtoyes

McpServerResponseDto

PropertyTypeRequiredDescription
apiBaseUrlstring or nullnoUpstream API base URL for openapi_bridge servers. Populated from spec.servers[0].url during tool discovery.
authTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"yes
connectionUrlstring or nullno
createdAtstring (date-time)yes
descriptionstringyes
displayNamestringyes
healthStatusstringyes
idstringyes
isActivebooleanyes
lastHealthCheckstring (date-time) or nullno
openapiSpecUrlstring or nullno
orgIdstring or nullno
ownershipTypeone of "system", "org"yes
serverTypeone of "native_mcp", "openapi_bridge"yes
serviceKeystringyes
sourceone of "official_registry", "manual"yesRegistration provenance — official_registry (curated) or manual (user-supplied).
specAuthTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"yes
toolCountnumberyes
updatedAtstring (date-time)yes
versionnumberyes

McpServerResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of McpServerResponseDtoyes

McpServerResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataMcpServerResponseDtoyes

OAuthInitiateRequestDto

PropertyTypeRequiredDescription
redirectUristring (uri)yesThe redirect URI the authorization server will redirect to after user consent. Must match the URI registered with the authorization server.

OAuthInitiateResponseDto

PropertyTypeRequiredDescription
consentUrlstringyesAuthorization URL to redirect the user to for consent. The caller must open this URL in a browser.
statestringyesCSRF-proof state parameter. The caller should store it and verify it matches the state returned by the callback.

OAuthInitiateResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataOAuthInitiateResponseDtoyes

ObjectDataEnvelope

PropertyTypeRequiredDescription
dataobjectyes

ProblemActionableBy

Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.

Type: one of "user", "org-admin", "platform", "none"

ProblemDetailsDto

RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codestringyesSCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ProblemFieldIssueDto

PropertyTypeRequiredDescription
codestringnoSCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem.
detailstringyesProse for logs and developers. A frontend localises from code + params instead.
paramsmap of string or number or booleannoSafe i18n interpolation values for this issue's code.
pointerstringyesRFC 6901 JSON Pointer into the request body. Root is "/".

ProblemRetry

What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.

Type: one of "transient", "after-change", "never"

RegisterServerDto

PropertyTypeRequiredDescription
authConfigobjectnoAuth configuration for invoking this server. STORED AS PLAINTEXT JSON today — this field said "encrypted at rest" and no encryption existed. The credential-broker binding on the server row is the source of truth for invocation credentials; this column is retired by the MCP-as-Connector phase. Do not add a field here that carries secret material.
authTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"yesAuthentication type.
connectionUrlstring (uri)noMCP server endpoint URL (for native_mcp).
descriptionstringyesDescription for LLM context.
displayNamestringyesDisplay name for the server.
openapiSpecRawstringnoInline OpenAPI spec JSON (for openapi_bridge).
openapiSpecUrlstring (uri)noOpenAPI spec URL (for openapi_bridge).
ownershipTypeone of "system", "org"yesServer ownership type.
serverTypeone of "native_mcp", "openapi_bridge"yesServer type.
serviceKeystringyesUnique service key within scope.
sourceone of "official_registry", "manual"noProvenance of the registration — official_registry (curated MCP registry catalogue) or manual (user-supplied endpoint). Defaults to manual, the harder-gated path.
specAuthConfigobjectnoAuth configuration used only to fetch a protected OpenAPI spec.
specAuthTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"noAuthentication type used only to fetch a protected OpenAPI spec.

ResolvedCapabilityRoleResponseDto

PropertyTypeRequiredDescription
concreteCapabilityRefstringyesThe concrete capability ref the role resolves to.
rolestringyesThe role that was resolved.

ResolvedCapabilityRoleResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataResolvedCapabilityRoleResponseDtoyes

TestConnectivityResponseDto

PropertyTypeRequiredDescription
connectivityErrorstring or nullno
latencyMsnumber or nullno
reachablebooleanyes
toolCountnumber or nullno

TestConnectivityResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataTestConnectivityResponseDtoyes

UpdateCatalogDto

PropertyTypeRequiredDescription
descriptionstringnoUpdated catalog description.
expectedVersionnumberyesExpected current version for optimistic concurrency.
isDefaultbooleannoWhether this is the default catalog.
namestringnoUpdated catalog name.

UpdateServerDto

PropertyTypeRequiredDescription
authConfigobjectnoUpdated auth configuration.
authTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"noUpdated auth type.
connectionUrlstring (uri)noUpdated MCP server endpoint URL.
descriptionstringnoUpdated description.
displayNamestringnoUpdated display name.
expectedVersionnumberyesExpected current version for optimistic concurrency.
isActivebooleannoEnable or disable the server.
openapiSpecRawstringnoUpdated inline OpenAPI spec JSON.
openapiSpecUrlstring (uri)noUpdated OpenAPI spec URL.
specAuthConfigobjectnoUpdated OpenAPI spec auth configuration.
specAuthTypeone of "none", "bearer", "api_key", "basic", "oauth2", "oauth2_auth_code"noUpdated auth type used only to fetch a protected OpenAPI spec.

UpsertCapabilityRoleBindingDto

PropertyTypeRequiredDescription
concreteCapabilityRefstringyesConcrete capability ref that fulfils the role, e.g. <provider-slug>:<tool-name>@1.
rolestringyesAbstract logical role name the org defines (e.g. mail.send). Opaque to the service.