AI agents can schedule meetings through Vennio using either MCP (Model Context Protocol) tools or the REST API directly. Vennio exposes 13 MCP tools covering availability lookup, booking creation, proposal negotiation, and network queries — purpose-built for agentic scheduling workflows.
Two integration paths for AI agents:
POST /v1/bookings directly. Works with any language or AI framework.Vennio's MCP server exposes 13 tools your agent can call:
find_availability — bookable slots for a businessfind_mutual_availability — slots where multiple people are freecreate_booking — create a confirmed bookingget_booking — retrieve booking detailscancel_booking — cancel an existing bookingpropose_meeting — send time options to participantsrespond_to_proposal — accept, counter, or reject a proposalget_proposal — get proposal status and threadcheck_consent — verify calendar access permissionsget_network — view network overviewlist_connections — list network connectionsenrich_meeting — add context to a meeting from web datafind_mutual_connections — find shared network connectionsAdd Vennio to your MCP client config. Here's the Claude Desktop configuration:
{
"mcpServers": {
"vennio": {
"command": "npx",
"args": ["-y", "@vennio/mcp"],
"env": {
"VENNIO_API_KEY": "vennio_sk_live_YOUR_KEY"
}
}
}
}
Once connected, your agent can schedule meetings in natural language:
"Schedule a 30-minute call with customer@example.com tomorrow morning.
Check availability first, then create the booking and send confirmation."
For agents that access another user's calendar (mutual scheduling), the user must grant consent first. See AI Agent Integration (MCP) for the consent flow.
For agents built with custom frameworks, call the REST API directly:
import { createVennioClient } from '@vennio/sdk'
const client = createVennioClient({ apiKey: process.env.VENNIO_API_KEY })
// Step 1: Find available slots
const availability = await client.availability.getSlots({
query: {
business_id: 'YOUR_BUSINESS_ID',
duration_minutes: 30,
timezone: 'America/New_York',
},
})
const slots = availability.data.slots
if (slots.length === 0) {
return 'No availability found in the requested window.'
}
// Step 2: Book the first suitable slot
const booking = await client.bookings.create({
body: {
business_id: 'YOUR_BUSINESS_ID',
customer_email: 'customer@example.com',
customer_name: 'Jane Doe',
start_time: slots[0].start,
end_time: slots[0].end,
notes: 'Scheduled by AI assistant',
},
})
return `Booked: ${booking.data.booking.id} at ${slots[0].start}`
When an agent creates a booking, pass agent_name in the request body (via the MCP create_booking tool or directly in the API). This appears in booking records so humans can see which agent took action.
curl -X POST https://api.vennio.app/v1/bookings \
-H "Authorization: Bearer vennio_sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"business_id": "YOUR_BUSINESS_ID",
"customer_email": "customer@example.com",
"customer_name": "Jane Doe",
"start_time": "2026-04-01T09:00:00Z",
"end_time": "2026-04-01T09:30:00Z",
"agent_name": "My Scheduling Agent v1"
}'