Skip to main content
Tools are callable MCP capabilities. They usually represent backend operations such as fetch, search, create, or update. A tool import makes one MCP tool available to the workflow:
tool fetch_task from mcp.tasks.tool.fetch_task

Tool schemas

input {} and output {} define the tool contract expected by the workflow.
tool fetch_task from mcp.tasks.tool.fetch_task {
    input {
        task_id: number
    }

    output {
        title: string
        description: string
        status: string
    }
}

Runtime bindings

Use bindings {} when the workflow should supply trusted runtime values directly. This is the workflow-owned pattern.
dynamic {
    task: call tool.fetch_task {
        bindings {
            task_id: input.task_id
        }
    }
}
Use workflow-owned calls when the operation is required and should not depend on model discretion.

Agent tool access

Agents can only call tools listed in uses.
agent researcher {
    model: model.fast
    uses: [tool.fetch_task]
    instruction: "Fetch the task and summarize it."

    output {
        summary: string
    }
}
This is the model-owned pattern: the model decides whether and when to call available tools.

Choosing the pattern

  • Use workflow-owned calls (dynamic + call tool.*) for deterministic steps and strict ordering.
  • Use model-owned calls (uses: [tool.*]) when the model needs tool-choice judgment.
  • Combine both when needed: prefetch core data deterministically, then expose selected tools for reasoning.
uses can also include prompts and resources.

See also