Skip to main content

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​

FieldTypeDescription
descriptionstringRequired. Tells the model what the tool does.
idstringRequired. The tool's name as the model sees it.
input_schemaanyRequired. JSON Schema for the tool's arguments.
kindstringRequired. connector.action (the only kind wired so far), sql.query, vector.search, mcp.tool.
requires_approvalbooleanWhether a call needs a person's approval first. Default: false.
withanyKind-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