Tools
File: config/agents/tools/*.yaml · Schema: schemas/tool.schema.json
A tool exposed to a model, bound to a connector action. Declared and validated; not yet wired into the model (see Project status).
Fields
| Field | Type | Description |
|---|---|---|
description | string | Required. Tells the model what the tool does. |
id | string | Required. The tool's name as the model sees it. |
input_schema | any | Required. JSON Schema for the tool's arguments. |
kind | string | Required. connector.action (the only kind wired so far), sql.query, vector.search, mcp.tool. |
requires_approval | boolean | Whether a call needs a person's approval first. Default: false. |
with | any | Kind-specific parameters (connector.action: connector and action, which must be declared). |
Unknown fields are refused at boot.
In this repository
config/agents/tools/lookup_vendor.yaml
id: lookup_vendor
description: Find a vendor by name or tax id.
kind: connector.action # or: sql.query, vector.search, mcp.tool
with: { connector: accounting, action: get_vendor }
input_schema:
type: object
properties: { query: { type: string } }
required: [query]
requires_approval: false
Editor support
The schemas are generated from the Rust definition structs (task schema_export), and a test
fails when they drift. Point a YAML language server at the schema to get completion and
validation while editing:
# yaml-language-server: $schema=../../../schemas/tool.schema.json