A valid request URL is required to generate request examples{
"status": "success",
"message": "Operation completed successfully"
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"model_requested": "<string>",
"request_type": "<string>"
}
}Add MCP client
Adds a new MCP client with the specified configuration. Note: tool_pricing is not available when creating a new client; tool pricing can only be set once the tool list is known. For shared-connection clients tools are fetched after client creation; for per-user auth types they are discovered during the create/verify flow itself.
A valid request URL is required to generate request examples{
"status": "success",
"message": "Operation completed successfully"
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"model_requested": "<string>",
"request_type": "<string>"
}
}Authorizations
Management API authentication for /api/* endpoints. Use the Authorization header with Bearer <API key>.
Virtual keys, dashboard/user/session tokens, and x-api-key headers are not supported on management APIs.
Body
- Option 1
- Option 2
- Option 3
MCP client configuration for creating a new client (tool_pricing not available at creation). The schema varies based on connection_type:
- HTTP/SSE: connection_string is required
- STDIO: stdio_config is required
- InProcess: server instance must be provided programmatically (Go package only)
Display name for the MCP client
Connection type for MCP client
http HTTP URL (required for HTTP connection type)
Unique identifier for the MCP client (optional, auto-generated if not provided)
Whether the MCP server supports ping for health checks. If true, uses lightweight ping method for health checks. If false, uses listTools method for health checks instead.
HTTP-only. Only meaningful for auth_type "oauth", "headers", or "none" (a server-level connection) — per-user auth types are always per-call regardless of this field. When true, Bifrost holds one persistent upstream connection, reused for every tool call. When false or omitted (the default), a fresh connection is dialed per tool call. Cannot be set to false for connection_type "sse" or "stdio" — both are always sticky.
Per-client tool-list sync interval in minutes. 0 (or omitted) falls back to the global mcp_tool_sync_interval client config; a negative value disables periodic tool sync for this client.
Per-client tool execution timeout in seconds. 0 (or omitted) falls back to the global mcp_tool_execution_timeout client config.
x >= 0Allowlist of request-level headers callers may forward to this MCP server at execution time. ["*"] => any header may be forwarded [] or omitted => no extra headers are forwarded ["header1", "header2"] => only the specified headers
Authentication type for the MCP connection
none, headers, oauth, per_user_oauth, per_user_headers, token_exchange OAuth config ID for OAuth authentication. Set after OAuth flow is completed. References the oauth_configs table. Only relevant when auth_type is "oauth".
Custom headers to include in requests. Only used when auth_type is "headers".
Show child attributes
Show child attributes
OAuth configuration for initiating OAuth flow. Required when creating a client with auth_type "oauth" or "per_user_oauth". This will trigger the OAuth flow and return an authorization URL (see the pending_oauth response variant).
Show child attributes
Show child attributes
Include-only list for tools. ["*"] => all tools are included [] => no tools are included ["tool1", "tool2"] => include only the specified tools
List of tools that can be auto-executed without user approval. Must be a subset of tools_to_execute. ["*"] => all executable tools can be auto-executed [] => no tools are auto-executed ["tool1", "tool2"] => only specified tools can be auto-executed
When true, this MCP client's tools are available to all virtual keys by default, without requiring an explicit virtual key assignment. An explicit virtual key config always overrides this setting for that key.
TLS configuration for HTTP and SSE connections. Not applicable to stdio or inprocess connection types.
Show child attributes
Show child attributes
Required when auth_type is per_user_headers. List of header names each
end-user must supply the first time they hit this MCP server. Values are
submitted per user via the inline-401 flow — never persisted on the MCP
client config.
Required when creating a client with auth_type "token_exchange". Verification runs automatically as the signed-in admin (see POST /api/mcp/client/{id}/verify-exchange) — there is no sample-token field on this request.
Show child attributes
Show child attributes
Used only at create time when auth_type is per_user_headers. A sample
set of header values the admin supplies so Bifrost can run a one-time
upstream verify and discover the tool list. Not persisted by the create
call; each end-user submits their own values at runtime. To have Bifrost
retain an admin discovery credential for periodic tool-list refresh,
use POST /api/mcp/client/{id}/verify-headers, which stores the sample
values as that credential.
Show child attributes
Show child attributes
Response
MCP client added successfully. For auth_type "oauth" and "per_user_oauth" the client is not created yet — the response is the pending_oauth variant carrying authorize_url plus status_url / complete_url / next_steps hints; the client is created when the flow is completed via complete_url.
Was this page helpful?

