Tool Providers
Manage backend providers, credentials, and base URLs for built-in Tool Groups (e.g., web_search / web_fetch).
Tool Provider configuration is divided into two layers:
scope=platform: Platform-wide global default (suitable for self-hosting/open-source; new organizations can use directly without configuration).scope=org: Organization override (tenant-specific customization).
List Tool Providers
GET /v1/tool-providers?scope=platformscope:
platform(default): Requiresplatform_admin.org: Requiresdata.secretspermission within the organization (used to manage sensitive credentials).
Response 200 OK
{
"groups": [
{
"group_name": "web_search",
"providers": [
{
"group_name": "web_search",
"provider_name": "web_search.tavily",
"is_active": true,
"key_prefix": "tvly-****1234",
"requires_api_key": true,
"requires_base_url": false,
"configured": true
},
{
"group_name": "web_search",
"provider_name": "web_search.exa",
"is_active": false,
"requires_api_key": false,
"requires_base_url": false,
"configured": true
},
{
"group_name": "web_search",
"provider_name": "web_search.searxng",
"is_active": false,
"base_url": null,
"requires_api_key": false,
"requires_base_url": true,
"configured": false
}
]
}
]
}Field Descriptions:
is_active: Whether it is active within the current scope (at most one active per scope + group).configured: Whether the required fields for the provider (API Key / Base URL) are satisfied.key_prefix: Used for display only; does not return the plaintext key.
Activate Provider
PUT /v1/tool-providers/{group}/{provider}/activate?scope=platformBehavior:
- Atomically switches the active provider within the same
scope + group. - Returns
204 No Contenton success.
Deactivate Provider
PUT /v1/tool-providers/{group}/{provider}/deactivate?scope=platformReturns 204 No Content on success.
Write/Update Credentials and Base URL
PUT /v1/tool-providers/{group}/{provider}/credential?scope=platformRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
api_key | string | No | Overwrites existing key if provided (stored encrypted) |
base_url | string | No | Overwrites existing base_url if provided (trailing / automatically removed) |
Notes:
web_search.searxngmust providebase_url.web_search.tavily/web_fetch.firecrawlmust provideapi_key;web_fetch.jinamay run without one.web_search.exauses Exa hosted MCP and does not require credentials.- If both
api_keyandbase_urlare missing, the endpoint returns204and makes no changes.
Returns 204 No Content on success.
Clear Credentials
DELETE /v1/tool-providers/{group}/{provider}/credential?scope=platformClearing Behavior:
- Deletes the corresponding
secret(within the same scope). - Unbinds
tool_provider_configs.secret_idandkey_prefix.
Returns 204 No Content on success.
Runtime Resolution Priority (Worker)
web_search / web_fetch only expose the Tool Group name to the LLM. The Worker resolves to the final Provider based on the following priority:
- org scope active provider
- platform scope active provider
- legacy group executor (Config Resolver's
web_search.*/web_fetch.*) - otherwise returns
tool.not_configured