Zovo Group Calendar
Server Details
Shares a schedule that your group subscribes to once and that stays up to date.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
Each tool maps to a distinct phase of the calendar lifecycle (create, view, modify), and the descriptions explicitly state which link type is required for show/update. The only soft spot is update_group_calendar, which bundles add/change/cancel/restore/rename into one tool and could be confused with create when the user wants to add more events.
All three names follow the identical verb_group_calendar pattern (create/show/update), with a shared resource suffix that makes the family instantly recognizable. The only minor nit is 'show' where 'get' might be expected, but it is applied consistently within a single uniform scheme.
Three tools is lean but defensible for a focused publish-and-maintain calendar service; each tool earns its place and there is no filler. It sits at the low end of comfortable, and update_group_calendar carries a lot of weight for one tool.
The create/read/update arc is covered, but deletion is explicitly excluded ('does not delete events', nothing about removing a calendar), so an organizer has no way to undo a mistaken creation or drop a past event. There is also no listing of calendars an organizer owns, which forces agent-side state tracking of the private links.
Available Tools
3 toolscreate_group_calendarCreate group calendarAInspect
Use this when someone wants a shared calendar that a group subscribes to: a team practice schedule, class timetable, club or family events. Publishes a page with the upcoming events and subscribe links (webcal, Google Calendar add-by-URL) to a live iCalendar feed. Takes 1-200 events in one IANA time zone, with optional weekly repeats and skipped dates; events can run up to one year ahead. Returns the public link and a private organizer link. Does not send invitations, reminders or emails, and does not write into anyone's calendar directly.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Calendar name people will see in their calendar app, e.g. U12 soccer practice. | |
| events | Yes | The events, e.g. [{"title":"Practice","date":"2026-11-10","start":"17:30","end":"19:00","repeat_weekly_until":"2027-02-23"}]. | |
| time_zone | Yes | IANA time zone of the event times, e.g. Europe/Berlin or America/Chicago. | |
| description | No | Short description shown on the page and in calendar apps, e.g. Practice schedule for the U12 team. | |
| organizer_name | No | Organizer's first name shown on the page, e.g. Coach Sam. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| next | Yes | |
| closed | Yes | |
| events | Yes | |
| changes | Yes | |
| feed_url | Yes | |
| warnings | Yes | |
| manageUrl | Yes | |
| publicUrl | Yes | |
| time_zone | Yes | |
| expires_at | Yes | |
| webcal_url | Yes | |
| events_count | No | |
| events_total | Yes | |
| refresh_note | Yes | |
| events_active | Yes | |
| google_add_url | Yes | |
| past_occurrences | Yes | |
| upcoming_occurrences | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false), the description discloses that the output is public/subscribable, that two links are returned (public and private organizer), that events are capped and span at most one year ahead, and that a single IANA time zone governs all events. It also clarifies the non-destructive surface: nothing is written into anyone's calendar and no emails are sent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the use case and audience, then subsequent sentences layer output, constraints, and exclusions in a logical order. There is no filler; even the negative sentence about invitations/reminders carries routing information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and return values need not be explained, the description still summarizes the two returned links, which helps the agent tell the user what they will get. Combined with the constraint and exclusion notes, nothing material is missing for a create-type tool with five parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by stating cross-parameter constraints the schema cannot express — one time zone for all events, weekly repeats with skipped dates, and a one-year horizon. However, it says 'Takes 1-200 events' while the schema allows maxItems 220, a small numeric inconsistency that could confuse an agent about the real cap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (create a shared, subscribable group calendar) and grounds it in concrete use cases — team practice schedule, class timetable, club or family events. It also states the concrete artifact produced (a public page plus a live iCalendar feed), which lets an agent distinguish it from the show/update siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening clause 'Use this when someone wants a shared calendar that a group subscribes to' gives an explicit trigger, reinforced by example scenarios. The closing sentence carves out what the tool does not do (no invitations, reminders, emails, no direct writes to someone's calendar), which implicitly routes invitation-style requests elsewhere, though no sibling or alternative tool is named explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_group_calendarShow group calendarARead-onlyIdempotentInspect
Use this when the organizer wants to see a group calendar they made: its events with their numbers, the next dates and the subscribe links. Needs the private organizer link (contains /m/). Does not change the calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| manage_link | Yes | The private organizer link returned when the calendar was made, e.g. https://calendar-feed.zovo.one/m/<id>/<key>. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| next | Yes | |
| closed | Yes | |
| events | Yes | |
| changes | Yes | |
| feed_url | Yes | |
| warnings | Yes | |
| manageUrl | Yes | |
| publicUrl | Yes | |
| time_zone | Yes | |
| expires_at | Yes | |
| webcal_url | Yes | |
| events_count | No | |
| events_total | Yes | |
| refresh_note | Yes | |
| events_active | Yes | |
| google_add_url | Yes | |
| past_occurrences | Yes | |
| upcoming_occurrences | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description still earns credit by adding the access requirement that the caller must hold the private organizer link containing '/m/', which is real behavioral context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the usage trigger, then the requirement, then the non-mutation note. The closing 'Does not change the calendar' largely restates readOnlyHint/destructiveHint=false, which is a small redundancy but also a useful plain-language confirmation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a one-parameter read tool with a full output schema, so the description need not explain return structure, yet it still sketches the payload. The usage trigger, link requirement, and non-mutation guarantee cover everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented with a format example. The description repeats the 'private organizer link (contains /m/)' hint, which the schema already conveys via its example URL, so it adds little meaning beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('see a group calendar they made') and enumerates what comes back: events with numbers, next dates, and subscribe links. It clearly reads as the retrieval counterpart to create_group_calendar and update_group_calendar, but it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit selection condition ('when the organizer wants to see a group calendar they made') and a prerequisite ('needs the private organizer link'). It stops short of naming a wrong-tool condition or pointing to an alternative for non-organizers, so it is clear context without full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_group_calendarUpdate group calendarADestructiveInspect
Use this when the organizer wants to add events to a group calendar, change an event (time, date, place, note, repeat, skipped dates), cancel or restore an event, or rename the calendar. Needs the private organizer link and the event numbers from show_group_calendar. Changed events keep their identity and get a higher revision, so calendar apps update them on their next refresh; cancelled events stay marked as cancelled. Does not notify anyone and does not delete events.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New calendar name, e.g. U12 practice (winter). | |
| changes | No | Changes to existing events by number, e.g. [{"event":1,"skip_dates":["2026-12-22"]},{"event":3,"cancel":true}]. | |
| add_events | No | New events to add, same shape as when creating, e.g. [{"title":"Tournament","date":"2026-12-12","all_day":true}]. | |
| description | No | New description, e.g. Winter indoor schedule. | |
| manage_link | Yes | The private organizer link returned when the calendar was made, e.g. https://calendar-feed.zovo.one/m/<id>/<key>. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| next | Yes | |
| closed | Yes | |
| events | Yes | |
| changes | Yes | |
| feed_url | Yes | |
| warnings | Yes | |
| manageUrl | Yes | |
| publicUrl | Yes | |
| time_zone | Yes | |
| expires_at | Yes | |
| webcal_url | Yes | |
| events_count | No | |
| events_total | Yes | |
| refresh_note | Yes | |
| events_active | Yes | |
| google_add_url | Yes | |
| past_occurrences | Yes | |
| upcoming_occurrences | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that changed events keep their identity and receive a higher revision so subscriber apps refresh, that cancelled events remain visible as cancelled, and that no one is notified. That is substantive side-effect context an agent cannot infer from destructiveHint/openWorldHint alone, and it does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the trigger and operation list, followed by prerequisites and then side effects. No filler, and the negative constraints are placed last where they read as caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-operation mutation tool with an output schema, the description covers operations, prerequisites, and side effects well. It stops short of saying what happens when an event number is invalid or when a batch partially fails, which would matter for a 50-item changes array.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds provenance the schema lacks: the manage_link is the private organizer link and event numbers must come from show_group_calendar. It does not add format or interaction detail for the nested change/add arrays, which the schema already documents thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource and then enumerates the exact operations covered: adding events, changing time/date/place/note/repeat/skipped dates, cancelling, restoring, and renaming. It also distinguishes itself from the sibling show_group_calendar by pointing there for event numbers, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It opens with an explicit trigger ('Use this when the organizer wants to...') and lists the concrete situations that select this tool. It also states prerequisites (private organizer link, event numbers from show_group_calendar) and two exclusions (does not notify, does not delete), which is exactly the when/when-not guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
create_group_calendar - First observed
show_group_calendar - First observed
update_group_calendar
Related MCP Connectors
Turn a written schedule into a live calendar link people subscribe to in Apple, Google, Outlook.
Publish public calendars and events others subscribe to: RSVPs, feeds and add-to-calendar links.
Shared group calendar with RSVPs, no login. Create calendars, read events, add events, RSVP.
Every kid's team, league and school schedule in one family calendar.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables mixed-schedule families to coordinate quiet hours, meals, chores, calendar events, nudges, and wake briefings through an MCP client such as a living-room Alexa+ Show simulator.5 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables scheduling prompts with cron expressions and receiving webhook POSTs to callback URLs.MIT
- FlicenseNot gradedqualityBmaintenanceEnables multi-timezone calendar event overlap resolution and deep-work buffer negotiation. It provides deterministic conflict arbitration and structured telemetry for MCP-compatible clients.8-
- AlicenseNot gradedqualityBmaintenanceLets an AI assistant check your availability by reading private ICS subscription feeds and returning merged busy intervals or open free slots, while keeping event titles, notes, attendees, and feed URLs entirely on the server. Access is read-only and protected by OAuth with a single-account allowlist.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.