MCP и tools

Tools дают агенту возможности за пределами обычного диалога. Они описываются в YAML под ключом tools.

Goalrail поддерживает четыре типа: MCP servers, Python functions, sub-agents и inherited tools.

MCP servers

MCP servers публикуют tools через стандартный protocol.

Local stdio

tools:
  my-server:
    type: mcp
    command: node
    args: [dist/server.js]
    env:
      API_KEY: ${MY_API_KEY}

Remote HTTP/SSE

tools:
  docs-api:
    type: mcp
    url: https://example.com/mcp
    headers:
      Authorization: "Bearer ${API_TOKEN}"

Поле tools внутри MCP config может ограничить список exposed tools. Если его не указать, агент получит все tools сервера.

Python function tools

Любой Python callable можно дать агенту как tool:

tools:
  summarize_file:
    type: function
    description: Summarize a local text file.
    callable: my_package.tools.summarize_file
    parameters:
      type: object
      properties:
        path:
          type: string
      required: [path]

Если parameters не указан, Goalrail может построить schema из type annotations и signature.

Sub-agent tools

Supervisor agent может делегировать работу sub-agent:

tools:
  reviewer:
    type: agent
    description: Review proposed code changes.
    prompt: |
      You are a careful code reviewer.
    executor:
      harness: claude-sdk
      model: claude-sonnet-4-6
    pass_history: true
    max_sessions: 2

Sub-agent может иметь собственные harness, model, tools и policies.

Tool inheritance

inherit передает tool от parent agent к sub-agent без дублирования config:

tools:
  researcher:
    type: agent
    prompt: Research and summarize.
    tools:
      word_count: inherit

spec: self клонирует весь parent spec для sub-agent, когда нужно сохранить одинаковые tools, prompt и config.