What is available
Library skills are added from the dashboard. The REST API and the CLI manage
webhook tools, which is what
npx zavudev agents tools list shows.Connect a calendar
Both booking skills read one calendar per project. Open the agent’s Tools tab, then Library, then Connect one on either skill.Cal.com
You need two things from Cal.com:- an API key — Settings, then Developer, then API keys
- the event type id — the number in the event type’s own URL
Google Calendar
Connecting is an OAuth grant. Zavu asks for three scopes: read your busy times, write the events the agent books, and your account’s email address, which is what labels the connection in the dashboard so two calendars are tellable apart. Nothing else. Your working window is yours to set, because Google has no concept of one: the agent will only offer times inside the days and hours you configure.What the agent does with them
check_availability returns open slots and the zone they are in. book_meeting
takes one of those slots plus a name and an email.
The important part is what happens when a booking is not accepted. A Cal.com
event type that requires confirmation answers pending, which is not a
booking. The skill tells the agent exactly that, and the agent says the time is
held but not confirmed. An agent that reports pending as booked sends someone
to a meeting that may never exist, which is the worst outcome available on that
call.
The same rule covers the rest: no calendar connected, a slot in the past, a
calendar that cannot be reached. Each one comes back as something the agent can
say, never as a silent success.
Draft a custom tool from a description
For anything the library does not cover you still write a webhook, but you do not have to write the schema. In Tools, Custom tool, describe what it should do:Where to go next
Webhook tools
Build a tool against your own endpoint.
Voice agents
Where skills matter most, because the caller is waiting.
