Skip to main content
PUT
Error
Required Permissions How permissions work

Authorizations

Authorization
string
header
required

Management API authentication for /api/* endpoints. Use the Authorization header with Bearer <token>, where <token> is one of:

  • a Bifrost management API key,
  • a dashboard session token issued by POST /api/session/login,
  • base64 of <admin-username>:<admin-password> (legacy equivalent of BasicAuth).

Virtual keys (sk-bf-*) and the x-api-key header are not accepted on management APIs - the sole exception is GET /api/governance/virtual-keys/quota, which is virtual-key-only.

Authentication alone is not sufficient in Bifrost Enterprise: each operation page shows a Required Permissions table (Resource:Operation, for example Dashboard:View) above its Authorizations section, and the caller's RBAC role or management API key scopes must include what it lists, otherwise the request is rejected with 403 Forbidden.

A local admin — authenticated with the admin password, or any caller on a deployment with dashboard auth disabled — bypasses these checks and can call every management endpoint. See Required permissions for how permissions are derived and which endpoints are exempt.

Path Parameters

id
string
required

MCP client ID

Body

application/json

MCP client configuration for updating an existing client (includes tool_pricing). All fields are optional; omitting a field retains its existing value (PATCH semantics). Immutable fields (connection_type, auth_type, connection_string, stdio_config, oauth_config_id) are not accepted here; they cannot be changed after creation.

name
string

Display name for the MCP client

is_code_mode_client
boolean

Whether this client is available in code mode

is_ping_available
boolean

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.

needs_session_stickiness
boolean

HTTP-only. Only meaningful for auth_type "oauth", "headers", or "none" — 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, a fresh connection is dialed per tool call. Cannot be set to false for connection_type "sse" or "stdio" — both are always sticky.

tool_sync_interval
integer

Per-client tool-list sync interval in minutes. 0 falls back to the global mcp_tool_sync_interval client config.

Required range: x >= 0
tool_execution_timeout
integer

Per-client tool execution timeout in seconds. 0 falls back to the global mcp_tool_execution_timeout client config.

Required range: x >= 0
headers
object

Custom headers to include in requests. Only used when auth_type is "headers". Supports env./vault. references. Values echoed back redacted from a GET response are recognized and preserve the stored value, so a fetch-modify-put round trip is safe.

allowed_extra_headers
string[]

Allowlist of request-level headers callers may forward to this MCP server at execution time. ["*"] => any header may be forwarded [] => no extra headers are forwarded ["header1", "header2"] => only the specified headers

oauth_config
object

Rotates the stored OAuth configuration in place. Only accepted for auth_type "oauth" or "per_user_oauth" (400 otherwise). Any provided field replaces the stored value; no new config row is created and no re-discovery or re-registration runs. Unset fields preserve stored values: client_id/client_secret follow the SecretVar masked-placeholder convention (send back the redacted placeholder from a GET response to keep the stored secret), while empty strings / empty arrays on the remaining fields mean "not provided".

When any field actually changes, every token bound to the OAuth config is flipped to needs_reauth regardless of auth mode, shared and per-user sessions alike must re-authenticate. A round trip that resolves to the stored values is a no-op and does not cascade. Rotation cannot run while the client is (or is being) disabled (400); send those as two separate requests.

tools_to_execute
string[]

Include-only list for tools. ["*"] => all tools are included [] => no tools are included ["tool1", "tool2"] => include only the specified tools

tools_to_auto_execute
string[]

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

tool_pricing
object

Per-tool cost in USD for execution. Key is the tool name, value is the cost per execution. Example: {"read_file": 0.001, "write_file": 0.002} Note: Only available when updating an existing client after tools have been fetched.

allow_on_all_virtual_keys
boolean
default:false

When true, this MCP client's tools are accessible to all virtual keys without requiring explicit per-key assignment. All tools are allowed by default. If a virtual key has an explicit MCP config for this client, that config takes precedence and overrides this behaviour.

per_user_header_keys
string[]

For per_user_headers clients only. Cannot be set to an empty list. Updating this list flips every existing active per-user credential row to needs_update; callers will be sent back to the submission form on their next tool call to satisfy the new schema. The retained admin discovery credential is flipped the same way; repair it by calling POST /api/mcp/client/{id}/verify-headers with fresh sample values.

token_exchange
object

For token_exchange clients only. Omitted preserves the stored configuration. A redacted client_id / client_secret round-tripped from a prior GET is resolved back to the stored value rather than overwriting it; any other change re-scopes future exchanges and invalidates cached exchanged tokens for this client.

disabled
boolean
default:false

When true, the client's connection, health monitor, and tool syncer are shut down. The client entry is preserved so it can be re-enabled later by sending disabled: false. Disabled clients do not expose tools to inference requests.

tls_config
object

TLS configuration for HTTP and SSE connections. Not applicable to stdio or inprocess connection types.

vk_configs
object[]

When provided, replaces all virtual key assignments for this MCP client. Each entry specifies a virtual key and the tools it is allowed to call. To remove all VK access, provide an empty array []. Omit this field to leave existing VK assignments unchanged.

Response

MCP client updated successfully

Generic success response

status
string
Example:

"success"

message
string
Example:

"Operation completed successfully"