savvycal
Server Details
Read and create SavvyCal scheduling links and booked events.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 8 tools
Each tool targets a distinct resource and action: events vs links are clearly separated, and read/list/get/cancel/duplicate/toggle variants have no overlapping purpose. The slot lookup is the only nuanced case, but its name and description make it unambiguous.
All tools follow a consistent savvycal_ prefix with snake_case verb_noun naming. Minor extra noun in savvycal_get_link_slots is still predictable and readable.
Eight tools is well-scoped for the scheduling-link and event subset of the SavvyCal API. Each tool earns its place without excessive granularity or missing obvious grouping.
Read coverage for links and events is solid, plus cancellation, duplication, toggling, and slot lookup. However, core lifecycle operations like create_link and update_link are absent, and there is no event reschedule/update, leaving notable gaps for full link management.
Available Tools
8 toolssavvycal_cancel_eventCancel eventADestructiveInspect
Cancel a booked event/meeting. This notifies attendees and frees the slot. SavvyCal REST: DELETE /events/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The event id to cancel. | |
| reason | No | Optional cancellation reason (→ request body { reason }). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true; the description adds genuine behavioral context beyond that — it discloses the side effects that attendees are notified and the slot is freed, and maps the call to DELETE /events/{id}. It stops short of stating irreversibility or auth/permission requirements.
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 action and immediately followed by consequences and the underlying REST call. No wasted language, though the REST endpoint line is marginally redundant.
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 two-parameter mutation tool with no output schema and destructiveHint already covering the safety profile, the description supplies the key missing piece — the external side effect on attendees. It is nearly complete; only reversibility and permission requirements are unaddressed.
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%, so both parameters (id and reason) are already documented in the schema. The description adds nothing parameter-level except echoing {id} via the REST path, which matches the baseline 3 when the schema does the heavy lifting.
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?
States a specific verb and resource ('Cancel a booked event/meeting'), which cleanly separates it from the read/list siblings (get_event, list_events) and the link-management siblings. It does not explicitly name a sibling it is contrasted with, but the action is unambiguous.
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?
Usage is implied by the action itself (cancel an event you no longer want), but there is no explicit when-to-use/when-not-to-use guidance or reference to an alternative sibling. Adequate minimum-viable guidance with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_duplicate_linkDuplicate linkCDestructiveInspect
Create a copy of an existing scheduling link. SavvyCal REST: POST /links/{id}/duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The scheduling link id to duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply destructiveHint=true, and the description does not address that hint at all — it neither confirms nor explains any destructive effect, nor mentions permissions or side effects. The only added context beyond the title is the REST endpoint string, which is of limited behavioral value.
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?
Two short sentences, front-loaded with the action and followed by the API mapping; nothing is padded. The REST endpoint sentence is marginally useful but not strictly necessary.
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 simple one-parameter mutation with no output schema, the description covers the core action but omits the return value (what the new duplicated link looks like) and any acknowledgment of the destructiveHint annotation. It is minimally adequate but leaves the agent guessing about results.
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?
There is a single parameter with 100% schema description coverage, so the schema already explains that `id` is the scheduling link to duplicate. The description adds nothing about the parameter beyond what the schema states, matching the baseline for full coverage.
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?
States a specific verb+resource: 'Create a copy of an existing scheduling link,' which is unambiguous and clearly distinct from the read/list/toggle siblings. It does not explicitly name a sibling to contrast against, so it falls short of a 5.
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?
There is no when-to-use guidance, no prerequisites (e.g. link must exist or be owned by the caller), and no conditions distinguishing duplication from creating a fresh link. The description only asserts what the tool does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_get_eventGet eventBRead-onlyInspect
Get a single booked event/meeting by id. SavvyCal REST: GET /events/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The event id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered structurally. The description adds the REST route (GET /events/{id}) but says nothing about error behavior (e.g. missing/invalid id) or what the returned event contains, and no output schema exists to fill that gap.
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?
Two short, front-loaded sentences with the operation stated first. The REST endpoint mapping is secondary detail that some agents will find useful, though it is not strictly necessary.
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 one-parameter read tool with safety annotations, the definition is minimally sufficient. It is incomplete on what the returned event looks like and on failure modes, which matters since there is no output schema.
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?
There is a single required parameter with 100% schema description coverage, so the schema carries the semantics. The description's 'by id' adds no format, validation, or lookup detail beyond what the schema already states.
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 states a specific verb and resource ('Get a single booked event/meeting by id'), which is unambiguous about the operation and its scope. It implicitly distinguishes itself from the list sibling via 'single ... by id', though it does not name an alternative 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?
Usage is only implied: an agent can infer you call this when you have an id and need one event rather than a listing. There is no explicit when-to-use, when-not-to-use, or named alternative (e.g. savvycal_list_events) to select between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_get_linkGet linkARead-onlyInspect
Get a single scheduling link by id. SavvyCal REST: GET /links/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The scheduling link id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint=true annotation already establishes this as a safe, non-mutating read, so the description need not restate safety. It adds the underlying REST mapping (GET /links/{id}), which is useful context, but says nothing about error behavior for a missing id or the shape of the returned link object.
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?
Two short sentences, the operation and resource are front-loaded, and the REST mapping follows as supporting detail. No filler or repetition.
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 trivial single-record read with full schema coverage and a readOnlyHint annotation, the description supplies enough to invoke correctly. It is slightly thin on what the returned link contains and how a missing/invalid id surfaces, but no output schema exists to carry that burden either.
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 there is a single required parameter whose schema description ('The scheduling link id.') is sufficient. The description only echoes the same idea with 'by id', adding no format, source, or lookup guidance beyond the schema, so the baseline 3 applies.
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?
States a specific verb (get) and resource (a single scheduling link identified by id), which is clearer than a bare 'Get link' title. It implicitly distinguishes itself from the sibling savvycal_list_links by emphasizing 'a single', though it never names that sibling 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?
Usage is only implied: an agent can infer it should call this when it already has a link id and needs one record rather than a list. There is no explicit 'when to use' guidance, no prerequisites, and no mention of alternatives such as savvycal_list_links for retrieval by other criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_get_link_slotsGet link slotsARead-onlyInspect
Get available booking time slots for a scheduling link. Returns slots with start_at/end_at/duration/rank. SavvyCal REST: GET /links/{id}/slots.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The scheduling link id. | |
| duration | No | Slot duration in minutes to request (→ query param duration). | |
| time_zone | No | IANA time zone for the slots, e.g. America/New_York (→ query param time_zone). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true), so the description only needs to add context, and it does: it discloses the returned slot fields (start_at/end_at/duration/rank) and the REST endpoint backing the call. It does not describe empty results, pagination, or default time zone behavior, which keeps it out of the top band.
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?
Two short sentences, front-loaded with the action and result shape, followed by the REST mapping. No filler, no redundancy.
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 simple three-parameter read tool with no output schema, the description supplies the essentials: purpose, return fields, and endpoint. It omits behavior for edge cases (no availability, default duration/time zone), which is a minor gap given the tool's simplicity.
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%, with duration and time_zone already documented including their query-param mapping, so the schema carries the parameter burden. The description adds no parameter-level meaning beyond what the schema states, making the baseline 3 correct.
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 ('Get') and resource ('available booking time slots for a scheduling link'), which separates it from siblings like get_link or list_links. It even pins the underlying REST call (GET /links/{id}/slots), leaving no ambiguity about what is returned. It stops short of explicitly contrasting itself with an alternative sibling tool.
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?
There is no when-to-use statement, no prerequisite (e.g. link must exist), and no mention of alternatives such as get_link or list_links. The reader must infer the trigger from the purpose sentence alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_list_eventsList eventsBRead-onlyInspect
List booked events/meetings (paginated). SavvyCal REST: GET /events.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (pagination limit). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that results are paginated and identifies the backing REST endpoint, which is useful context, but says nothing about result volume, default ordering, or what the pagination token/link looks like.
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?
Two short sentences with the core purpose front-loaded and no filler. The REST endpoint mapping is arguably redundant for an agent but is compact enough not to harm readability.
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 simple read-only list tool with one optional parameter, the definition is adequate. With no output schema, however, the description does not indicate what an event record contains or whether pagination metadata is returned, leaving a modest gap.
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%, so the single 'limit' parameter is fully documented in the schema itself. The description's '(paginated)' note corroborates the limit's purpose but adds no syntax, defaults, or range detail beyond the schema, making the baseline 3 correct.
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?
States a specific verb and resource ('List booked events/meetings') and maps it to the underlying REST call, which is unambiguous. It does not explicitly contrast with sibling list/get tools like savvycal_get_event or savvycal_list_links, so it stops short of full sibling differentiation.
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?
There is no when-to-use guidance, no mention of alternatives such as savvycal_get_event for a single event, and no stated prerequisites or filtering conditions. The agent must infer that this is the broad enumeration tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_list_linksList linksARead-onlyInspect
List the authenticated user's scheduling links (paginated). SavvyCal REST: GET /links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max records to return (pagination limit). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this a safe read, so the bar is lower. The description adds only that results are paginated and maps to GET /links; it says nothing about default page size, ordering, or result shape.
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?
Two short sentences, front-loaded with the scoping constraint and pagination note. The REST endpoint mapping is marginally redundant but harmless, so structure is efficient with no real waste.
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 simple, annotation-covered list tool with one optional parameter and no output schema, the description gives enough to call it correctly. It omits optional return/pagination details, but nothing essential is missing.
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 'limit' parameter is already documented, so the schema carries the load. The description echoes pagination but adds no format, default, or bounds beyond the schema.
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?
States a specific verb and resource ('List the authenticated user's scheduling links') and notes pagination, which clearly separates it from the singular get_link sibling. It stops short of explicitly naming a sibling, but 'List' vs 'Get' makes the intent unambiguous.
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?
Usage is only implied by the verb and the 'authenticated user's' scope; there is no explicit statement of when to call this versus get_link or get_link_slots, and no exclusions. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savvycal_toggle_linkToggle linkADestructiveInspect
Toggle a scheduling link between active and disabled (changes whether the public booking page accepts bookings). SavvyCal REST: POST /links/{id}/toggle.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The scheduling link id to toggle. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply only destructiveHint=true, so the description carries most of the behavioral burden. It usefully discloses that this alters public booking acceptance and maps to a REST endpoint, but it does not say whether the change is reversible, what the tool returns, or what error occurs for an invalid/already-toggled id. Adds context beyond annotations, but not rich context.
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?
Two tight sentences, front-loaded with the action and effect; nothing redundant. The trailing REST endpoint mapping is marginal for an agent but brief and potentially useful for traceability.
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 one-parameter state-toggle tool with no output schema and only a destructiveHint annotation, the description covers purpose and user-facing effect adequately. It leaves the return value and behavior on an already-toggled link unstated, a minor gap given the tool's simplicity.
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?
There is a single parameter with 100% schema description coverage, and the schema already states 'The scheduling link id to toggle.' The description adds no format, source, or identification guidance beyond that, so the baseline 3 applies.
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?
States a specific verb (toggle), a specific resource (scheduling link), and the concrete state change (active ↔ disabled). The parenthetical even clarifies the user-visible consequence—whether the public booking page accepts bookings—making it clearly distinct from read-oriented siblings like savvycal_get_link or savvycal_list_links.
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 description explains the effect of the operation, which implies when it is useful, but gives no explicit guidance on when to choose it over siblings such as savvycal_get_link (inspect state) or savvycal_duplicate_link. No prerequisites or preconditions (e.g., recommended state check first) are stated.
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.
8 tool updates
- First observed
savvycal_cancel_event - First observed
savvycal_duplicate_link - First observed
savvycal_get_event - First observed
savvycal_get_link - First observed
savvycal_get_link_slots - First observed
savvycal_list_events - First observed
savvycal_list_links - First observed
savvycal_toggle_link
Related MCP Connectors
Read tasks, habits, events and scheduling links; create and update Reclaim tasks and habits.
Read appointments, types, calendars and availability; create, cancel or reschedule bookings.
Read Mindbody classes, schedules, clients, staff and sales; book clients and appointments.
201
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to list scheduled Calendly events, check availability for event types, and create single-use scheduling links.500 npmMIT
- AlicenseNot gradedqualityBmaintenanceWraps the Calendly API v2 for scheduling data, enabling AI agents to query and manage Calendly events and availability.166 npmMIT
- FlicenseNot gradedqualityDmaintenanceExposes personal Calendly account as MCP tools, allowing users to manage events, view availability, and handle bookings through natural language.-
- AlicenseAqualityAmaintenanceCalendar API purpose-built for AI agents. Exposes tools to manage agents, calendars, and events, find meeting times, run scheduling proposals, set availability rules, manage webhooks, and subscribe to iCal feeds.5465 npmApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.