Skip to content

Tools, skills, subagents

Beyond the built-in Bash, Read, Write tools and the platform’s MCP servers, Vonzio supports three more extensibility surfaces.

A tool is a function the agent can call. Vonzio’s custom tools are TypeScript files matching the Claude Agent SDK tool interface.

tools/my-tool.ts
export default {
name: "my_tool",
description: "Does the thing.",
input_schema: { type: "object", properties: { arg: { type: "string" } } },
async execute({ arg }) {
return `Did the thing with ${arg}`;
},
};

Upload via Settings → Tools (dashboard) or POST /v1/tools. Once uploaded, add the tool id to a profile’s tool_ids and it’s available to agents on that profile.

Tools run inside the agent container, not on the platform. They have access to:

  • The workspace filesystem (/workspace)
  • Environment variables (including granted secrets)
  • The container’s network (outbound HTTPS by default)

This makes tools the right place for: shelling out to system commands, calling internal APIs, doing CPU work, parsing files.

A skill is a Markdown file injected into the agent’s filesystem at /skills/<name>.md. The agent can read them on demand via the Skill SDK call (or directly via Read).

Use skills for:

  • Long reference material (API docs, style guides, runbooks) that’s too big for the system prompt
  • Optional context — only loaded if the agent decides it needs it
  • Shared scaffolds across multiple profiles

Upload via Settings → Skills or POST /v1/skills. Add the skill id to a profile’s skill_ids for it to be mounted in containers spawned for that profile.

A subagent is a delegated child task. The parent agent calls Agent({subagent_type, prompt}) and the orchestrator spawns a fresh container with a different profile to execute the prompt, then returns its result.

Use subagents for:

  • Parallelism (kick off N concurrent investigations)
  • Context hygiene (delegate expensive exploration to a subagent so its tool calls don’t clutter the parent’s transcript)
  • Capability specialization (parent is a general agent, subagent is a SQL specialist with elevated DB access)

Configure via Settings → Subagents or POST /v1/subagents. Define a subagent with:

  • name, description — what it’s for (the parent agent reads this)
  • prompt template — placeholder for the parent’s task description
  • tools allowed — locks down capabilities
  • model — usually a smaller/faster model for cost

Add the subagent id to a profile’s agent_ids. The parent agent will see it as an available subagent_type in the Agent tool.

Use a tool when…Use an MCP server when…
The logic runs inside the agent containerThe logic runs server-side (auth, integrations, persistence)
You need filesystem / shell accessYou need to call third-party APIs with platform-stored credentials
The capability is per-task, throwawayThe capability is reusable across agents
You don’t need to share with other usersYou want to ship a reusable capability someone else can install

In practice: write tools for one-off project-specific helpers, ship MCP servers (or use Vonzio’s built-in ones) for cross-cutting integrations.