docs/build/agents.md

Agents, skills and teams

An agent

# agents/northwind-lead.yaml
slug: northwind-lead
name: Northwind Lead
systemPromptFile: ./northwind-lead.system-prompt.md
skills: [account-brief]
playbooks: [pricing-policy]
connectorSources: [hubspot, gmail]
objectTypes: [deal]
budget: { dailyCents: 300 }
harness:
  runsOn: in-process
  modelProvider: anthropic
  excludeTools: [generate_image]
FieldWhat it does
parentThe agent this one reports to (one level). Replaces role
teamThe team it belongs to
model / harness.modelModel id; else defaults.model
harness.modelProvideranthropic, openai or bedrock; else VOCION_LLM_PROVIDER
harness.runsOnin-process, agentcore-container, aws-managed-harness or external-worker. Default: agentcore-container when the provider is bedrock, else in-process
harness.grantTools / excludeToolsAdd or remove tools from the built-in set (grantToolsMode: replace replaces it)
harness.maxSteps, maxTokens, turnDeadlineMinutesTurn limits (deadline 1–30 minutes)
harness.promptCachePrompt caching, on by default
searchConfigrecencyDecay, sourceWeights, maxResults, minRelevance for knowledge search
subagents{name, description, systemPrompt|systemPromptFile, tools?, model?}
requiresConnectors the agent needs, and what it degrades to without them
handlesTopics the router should send it, e.g. [pricing, renewals]
initiativelow, normal, high
learningStepsLearning steps mounted for it

There is no top-level tools: key; shape tools with grantTools and excludeTools.

Built-in tools

Every agent gets web_search, fetch_url, fetch_image, crawl_site, generate_image and run_code, plus tools for the sources in its scope. Rarely used tools load on demand. Providers are set by environment: VOCION_WEBSEARCH_PROVIDER (tavily default, or brave), VOCION_IMAGE_PROVIDER (openai), VOCION_CODE_PROVIDER (builtin or e2b). A workspace's own tool key is used before the server's.

Skills and playbooks

<!-- skills/account-brief/SKILL.md -->
---
slug: account-brief
name: Account brief
description: Summarize an account's open deals, risks and next steps.
playbooks: [pricing-policy]
---
1. Look up the account and its open deals.
2. …

A playbook (playbooks/<slug>/SKILL.md) has the same shape; attach it to an agent or skill by slug. Skill slugs referenced by agents are validated more strictly than other slugs; use lowercase with hyphens.

Teams

# teams/revenue.yaml
name: Revenue
lead: northwind-lead
accountableUser: sales-lead@northwind.example
goal: Every open deal has a dated next step.
measures:
  - key: rooms_opened
    label: Rooms opened
    dimension: outcome
    target: 2
    unit: rooms
    window: 30d
    source: { kind: observed, rows: data-rooms }   # what Vocion counts; required

A measure's source says where its reading comes from: rows Vocion keeps (kind: observed) or a connected system such as HubSpot or web analytics. The team report is at /dashboard/team-report.

kpis: is a deprecated alias for measures:.