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
scope:
platform(default): Requiresplatform_admin.org: Requiresdata.secretspermission within the organization (used to manage sensitive credentials).
Response 200 OK
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
Behavior:
- Atomically switches the active provider within the same
scope + group. - Returns
204 No Contenton success.
Deactivate Provider
Returns 204 No Content on success.
Write/Update Credentials and Base URL
Request 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.jina/web_fetch.firecrawlmust provideapi_key.- If both
api_keyandbase_urlare missing, the endpoint returns204and makes no changes.
Returns 204 No Content on success.
Clear Credentials
Clearing 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