Give your agent a calendar
The Pyas MCP server lets Claude, Cursor, VS Code or an agent you build read and change Google Calendar and Outlook events, find free time and add meeting links. Pyas runs no AI models of its own: your agent does the thinking, Pyas gives it the calendar.
Find 30 minutes with Sam Patel next week and send Avery an invite with a Meet link.
Done. Tuesday at 10:00 in New York, 15:00 in London. Avery's invite is sent, with a Google Meet link.
What should your agent do?
Find 30 minutes with Sam next week and invite him, with a Teams link.
Three kinds of agent, one set of tools
The MCP server and the AI tools package are built from the same tool definitions, so an agent gets the same calendar wherever it runs.
Assistants that manage calendars
Claude, Cursor, VS Code or any MCP host, on your users' connected calendars. With a live key, the server tells the agent that changes affect real people.
Coding agents that build on Pyas
The API reference, error codes and your request logs, as tools. Ask why a request failed and the agent reads its trace. Every starter app includes an AGENTS.md.
Agents you build yourself
The same tools for the Vercel AI SDK, LangChain, OpenAI or Anthropic, so the agent inside your product can schedule for your users.
One line in your agent's settings
Add the hosted server by its URL and sign in: it sets up your app and works in its sandbox, on sample calendars. Add its live address too to work on your users' real calendars, and you confirm each change it makes there.
# Claude Code: the sandbox, then live calendars when you need them
claude mcp add --transport http pyas-sandbox https://mcp.pyas.io/sandbox
claude mcp add --transport http pyas-live https://mcp.pyas.io
# Claude Desktop, Cursor, VS Code or any MCP host: add each by URL
https://mcp.pyas.io/sandbox
https://mcp.pyas.io
# The first time it connects, you sign in to Pyas. No key to paste.Your agent asks before it changes anything
- Marked tools
- Every tool tells the host whether it only reads, changes or deletes data, so the host can ask you first.
- Read-only mode
- Add --read-only and the server offers only tools that change nothing.
- Test keys
- A test key can only reach the sandbox. Nothing the agent does there touches a real calendar.
- Invitations are data
- Event titles and descriptions come from other people. The server marks them as data, so an agent doesn't take orders from an invitation.
- Money stays with you
- Plans, payment and live keys are never done through the server. The agent sends you a dashboard link.
- Your key, per request
- Over HTTP, each request carries its own key, so one server can serve several apps without mixing them up.
Every tool
plus resources pyas://api-reference and pyas://errors- list_accountsReadsConnected calendars, with their account ID, email and user ID
- account_statusReadsWhether a calendar can sync, and if not, why and the fix
- accounts_needing_attentionReadsEvery calendar in the app that needs fixing
- list_calendarsReadsOne account's calendars
- list_eventsReadsEvents between two times, for one account or every account of a person
- get_eventReadsOne event with all its details
- create_eventChanges dataAn event with attendees and a Meet, Teams or Zoom link
- update_eventChanges dataChanges an event, refused if someone else changed it first
- delete_eventDeletesDeletes an event and notifies its attendees
- respond_to_eventChanges dataAccepts, declines or tentatively accepts an invitation
- find_meeting_timesReadsTimes when everyone is free, within working hours
- get_free_busyReadsBusy times without event details
- explain_errorReadsWhat an error code means, its causes and the fix
- get_requestReadsWhat a request did, by its trace ID
- list_recent_requestsReadsThe latest requests, or only the failed ones
- api_referenceReadsSearches the API's operations
- sandboxReadsThe sandbox's people and IDs, with a test key
- setup_statusReadsWhat is done in your app's setup, what is left, and the next step
- update_appChanges dataAdds the address your app runs at, such as a preview URL
- get_test_keyChanges dataA test key, and where to keep it as a secret
- create_webhookChanges dataA sandbox webhook, its signing secret and a test delivery
- create_appChanges dataAnother app
- go_live_checklistReadsWhat is left before real calendars, with the dashboard link
- get_recipeReadsThe code for a task on Lovable, Bolt, Replit, v0, Next.js or Express