Define an application MCP tool catalog
Create an ordinary application model named mcp_tool. This is a descriptive catalog: each record tells MCP clients what a tool is and how to validate its arguments. Tool execution belongs to the application’s rule pipeline, so the catalog does not contain implementation pointers such as backing_kind, saved_query_id, function_id, or rule_id.
Define these fields on the model:
| Field | Type | Required | Purpose |
|---|---|---|---|
name |
varchar, unique | yes | Case-sensitive tool name exposed by tools/list. |
description |
text | yes | Guidance shown to the client model. |
input_schema |
json | yes | JSON Schema used to validate the tools/call arguments object. |
output_schema |
json | no | Optional JSON Schema for structured tool output. |
streaming |
boolean | yes | Whether the tool’s call uses the application’s streaming flow. |
enabled |
boolean | yes | Only records with this value set to true are served. |
Add one record per tool. Keep the model in the same tenant, workspace, and application as the MCP endpoint. In input_schema, use an object schema and declare required properties explicitly. For example:
{ "type": "object", "properties": { "query": {"type": "string"}, "limit": {"type": "integer", "minimum": 1} }, "required": ["query"], "additionalProperties": false}Bind the catalog through the application’s mcpSettings value. Each entry in tool_field_mappings is the UUID of the corresponding schema field, not the field name:
{ "mcpSettings": { "endpoint_service_id": "<inbound-service-uuid>", "tool_model_id": "<mcp-tool-model-uuid>", "tool_field_mappings": { "name": "<name-field-uuid>", "description": "<description-field-uuid>", "input_schema": "<input-schema-field-uuid>", "output_schema": "<output-schema-field-uuid>", "streaming": "<streaming-field-uuid>", "enabled": "<enabled-field-uuid>" } }}The binding may also include resource_model_id with resource_field_mappings, and prompt_model_id with prompt_field_mappings. Those keys are reserved for later catalog surfaces: v1 reads and serves only the tool catalog.
