Tools, skills, subagents
Beyond the built-in Bash, Read, Write tools and the platform’s MCP servers, Vonzio supports three more extensibility surfaces.
Tools (custom)
Section titled “Tools (custom)”A tool is a function the agent can call. Vonzio’s custom tools are TypeScript files matching the Claude Agent SDK tool interface.
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.
Skills
Section titled “Skills”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.
Subagents
Section titled “Subagents”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)prompttemplate — placeholder for the parent’s task descriptiontoolsallowed — locks down capabilitiesmodel— 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.
Tools vs MCP servers — which to use
Section titled “Tools vs MCP servers — which to use”| Use a tool when… | Use an MCP server when… |
|---|---|
| The logic runs inside the agent container | The logic runs server-side (auth, integrations, persistence) |
| You need filesystem / shell access | You need to call third-party APIs with platform-stored credentials |
| The capability is per-task, throwaway | The capability is reusable across agents |
| You don’t need to share with other users | You 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.