Vennio exposes 24 scheduling tools over MCP (Model Context Protocol). Connect once, and any MCP-compatible agent — Claude Desktop, Cursor, or your own Node.js agent — can check real availability and confirm bookings without you writing a custom integration layer.
vennio_sk_live_*).Add Vennio to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"vennio": {
"type": "http",
"url": "https://api.vennio.app/mcp",
"headers": {
"Authorization": "Bearer vennio_sk_live_your_key_here"
}
}
}
}
Restart Claude Desktop. The vennio tools will appear in the MCP tools panel. Ask Claude: "What's my schedule this week?" — it will call get_me and list_bookings automatically.
Add the same block under mcpServers in your Cursor MCP config file (.cursor/mcp.json in your project, or the global config at ~/.cursor/mcp.json).
npm install @modelcontextprotocol/sdk
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
const client = new Client({ name: 'my-agent', version: '1.0' })
await client.connect(
new StreamableHTTPClientTransport(
new URL('https://api.vennio.app/mcp'),
{ requestInit: { headers: { Authorization: `Bearer ${process.env.VENNIO_API_KEY}` } } }
)
)
const { tools } = await client.listTools()
console.log(tools.map(t => t.name))
// → ['find_availability', 'find_mutual_availability', 'create_booking', ...]
Here's what happens when a user tells your agent: "Schedule a 30-minute intro call with Alice this week."
Step 1 — Find an open slot
The agent calls find_availability with the business and a date range:
const availability = await client.callTool({
name: 'find_availability',
arguments: {
business_id: 'YOUR_BUSINESS_UUID',
duration_minutes: 30,
from: '2026-04-21T00:00:00Z',
to: '2026-04-25T23:59:59Z',
timezone: 'Europe/London',
},
})
Response:
{
"business_id": "YOUR_BUSINESS_UUID",
"duration_minutes": 30,
"timezone": "Europe/London",
"total_slots": 8,
"slots": [
{ "start": "2026-04-21T09:00:00+01:00", "end": "2026-04-21T09:30:00+01:00" },
{ "start": "2026-04-21T11:00:00+01:00", "end": "2026-04-21T11:30:00+01:00" },
{ "start": "2026-04-22T14:00:00+01:00", "end": "2026-04-22T14:30:00+01:00" }
]
}
The agent picks a slot — or asks the user to pick one — and proceeds.
Step 2 — Confirm the booking
const booking = await client.callTool({
name: 'create_booking',
arguments: {
business_id: 'YOUR_BUSINESS_UUID',
customer_email: 'alice@example.com',
customer_name: 'Alice Chen',
start_time: '2026-04-21T09:00:00Z',
end_time: '2026-04-21T09:30:00Z',
notes: '30-minute intro call',
agent_name: 'Scheduling Agent',
},
})
Response:
{
"booking_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "confirmed",
"customer_name": "Alice Chen",
"customer_email": "alice@example.com",
"start_time": "2026-04-21T09:00:00Z",
"end_time": "2026-04-21T09:30:00Z",
"created_at": "2026-04-19T14:00:00Z"
}
Vennio creates the calendar event, sends confirmation emails to both parties, and fires any registered webhooks. The agent reports back: "Done — intro call with Alice confirmed for Monday 21 April at 9:00 AM."
The agent_name field is optional but recommended — it appears in the booking audit trail so you can see which agent made each booking.
| Tool | What it does |
|---|---|
find_availability |
Open slots for a business, accounting for existing bookings and calendar events |
find_mutual_availability |
Slots where 2–5 people are all free (requires consent grants) |
create_booking |
Confirm a booking — creates calendar event, sends emails, fires webhooks |
propose_meeting |
Send a meeting proposal with multiple time options; participants accept, counter, or reject |
get_me |
Get the authenticated user's identity and connected calendar status |
list_bookings |
List past and upcoming bookings with filtering |
cancel_booking |
Cancel a confirmed booking |
reschedule_booking |
Move a booking to a new time |
See the full MCP integration reference for all 24 tools.
examples/calendar-agent/ in the Vennio repo