appointment
Server Details
Read your .ics calendar for appointments, free-busy windows and conflicts.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- theluckystrike/mcp-servers
- GitHub Stars
- 0
TDQS
Scored across 12 tools
Most tools target a distinct action/resource pair, and the descriptions cross-reference the two availability tools (conflicts vs free_busy), so an agent can usually tell them apart. The only mild ambiguity is among the three event-retrieval tools, but their date-range/search/next-event distinctions are clear enough.
A majority of names follow a resource_action pattern (calendars_list, events_search, ics_import, license_activate), but several break it with bare nouns (conflicts), noun_noun names (license_status), or phrases (event_to_time_entry, free_busy, next_event). The names are readable and all lowercase snake_case, but the pattern is not predictable.
Twelve tools is a well-scoped size for a calendar import/read/export server: event lookup, availability, ICS management, export, time-entry conversion, and license state each have a dedicated tool. No tool feels redundant, and the count stays within the ideal 3-15 range.
The surface covers the apparent domain well: import/forget calendars, list/search/export events, detect conflicts, show free/busy, find the next event, and convert to time entries. The main gap is that it offers no mutation of events (create/update/delete), but that appears outside the server's stated read/export-oriented purpose.
Available Tools
12 toolscalendars_listList imported calendarsARead-onlyIdempotentInspect
List imported calendars: name, event-definition count, size, source, import time and free-tier use of the 2 slots. It also names stored .ics files with no calendar row. With none it prints the export steps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context beyond annotations: it names stored .ics files with no calendar row and describes the fallback behavior of printing export steps when there are none. This is genuinely useful edge-case disclosure that the annotations do not provide.
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 description is two sentences, front-loaded with the core purpose and fields. The first sentence immediately states the action and result set; the second sentence adds two edge-case behaviors. There is no filler, redundancy, or irrelevant detail. Every clause earns its place.
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 listing tool with no parameters and no output schema, the description covers what is returned (fields and edge cases) and even the no-result fallback. It does not specify the exact output formatting, but that is minor given the tool's low complexity. An agent can predict behavior and interpret results without ambiguity.
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?
The tool has zero parameters, so the schema provides no parameter documentation. Per the rubric, a 0-parameter tool gets a baseline of 4. The description does not need to add parameter meaning, and it does not attempt to invent any. The description's focus on output is appropriate given the lack of parameters.
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 starts with 'List imported calendars' — a clear verb-resource pair — and enumerates the exact fields returned (name, event-definition count, size, source, import time, free-tier use of 2 slots). It also distinguishes itself from siblings by noting it handles .ics files without calendar rows and prints export steps when empty, which is specific and non-overlapping with import/export tools.
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 clearly states what the tool does, but it does not explicitly say when to use it versus alternatives like ics_import or ics_forget. The context makes it self-evident (you call it to view your calendars), yet there is no explicit 'use this when...' or 'instead of...' guidance. It relies on the tool's purpose being obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conflictsFind double bookingsAInspect
Find double bookings: every PAIR of timed events that overlap, with the minutes they collide, across all calendars unless you name one. Whole-day events are reported apart. Free: 31 days. free_busy shows gaps.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day, YYYY-MM-DD, included | |
| from | Yes | First day, YYYY-MM-DD | |
| calendar | No | One calendar name; default every imported calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints, so the description carries that burden. It discloses the pairwise overlap behavior, collision minutes, whole-day event separation, calendar scope default, and a 31-day free bound. The phrase 'Free: 31 days' is a bit cryptic but still adds behavioral context. No contradiction with 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?
Four short sentences, each carrying real information and no filler. The core definition is front-loaded, and the sibling distinction and edge-case handling are placed after the main purpose, which is an ideal structure.
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 tool with no output schema and no annotations, the description covers the main aspects an agent needs: what is returned conceptually, how whole-day events are handled, how calendar scoping works, and a usage boundary. The main gap is that the response format is not explicitly described and 'Free: 31 days' is ambiguous, but the description is still largely complete.
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?
The schema already describes all three parameters at 100% coverage, so the baseline is 3. The description adds only mild clarification with 'unless you name one' for the calendar parameter. It does not meaningfully add to from/to beyond the cryptic '31 days' reference.
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: 'Find double bookings' and defines precisely what counts as one—'every PAIR of timed events that overlap, with the minutes they collide.' It also distinguishes from free_busy by noting that free_busy 'shows gaps,' so the tool's purpose is unmistakable.
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 gives useful context for when to use the tool: overlap detection across calendars, with an optional calendar scoping. It explicitly names free_busy as the alternative for gaps. It does not enumerate exclusions versus every sibling, but the mention of free_busy is a clear enough routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_exportExport events to a .ics fileARead-onlyIdempotentInspect
Call this tool to write chosen events to a new .ics file you can send or import elsewhere. Pass either ids (from events_list) or a from/to window. Times are written in UTC so the file lands correctly in any client.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day, YYYY-MM-DD, included | |
| ids | No | Event ids from events_list, events_search or next_event | |
| from | No | First day, YYYY-MM-DD (alternative to ids) | |
| calendar | No | With from/to: limit to one calendar | |
| out_path | Yes | Name for the downloaded .ics file, e.g. week.ics |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly says 'write chosen events to a new .ics file', which is a persistent file-writing side effect, while the annotations declare readOnlyHint=true. This directly contradicts the read-only annotation, so the behavioral transparency score must be 1. The UTC timezone note is useful but cannot offset the contradiction.
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, each earning its place: purpose, input selection, and timezone behavior. The most important information is front-loaded and there is no verbose or redundant wording.
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 moderate-complexity tool with five parameters and no output schema, the description covers input mode selection, UTC handling, and the output file's intended use. However, it does not clarify what the tool returns (path, success message, or content), and the readOnlyHint contradiction leaves a material gap in the behavioral model.
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 parameter details are already well documented. The description adds high-level grouping ('either ids or a from/to window'), which is helpful, but it does not add meaning beyond what the schema already states for each 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 uses a specific verb ('write') with a concrete resource ('chosen events') and output format ('.ics file'), and clearly states the file's purpose ('send or import elsewhere'). It is distinct from sibling tools like events_list or ics_import by emphasizing the file-export outcome.
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 gives clear guidance on how to select input via 'either ids (from events_list) or a from/to window', which helps agents choose the right parameters. It does not explicitly name alternatives or when not to use the tool, but the context is strong enough to route usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events_listList events in a windowARead-onlyIdempotentInspect
Every event between two dates, recurring expanded to occurrences, sorted by start. Times shown in your zone (profile's, else this machine's) unless zone passed. Each id works for event_export or event_to_time_entry.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day, YYYY-MM-DD, included | |
| from | Yes | First day, YYYY-MM-DD | |
| zone | No | Show local times in this zone or city instead of your own | |
| calendar | No | One calendar name; default every imported calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description discloses important behaviors: recurring events are expanded to occurrences, results are sorted by start, and timezone handling defaults to the profile's or machine's zone unless overridden. It also states that returned ids are compatible with event_export and event_to_time_entry. These details add meaningful context beyond the structured 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?
The description is concise and well-structured: three sentences each earn their place. The core function and scope are front-loaded, followed by timezone behavior and integration guidance. There is no redundant or vague wording.
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?
The description covers the essential behavioral context and integration points, and annotations handle the safety profile. It does not describe the returned event fields or pagination, but for a read-only list tool with fully described parameters, it is largely sufficient. The lack of an output schema could be compensated by a note on the return structure, but it is not a critical omission.
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 nuance to the 'zone' parameter by specifying the fallback order ('profile's, else this machine's'), which is not in the schema. It also implicitly explains how from/to define the window. This extra clarity justifies a slight increase over the baseline.
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 clearly states a specific verb and resource: it lists events between two dates, with recurrence expanded and sorted by start. It does not explicitly contrast with sibling events_search, but the phrase 'Every event' implies broad, unfiltered coverage, which helps distinguish it. Overall the purpose 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?
The description gives clear context for when to use the tool: when all events in a date range are needed. It also notes that each id works for event_export or event_to_time_entry, providing guidance on related follow-up tools. It does not explicitly name alternatives or exclusion cases, but the primary use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events_searchSearch eventsARead-onlyIdempotentInspect
Find events whose title, description, location or attendees contain a phrase. Searches every imported calendar. Without from/to it looks a year back and a year forward on Pro, and the free window either side of today.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day, YYYY-MM-DD, included | |
| from | No | First day, YYYY-MM-DD | |
| query | Yes | Words to look for, case-insensitive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so no contradiction exists. The description adds meaningful behavior beyond the annotations, especially the plan-dependent default date range ('a year back and a year forward on Pro, and the free window either side of today') and the cross-calendar search scope.
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 sentences, front-loaded with the core behavior and free of filler. However, the phrase 'and the free window either side of today' is slightly imprecise—it doesn't specify the window size or clearly frame the free-versus-Pro distinction—so it saves words at a small cost to clarity.
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?
Given no output schema, the description covers the essential invocation details: searchable fields, calendar scope, required query, and default date behavior. It stops short of describing result shape, ordering, or pagination, but an agent has enough to select and call the tool 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 coverage is 100%, so the baseline is 3, but the description adds real semantic value: it explains which fields query searches (title, description, location, attendees) and clarifies the runtime meaning of omitting from/to. This goes beyond the schema's bare 'Words to look for' and date descriptions.
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 uses a specific verb and resource: 'Find events whose title, description, location or attendees contain a phrase.' It also states the scope ('Searches every imported calendar'), which clearly distinguishes it from list-style siblings like events_list. The purpose is immediately 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?
The description gives clear situational context: this is a full-phrase search across all imported calendars, and it explains the default time window when from/to are omitted. It does not explicitly name an alternative tool or exclusion, but an agent can infer when search semantics are appropriate versus a plain calendar list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_to_time_entryTurn a meeting into a time entryBInspect
Take one event and return the exact arguments for the time-tracker's entry_add, so a meeting that already happened becomes billable time without retyping it. Writes nothing: pass the JSON straight to entry_add.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | No | Hourly rate for this entry; a number (120) or the words the user said ('120 euros an hour') | |
| project | Yes | Project or client the meeting is billed to | |
| currency | No | Currency of the rate: EUR, USD, GBP, PLN, or the word the user said ('euros'). Without it the time-tracker falls back to USD. | |
| event_id | Yes | Event id from events_list, events_search or next_event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Writes nothing', but the annotation declares readOnlyHint: false, meaning the tool is not read-only. This is a direct contradiction. The description also fails to disclose any other behavioral traits such as idempotency or side effects, though the annotation contradiction is the primary failure.
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 description is two sentences, front-loading the core purpose and adding the key behavioral note about writing nothing. It is efficient and structured without unnecessary verbosity, though it could be slightly more compact.
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?
The description lacks an output schema but indicates the output is 'the exact arguments for entry_add' and instructs to 'pass the JSON straight to entry_add', giving the agent a clear idea of the return format. However, it does not specify error handling, edge cases, or any constraints on event_id/project beyond the schema. The contradiction with annotations further reduces completeness.
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?
The input schema provides full descriptions for all four parameters (100% coverage). The description does not add additional semantic detail beyond what the schema already specifies, such as formats or examples. The baseline of 3 applies because the schema carries the burden of documentation.
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 clearly states the action ('Take one event and return the exact arguments'), the resource (an event), and the purpose (converting a meeting to a billable time entry). It distinguishes itself from the sibling listing/search tools by focusing on transformation rather than retrieval.
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 provides a clear use case: 'so a meeting that already happened becomes billable time without retyping it.' It implies when to use (when you have an event to bill) but does not explicitly exclude alternatives or state when not to use it. The context is sufficient for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
free_busyBusy blocks and free windowsAInspect
Merged busy blocks and the free gaps inside your working hours over a day range. Events marked free do not count; whole-day events block the day. Free: 31 days. Use conflicts for overlapping pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day, YYYY-MM-DD, included | |
| from | Yes | First day, YYYY-MM-DD | |
| zone | No | Zone the working hours and the output are in; default your own | |
| work_end | No | End of your working day, HH:MM, default 17:00 | |
| calendars | No | Calendar names; default all of them | |
| work_start | No | Start of your working day, HH:MM, default 09:00 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful semantics not present in the annotations: events marked free are ignored, whole-day events block the entire day, and a 31-day limit is indicated. These rules materially change the result and would be easy to miss. It does not mention side effects or auth needs, but the annotations do not establish a read-only profile, so the description carries more of the transparency burden than in a tool with readOnlyHint=true.
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 description is compact and front-loaded: the core behavior appears first, followed by edge-case rules and the sibling pointer. The cryptic 'Free: 31 days' costs a little clarity; otherwise this would be excellent for size and structure.
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?
There is no output schema, and the description only characterizes the result as 'merged busy blocks and free gaps' without specifying response structure or how zone/calendars influence the output. It does cover core event-filtering rules and the conflicts alternative, making it usable, but an agent would still have to assume return format details.
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 every parameter including from, to, zone, work_start, work_end, and calendars is already explained by the schema. The description only adds 'working hours' and the cryptic 'Free: 31 days,' neither of which materially deepens parameter understanding. Baseline 3 is appropriate.
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 clearly identifies the tool's deliverable: 'Merged busy blocks and the free gaps inside your working hours over a day range.' It also distinguishes from the 'conflicts' sibling by pointing out the overlap-pair use case. It lacks an explicit action verb such as 'Get' or 'List,' so it falls just 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?
'Use conflicts for overlapping pairs' is an explicit alternative and a clear when-not signal for overlap analysis. The rest of the description implies this tool is for aggregate availability over a day range, which is useful context. It does not spell out when to choose events_list/events_search instead, so the guidance is good but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ics_forgetForget a calendarAInspect
Remove one imported calendar by name and delete this server's local copy of its .ics, freeing a slot. Your own calendar and the source file are untouched. ics_import replaces a name in place.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The calendar name from calendars_list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations say destructiveHint=false, but the description says 'delete this server's local copy of its .ics', which is a destructive action. This is a direct contradiction. The description does add context about what is untouched (own calendar, source file), but the contradiction is severe and misleads an agent about the tool's side effects. Without the contradiction, the description adds useful transparency.
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 sentences, each carrying distinct information: the core action and side effect, then scope limitations and the sibling distinction. Front-loaded with the main verb and resource; no redundant filler.
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 single-parameter deletion tool with no output schema, the description covers the operation, side effects, exclusions, and a sibling alternative. It lacks explicit error/reversibility info, but the main gaps are acceptable; however, the contradiction with destructiveHint undermines overall completeness by sending conflicting signals about safety.
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?
The schema already fully documents the `name` parameter (100% coverage), including its source (calendars_list) and type. The description only repeats 'by name' and does not add constraints, formats, or behavioral details beyond the schema, so it does not exceed the baseline.
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 clearly states the action (remove/delete), the target resource (imported calendar by name), and the side effect (deletes server-side .ics copy, frees a slot). It also explicitly distinguishes from sibling tool ics_import, which replaces instead of removes, making purpose 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?
The description signals this tool is for removing/freeing imported calendars and notes that ics_import handles replacing in place, giving an implicit when-to-use versus an alternative. It does not explicitly enumerate scenarios when not to use it (e.g., for non-imported calendars), though 'imported' is mentioned, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ics_importImport a calendar (.ics)AInspect
Call this tool to read a calendar export and keep it under a name. Give path (.ics file), text (contents), or url (public .ics/webcal feed; Pro). Google, Apple, Outlook exports read. Re-importing a name replaces it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public https:// or webcal:// .ics feed. Fetched once, only because you asked; Pro feature | |
| name | Yes | What to call this calendar, e.g. "work" or "family" | |
| path | No | Not available on this hosted endpoint, which has no filesystem: paste the file as text instead | |
| text | No | The .ics file contents, pasted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that re-importing an existing name replaces it, and that url feeds are fetched only when requested. It also says compatible sources are Google/Apple/Outlook exports. There is no contradiction with 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?
The description is compact and front-loaded: first sentence states the purpose, and the following sentences each add a distinct fact (input modes, compatibility, overwrite behavior). No filler or 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 an import tool with four parameters and no output schema, the description covers the essential context: what to provide, which sources are supported, Pro restriction, and overwrite behavior. It does not describe the success/error return payload, but that is a minor gap for a straightforward import operation.
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?
The schema already describes all four parameters with 100% coverage. The description adds context such as input alternatives and Pro gating, but mostly repeats what the schema says ('path', 'text', 'url'), so it does not meaningfully extend parameter semantics.
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 the exact operation ('read a calendar export and keep it under a name') and the resource it acts on, so it cannot be confused with export/list/forget siblings. The title 'Import a calendar (.ics)' reinforces the same intent without tautology.
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 clear conditions for invoking: when a user wants a .ics export stored under a name, and it explains the three input modes (path, text, url). It notes url is a Pro feature, and the schema adds that path is unavailable on the hosted endpoint, though the main description itself does not make exclusions explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license_activateActivate licenseAInspect
Turn Pro on for this connection with key, an MCPL1.. issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | License key from checkout, MCPL1.<payload>.<signature> |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not destructive, and the description adds useful behavioral detail: existing data under the token stays, and a wrong or expired key changes nothing. This goes beyond the annotation hints by explaining failure semantics and safety of the operation.
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 description is two sentences with no filler. It front-loads the core action, then gives the key format and safety guarantees, and closes with the verification tool. Every sentence contributes essential information.
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 single-parameter activation tool with annotations covering the safety profile, the description is complete: it states what the tool does, what input is needed, what happens on failure, and how to confirm success. There is no missing critical information for an agent to call 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?
The schema already documents the key parameter and its format with 100% coverage. The description adds meaning by specifying that the key must be issued at checkout for this server or the bundle, which clarifies validity requirements not present in 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?
The description uses a specific verb and resource: it 'turns Pro on' for the connection using a license key. It also distinguishes itself from the sibling license_status tool by saying license_status confirms the activation. This leaves no ambiguity about what the tool accomplishes.
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 provides clear context for use: the key must be an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. It does not explicitly list exclusions or alternative tools, but it does reference license_status as the confirmation path, giving the agent a sense of the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license_statusLicense statusARead-onlyIdempotentInspect
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context beyond annotations by specifying the JSON response contents and stating 'nothing changes,' reinforcing the read-only nature of the call.
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 dense sentences cover output, purpose, usage context, and side-effect guarantee. Every sentence earns its place and the most important information is front-loaded.
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?
With no output schema, the description sufficiently describes the return value. With no parameters, annotations covering safety, and a clear use case, nothing essential is missing for an agent to invoke this tool 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?
There are zero parameters and the schema already fully documents that fact. The description explicitly says 'No arguments,' which is accurate and reinforces the schema without needing further elaboration.
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 begins with a specific verb ('Report') and a precise resource ('this endpoint's licence state for your token'), and enumerates the exact output fields: product, tier, reason, and checkout URL. This clearly distinguishes it from sibling tools like license_activate.
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 explicitly states when to call it: 'Call it to explain a free-tier refusal.' This is clear contextual guidance, though it does not name alternatives or explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_eventNext eventAInspect
The first event not yet started, within the next 366 days, across every imported calendar or one you name. Returns title, times in your zone, how long until it starts, location, attendees and its id.
| Name | Required | Description | Default |
|---|---|---|---|
| calendar | No | One calendar name; default every imported calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return shape (title, times in the user's zone, countdown, location, attendees, id) and the selection behavior (not-yet-started, 366-day horizon, calendar scope). The annotations are all false and add little safety context, but the description itself makes the read-like nature apparent.
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 description is two concise sentences with no filler. It front-loads the selection rule before listing the returned fields, and every phrase earns its place.
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 tool with one optional parameter and no output schema, the description provides both the selection criteria and the fields an agent should expect in the result. Minor unspecified edge cases, such as what happens if no event exists in the window, do not materially undermine completeness.
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?
The only parameter, calendar, is already fully described in the schema as 'One calendar name; default every imported calendar.' The description mostly mirrors this semantics, so it adds little beyond what the schema already provides.
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 specifies exactly what the tool does: it returns the first event that has not yet started within a 366-day window, across all imported calendars or a named one. This clearly distinguishes it from sibling list/search tools, which are not limited to the single next upcoming event.
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 clearly conveys the use case: retrieve the next upcoming event, optionally scoped to a specific calendar. It does not explicitly say when to prefer events_list or events_search instead, so it stops short of providing full when/when-not guidance.
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.
12 tool updates
- First observed
calendars_list - First observed
conflicts - First observed
event_export - First observed
event_to_time_entry - First observed
events_list - First observed
events_search - First observed
free_busy - First observed
ics_forget - First observed
ics_import - First observed
license_activate - First observed
license_status - First observed
next_event
Related MCP Connectors
Read the .ics your calendar exports: events in a window, free-busy, double bookings, export.
Read tasks, habits, events and scheduling links; create and update Reclaim tasks and habits.
Extracts calendar events from natural-language text, with .ics and calendar links.
Merged free/busy, find mutual time, propose bookings with human approval. Never event contents.
Related MCP Servers
- FlicenseBqualityCmaintenanceEnables reading and managing calendar events from local .ics files offline, without OAuth.2-
- AlicenseNot gradedqualityDmaintenanceEnables reading and interacting with ICS calendar feeds (e.g., Outlook, Google Calendar) with recurring event expansion, caching, and timezone support.MIT
- AlicenseAqualityBmaintenanceEnables privacy-safe calendar availability queries across Outlook, iCloud, and Google ICS feeds, exposing only busy/free intervals and free-slot search without revealing event details.3MIT
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to calendar events from iCal feeds, enabling agents to query schedules, search events, and check availability via natural language.AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.