getting started
Your first agent
Configure an agent, point a phone number at it, and answer a real call.
This page walks you from a fresh install to a working voice agent that answers a phone call. It takes about ten minutes.
Define the agent
Agents are declared in YAML. Create agents/scheduler.yaml:
id: scheduler
name: Appointment scheduler
voice: openai.alloy
language: en-US
greeting: "Hi, this is Tone. How can I help?"
tools:
- check_availability
- book_appointmentRegister your tools
Tools are TypeScript functions. Create tools/availability.ts:
import { defineTool } from 'tone/tools';
import { z } from 'zod';
export const checkAvailability = defineTool({
name: 'check_availability',
description: 'Check available slots for a given day.',
schema: z.object({ date: z.string() }),
handler: async ({ date }) => {
return await calendar.findSlots(date);
},
});Connect a number
In the dashboard at localhost:3000, paste your Twilio credentials and pick
a number to route to the scheduler agent. Or use the CLI:
tone numbers connect +14155551234 --agent schedulerCall it
Call the number from your phone. The agent should answer with the greeting you configured, then walk through booking an appointment.
If it doesn't, check the call logs in the dashboard — every turn, every tool call, and every model response is captured for replay.