Sign in

Tools API — Configurator

API reference for Configurator tool lifecycle endpoints

configurator
apiconfiguratortools

Updated 2026-11-03

Verified 2026-11-03

The Tools API manages the lifecycle of API, database, and custom tools: creation, versioned configuration, and deployment to MCP. For architecture and configuration, see Configurator.

Paths are relative to the Configurator service root (port 8100 locally). Authentication, required headers, errors, and the pagination envelope follow the API conventions; see Pagination for page and page_size.

Tool Types

Every route except bulk-fetch and mcp-list requires a type: in the JSON body for POST and PUT, and as a query parameter otherwise. A missing type returns 400.

TypeDescription
apiHTTP call to an external service
dbQuery against a connected database or uploaded files
customConfigured integration with a JSON config and schema

Endpoints

MethodPathPermissionDescription
GET/api/v1/tools/?type=...HasCanViewToolPermissionList tools of one type
POST/api/v1/tools/HasCanCreateToolPermissionCreate a tool (201)
GET/api/v1/tools/{id}/?type=...HasCanViewToolPermissionGet a tool with its configurations
PUT/api/v1/tools/{id}/HasCanUpdateToolPermissionUpdate a tool (creates or edits a draft)
DELETE/api/v1/tools/{id}/?type=...HasCanDeleteToolPermissionDelete a tool (204)
POST/api/v1/tools/{id}/deploy/HasCanUpdateToolPermissionDeploy the latest draft
GET/api/v1/tools/bulk-fetch/HasCanViewToolPermissionFetch exact tool versions across types
GET/api/v1/tools/mcp-list/MCP service or superadminResolve deployed tools by MCP tool name

There is no PATCH, versions, or test route.


Create or Update a Tool

POST /api/v1/tools/ and PUT /api/v1/tools/{id}/

FieldTypeRequiredDescription
typestringyesapi, db, or custom
namestringyesUp to 32 characters, unique in the organization, no . or -. Read-only on update.
descriptionstringnoRead-only on update
functionsstring[]noCategories such as Information Retrieval or External Integrations & API Connectors
configurationobjectyesType-specific fields below

Fields on every configuration: requires_approval (default false) and read-only version, status, and mcp_tool_name.

API tool configuration

FieldDescription
urlEndpoint URL
methodget, post, patch, or delete
headersRequest headers
input_schemaJSON Schema for the tool arguments
authAuthentication settings

DB tool configuration

FieldDescription
enginepostgresql, mysql, sqlite, mssql, oracle, snowflake, databricks, teradata, mongodb, redis, or files
host, port, db_name, authConnection settings for database engines
parameters, queryQuery parameters and query text
file_idsSource files for engine: files

For engine: files, Configurator processes the files asynchronously and reports processing_status (pending, processing, ready, failed), processing_error, processed_at, and the generated data_dictionary. A draft cannot be updated while processing runs, and cannot be deployed until it is ready.

Custom tool configuration

FieldDescription
configIntegration settings
config_schemaSchema metadata, including which config fields are secret

Secret values are masked in responses unless the caller is a superuser or may manage custom tools.

bash
curl -s -X POST 'http://localhost:8100/api/v1/tools/' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'X-Org-Id: YOUR_ORG_ID' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "api",
    "name": "weather_lookup",
    "description": "Current weather for a city",
    "configuration": {
      "url": "https://api.weather.example.com/v1/current",
      "method": "get",
      "input_schema": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
      }
    }
  }'

The response is the tool (id, org_id, name, description, functions, type, timestamps) with a configurations list, newest version first.

Versioning

Versions are major.minor strings and start at 1.0.

RequestStateResult
PUTA draft existsThe draft is updated in place
PUTNo draftNext major version as a new draft
POST with the name of an existing toolA draft existsThe draft is updated in place
POST with the name of an existing toolLatest is deployedNext minor version as a new draft
POST with the name of a deleted toolAnyThe tool is restored with the next minor version

New and updated configurations emit <prefix>.configuration.added or <prefix>.configuration.updated on the configurator Kafka topic, where the prefix is api_tool, db_tool, or custom_tool.

MCP tool name

Each configuration gets an mcp_tool_name of the form {org}-{type}-{name}-{major}_{minor}, with the organization name and tool name lowercased and non-alphanumeric characters replaced by _. For example, acme_corp-api-weather_lookup-1_0. MCP uses this name to list and call the tool.


List Tools

GET /api/v1/tools/?type=api

ParameterDescription
typeRequired tool type
nameName filter
functionsOne or more function categories
statusdraft or deployed
versionConfiguration version
mcp_tool_nameExact MCP tool name
page, page_sizePagination

Get a Tool

GET /api/v1/tools/{id}/?type=api accepts status and version to filter the returned configurations.

Deploy

POST /api/v1/tools/{id}/deploy/ with body {"type": "api"}

Deploys the latest draft. Returns 400 with No draft configuration exists to deploy., The configuration is already deployed., or, for file-based DB tools, Cannot deploy: file processing not complete.. Consumers receive <prefix>.configuration.deployed, and MCP syncs the tool into its cache.

Delete

DELETE /api/v1/tools/{id}/?type=api soft-deletes the tool and returns 204. Consumers receive <prefix>.deleted.

Bulk Fetch

GET /api/v1/tools/bulk-fetch/?tool=api:<uuid>:1.0&tool=custom:<uuid>:2.1

Each tool value is a type:uuid:version triplet, and types can be mixed. The response is a list in request order with the exact requested version, whether draft or deployed. Items whose tool or version does not exist are omitted.

MCP List

GET /api/v1/tools/mcp-list/?query_json=[{"type":"api","mcp_tool_names":["..."]}]

Used by the MCP service to resolve deployed tools by name. query_json accepts up to three {type, mcp_tool_names} items. Requires X-Org-Id. With include_diagnostics=true, the response is {tools, projection, errors} instead of a list. Response headers X-Configurator-Projection-State, X-Configurator-Projection-Deployment-State, X-Configurator-Projection-Refresh-Required, X-Configurator-Projection-Resolved-Count, and X-Configurator-Projection-Error-Count summarize the resolution.