AddCal

Manage the calendars other people subscribe to — not your own schedule.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Search: Search across calendars, collections, events and RSVP responses in one call, returning the ids each other tool needs. Use this first whenever the user refers to something by name rather than b
  • List Calendars: List the calendars belonging to the authenticated user's team, with a count of upcoming events on each. Use this first to find the calendar_id needed by the event tools.
  • Create Calendar: Create a new calendar for the authenticated user's team.

What data it sees

Do you need an account

No: the server works without sign-in

Manage the calendars other people subscribe to — not your own schedule.

Most calendar MCP servers connect an assistant to your personal Google or Outlook calendar. AddCal is the other side of that: publishing. Point your assistant at the public calendars, event listings and subscribe links your audience actually follows.

19 tools covering:

  • Create and manage public calendars and calendar collections
  • Create, update, duplicate and delete events, including recurring series — with preview-recurring-dates to check a series before committing it
  • Record RSVPs and send event invites
  • List subscribers, pull analytics and team usage
  • Search across calendars, events and people

Built for events programmes, class and course schedules, sports fixtures, community and venue calendars, conference agendas — anywhere the calendar is a published artefact rather than a personal diary.

Auth: OAuth 2.1 with PKCE and dynamic client registration. The assistant acts as you, limited to your team and your plan. Anything that emails people — invites and RSVPs — requires explicit confirmation before it runs, and event deletion is permanent.

Included with any AddCal plan, no separate fee. Documentation

Server tool list (19)

Raw names from tools/list. Only developers need these.

searchSearch across calendars, collections, events and RSVP responses in one call, returning the ids each other tool needs. Use this first whenever the user refers to something by name rather than by id. Matches RSVPs on attendee name and email, so results may contain personal data.
list-calendarsList the calendars belonging to the authenticated user's team, with a count of upcoming events on each. Use this first to find the calendar_id needed by the event tools.
create-calendarCreate a new calendar for the authenticated user's team.
list-calendar-collectionsList the team's calendar collections. A collection bundles several calendars behind a single public page and subscribe link, so someone can follow them all at once. Returns each collection's member calendars and subscriber count.
create-calendar-collectionBundle several calendars into a collection with one public page and subscribe link. Pass the calendar ids in the order they should appear. Collections require a paid plan.
list-subscribersList the people subscribed to a calendar, with a breakdown by status. "active" means their calendar app is still fetching the feed, "inactive" means it has not synced in over a week, and "blocked" means the organiser cut them off. Names and emails are only captured when the calendar asks subscribers for their details, so many rows are anonymous. Returns personal data.
list-eventsList or search events. Returns upcoming events across the team by default; pass calendar_id to scope to one calendar, or range="past"/"all" to look backwards. Dates are returned in ISO 8601 in the event's own timezone.
get-eventRetrieve the full details of a single event by its id, including its shareable add-to-calendar links.
create-eventCreate an event on a calendar. Supply date_start and date_end as "YYYY-MM-DD HH:MM:SS" (or a full ISO 8601 string) plus an IANA timezone. For an all day event set is_all_day and pass dates only. To make it repeat, pass an RFC 5545 recurrence_rule such as "FREQ=WEEKLY;BYDAY=MO".
update-eventUpdate an existing event. Only the fields you supply are changed. Note that events belonging to a recurring series have restrictions: the start date and recurrence rule of a series cannot be changed here.
duplicate-eventCopy an existing event, optionally onto a different calendar and with a new title or start date. Far cheaper than re-specifying every field when the user wants "the same event again next month". The copy is independent: RSVPs, invites and analytics are not carried over, and a copy of a recurring event does not keep its series.
delete-eventPermanently delete an event. Deleting the parent of a recurring series deletes its instances too. Optionally notifies anyone holding a calendar invite that the event is cancelled.
preview-recurring-datesWork out which dates a recurrence rule actually produces, without creating anything. Use this before create-event whenever you have translated a phrase like "every third Tuesday" into an RRULE, so you can show the user the real dates and have them confirm before any events are written.
list-rsvpsList the RSVP responses for an event, with a count of yes/maybe/no. Filter by response_type to get just the attendees. Returns attendee names, email addresses and any custom form answers, so treat the output as personal data.
create-rsvpRecord an RSVP on someone's behalf, as if they had responded on the event's public page. USUALLY SENDS A REAL EMAIL. Unless the event has confirmation emails turned off, this emails a confirmation to the address you provide, and on events with calendar invites enabled it may also send them an invitation. Set send_confirmation=false to record the response silently instead. Only call this when the user has asked you to add a specific named person. Confirm the name and address with them first, then pass confirm=true. If the same address has already responded and the event prevents duplicates, the existing response is updated rather than a second one created.
list-invitesList the calendar invites sent for an event and their current status (pending, sent, accepted, tentative, declined, bounced, failed, cancelled). Calendar invites are a Business plan feature.
send-event-inviteSENDS A REAL EMAIL. This immediately emails a calendar invitation to the address you provide, from the team's sending domain. It is not a draft or a preview, and it cannot be unsent. Only call this when the user has explicitly asked to invite that specific person. Never call it to "test", to check whether an address is valid, or on your own initiative while exploring. Confirm the recipient address with the user first, then pass confirm=true. Calendar invites are a Business plan feature and must also be enabled on the event itself. Each send counts against the team's monthly email allowance.
get-analyticsGet engagement analytics: how many people viewed an event or calendar page and how many added it to their own calendar, broken down over time and by referrer, country, device, browser, calendar provider and UTM parameter, plus top events, best time to post, lead time and the equivalent figures for the preceding period. Scope with calendar_id or event_id, or omit both for the whole team. Defaults to the last 30 days. Teams without a paid subscription receive headline totals only.
get-team-usageGet the team's plan, current usage and limits: events, calendars, subscribers, email sends, invites and more. Use this to explain why an action was blocked, to check headroom before creating things in bulk, or to answer "what plan am I on" and "how close am I to my limit".