Skip to content
Agents

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.

Readsfind_meeting_timesAvery, Sam · 30 min · working hours
First free slotTue 15:00 London, 10:00 New York
Changes datacreate_event

Done. Tuesday at 10:00 in New York, 15:00 in London. Avery's invite is sent, with a Google Meet link.

Test key: the sandbox's Avery Brooks and Sam Patel

What should your agent do?

Find 30 minutes with Sam next week and invite him, with a Teams link.

CallsReadsfind_meeting_timesChanges datacreate_event

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.

@pyas/mcp

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.

@pyas/mcp and the pyas CLI

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.

@pyas/ai-tools

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.

Set up

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.
Safe by default

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_accountsReads
    Connected calendars, with their account ID, email and user ID
  • account_statusReads
    Whether a calendar can sync, and if not, why and the fix
  • accounts_needing_attentionReads
    Every calendar in the app that needs fixing
  • list_calendarsReads
    One account's calendars
  • list_eventsReads
    Events between two times, for one account or every account of a person
  • get_eventReads
    One event with all its details
  • create_eventChanges data
    An event with attendees and a Meet, Teams or Zoom link
  • update_eventChanges data
    Changes an event, refused if someone else changed it first
  • delete_eventDeletes
    Deletes an event and notifies its attendees
  • respond_to_eventChanges data
    Accepts, declines or tentatively accepts an invitation
  • find_meeting_timesReads
    Times when everyone is free, within working hours
  • get_free_busyReads
    Busy times without event details
  • explain_errorReads
    What an error code means, its causes and the fix
  • get_requestReads
    What a request did, by its trace ID
  • list_recent_requestsReads
    The latest requests, or only the failed ones
  • api_referenceReads
    Searches the API's operations
  • sandboxReads
    The sandbox's people and IDs, with a test key
  • setup_statusReads
    What is done in your app's setup, what is left, and the next step
  • update_appChanges data
    Adds the address your app runs at, such as a preview URL
  • get_test_keyChanges data
    A test key, and where to keep it as a secret
  • create_webhookChanges data
    A sandbox webhook, its signing secret and a test delivery
  • create_appChanges data
    Another app
  • go_live_checklistReads
    What is left before real calendars, with the dashboard link
  • get_recipeReads
    The code for a task on Lovable, Bolt, Replit, v0, Next.js or Express