dav-mcp
Server Quality Checklist
Latest release: v4.0.0
- Disambiguation5/5
Each tool targets a distinct operation: list vs query vs multi-get vs create/update/delete, and raw update variants are explicitly differentiated from their field-based counterparts. Even overlapping tools like list_events and calendar_query are clearly scoped with warnings and usage guidance.
Naming Consistency4/5Most tools follow a consistent verb_noun pattern (list_, create_, update_, delete_, *_query, *_multi_get). The lone exception is make_calendar instead of create_calendar, which breaks the otherwise uniform create_* convention.
Tool Count3/5At 27 tools, the surface is heavy but defends its size by covering three distinct resource domains (calendars, todos, contacts) with full CRUD plus query and batch operations. It sits just above the 16-25 'heavy' band, yet all tools serve a concrete purpose rather than being redundant.
Completeness4/5The calendar, event, todo, and contact domains have strong lifecycle coverage (list/query/get/create/update/delete), plus freebusy and raw updates. The main gap is the lack of addressbook creation/update/deletion—only list_addressbooks exists—but this is a minor limitation for the core workflows.
Average 4.1/5 across 27 of 27 tools scored. Lowest: 3.3/5.
See the Tool Scores section below for per-tool breakdowns.
- 2 of 2 community issues answered or closed in the last 6 months
- 22 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
This repository includes a glama.json configuration file.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry the full burden of behavioral disclosure. It reveals that the tool updates fields and imposes constraints (no property parameters, no line breaks), but does not describe side effects, whether updates are partial or full replacements, or what the return value looks like. For a mutation tool, this leaves essential behavior unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that starts with 'PREFERRED' and immediately states the core action. The list of supported properties is comprehensive yet compact, and every sentence earns its place. It is slightly longer than ideal due to the list, but efficiently conveys the essentials.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations regarding return behavior. The description does not state what happens after a successful update (e.g., returned contact, success message), nor does it mention the prerequisite of fetching an etag for conflict detection (though it is a required parameter). It also lacks guidance on typical usage flow in relation to the sibling tools. For an update operation, this leaves the agent uncertain about the outcome and sequence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with detailed descriptions for every field (e.g., format examples for N, ADR, BDAY) and the constraint on property parameters. The description largely reiterates these details, adding only the 'without vCard formatting' phrasing, which is a minor clarification. Since the schema does the heavy lifting, the baseline of 3 is appropriate; the description adds little new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: updating contact fields without vCard formatting, and explicitly lists the supported property names. It distinguishes itself from the sibling 'update_contact_raw' by emphasizing 'PREFERRED' and the non-raw approach, making its scope obvious to an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description labels itself 'PREFERRED' and mentions broad support for RFC 6350 properties, giving a hint to prefer it over raw alternatives. However, it does not explicitly state when to use this tool versus 'update_contact_raw', nor does it mention scenarios where raw is required (e.g., property parameters). The note that property parameters are not accepted implies a limitation, but the alternative is not named directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description bears full responsibility for disclosing behavioral traits. It only restates the creation action and does not mention side effects, return value, persistence, or important nuances like all-day inference and exclusive end dates, which the schema documents but the description does not surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately communicates the tool's purpose and key fields. There is no filler, redundant phrasing, or unnecessary structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a detailed input schema, this is a mutating tool with no annotations and no output schema. The description does not explain what happens after creation, what response to expect, or the non-obvious all-day/EXCLUSIVE end-date behavior, leaving significant contextual gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without parameter details in the description. The description adds no new semantic meaning beyond the schema and omits the required calendar_url parameter, but the schema fully covers all parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create'), a precise resource ('calendar event'), and the main fields (title, date, time, optional description, location). It is clearly distinct from sibling tools like update_event, delete_event, and create_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'new' implies creation rather than modification, so an agent can infer this tool is for creating events rather than updating or deleting them. However, it does not explicitly name alternatives like update_event or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only conveys the mutating action and the vCard format; it does not disclose whether creating is idempotent, what happens if the address book does not exist, or what the tool returns. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the action and format front-loaded. Every word adds value, and there is no redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward create operation with fully documented parameters, the description is minimally adequate. However, with no output schema and no annotations, it does not mention the required addressbook_url context or any return/error behavior, so an agent must rely on the schema for operational completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters. The description adds no new semantic detail beyond listing a few field names, and 'other details' is vague. The baseline of 3 is appropriate because the schema, not the description, carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action ('Create a new contact') and a specific resource ('vCard'), and enumerates representative fields like name, email, phone, and organization. This clearly distinguishes it from sibling tools such as update_contact, delete_contact, and create_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus update_contact or delete_contact, but the verb 'Create' and the contact resource make the intended use reasonably inferable. It does not mention prerequisites such as needing an existing address book, which would be useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It states that a calendar collection is created and optional fields can be set, but it does not disclose behavior on duplicate display_name, permission requirements, side effects, or response/error semantics. This is a mutation tool with no safety or failure hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the action and resource, then compactly lists the optional parameters. There is no filler, and every part adds useful orienting information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully covers parameter semantics, so the main gaps are the missing output schema and the lack of behavioral context for a mutation operation. The description gives a clear purpose and option list, but an agent still has to infer result format, error handling, and conflict behavior. It is minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all five parameters, including defaults for components, so schema coverage is 100%. The description merely summarizes the optional fields without adding any new format, constraint, or interaction details beyond the schema. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and a concrete resource ('a new calendar collection on the CalDAV server'), clearly distinguishing this action from siblings like create_event, update_calendar, and delete_calendar. The word 'new' also signals that this is for creation rather than modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when a new calendar collection is needed—but it does not explicitly mention alternatives such as update_calendar for existing collections or list_calendars for discovery. No prerequisites or exclusionary guidance are provided, so usage context is mostly inferred from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It conveys that this is a read-only batch retrieval operation, which is useful, but it does not describe return format, error behavior, or how missing/invalid contact URLs are handled. For a simple fetch tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. The second sentence reinforces usage context, though it slightly repeats the idea of exact URLs. Overall it is well-sized with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description could do more to clarify what 'details' are returned and how a successful batch result is structured. It is sufficient for a simple batch fetch with fully documented required parameters, but leaves return-shape expectations to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds the concept of 'exact' URLs but does not meaningfully expand on the parameter semantics beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('batch fetch'), a specific resource ('multiple specific contacts'), and the distinguishing retrieval mechanism ('by their URLs'). This semantically separates it from sibling tools like addressbook_query or list_contacts, which are not exact-URL batch fetches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives a usage condition: 'Use when you have exact contact URLs and want to retrieve their details.' It does not mention when not to use the tool or name alternatives, but the stated trigger is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for disclosing behavioral traits. It mentions efficiency and token conservation but does not state whether the tool is read-only, what side effects (if any) exist, how results are returned, or any rate limits. The read-only nature and return format are left implicit, which is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two short sentences that clearly state purpose, provide usage preference, and give a specific parameter tip. There is no redundancy or unnecessary detail, and it is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and no output schema, the description lacks critical context about what the function returns (e.g., list of todos, pagination info, or just summaries). It also omits any mention of error handling, default behaviors, or edge cases. The description is too brief to be considered complete for an agent to invoke correctly without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions, and the tool description adds a hint about calendar_url (omitting it searches all calendars) and hints at token conservation implying limit usage. However, beyond that, the description does not provide additional semantic meaning for the other parameters beyond what the schema already explains. Since schema coverage is 100%, the baseline is 3, and the description contributes minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search and filter todos efficiently', naming the specific verb (search/filter), resource (todos), and scope (efficiently). It also hints at a preferred alternative to list_todos, which reinforces the intended use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to 'Use instead of list_todos to conserve tokens', giving a direct condition for when to choose this tool over a sibling. It also clarifies usage of calendar_url by stating that omitting it searches across all calendars, providing practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. It discloses the large-result-volume risk, which is useful. However, the claim 'without filtering' directly contradicts the presence of optional time_range_start/end parameters, which by definition would filter the results. This ambiguity fails to clearly explain the effect of those parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no fluff. The critical warning is front-loaded, and the alternative is named explicitly. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Good for a simple list tool: warns about volume, singles out calendar_query, and implies single-calendar scope. However, the conflicting statement about filtering leaves the time_range parameters' behavior unclear, and there is no mention of return format or pagination, which is a gap worth noting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already details both time range parameters. The description adds no additional insight about them, and the 'without filtering' phrasing actually muddies their meaning. Baseline 3 is appropriate given the schema covers everything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) + resource (ALL events from a single calendar) + scope (without filtering). It clearly distinguishes from the sibling calendar_query, which is mentioned as the alternative for filtered searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns against using this tool for filtered searches and names the alternative (calendar_query) with its advantage (multi-calendar search). Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only warns about formatting complexity. It does not state that the vCard is replaced wholesale, that a stale vcard_etag will cause the update to fail, or what side effects occur on success. These are material behaviors for a destructive-looking mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the ADVANCED warning and primary action front-loaded. The alternative is named in the second sentence and the exact selection condition in the third, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The full schema covers all 3 required parameters, and usage routing is excellent. However, the absence of annotations leaves key runtime behavior (etag conflict handling, overwrite semantics, failure modes) undocumented, which an agent needs for a raw, advanced update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents vcard_url, vcard_etag, and updated_vcard_data. The description adds no parameter-specific semantics beyond emphasizing that the vCard data must be complete, which the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update contact') with a distinctive scope: raw vCard data. It also explicitly contrasts with update_contact for simple field updates, so an agent can tell the siblings apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Directs agents to use update_contact for simple field updates (name, email, phone) and reserves this tool for complete pre-formatted vCard data or advanced properties. This is an explicit when-to-use and when-not-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It conveys a read-style batch fetch operation through 'fetch' and 'retrieve', implying no destructive side effects. However, it does not address behaviors like partial failure, invalid URL handling, or whether the operation is strictly read-only beyond inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The first sentence states purpose, and the second gives usage context. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter batch fetch tool, the description covers inputs and intended use well. There is no output schema, so the return format is unknown, but 'retrieve their details' gives a sufficient expectation of the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already adequately documented. The tool description adds no new parameter-level guidance, such as URL formats or how calendar_url interacts with event_urls, but the schema already carries the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise operation: batch-fetching multiple calendar events using exact event URLs. This clearly separates it from tools like calendar_query or list_events, which find or search for events rather than fetching known URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is explicit about when to use the tool: 'Use when you have exact event URLs and want to retrieve their details.' It does not explicitly name alternatives or state when not to use it, but the usage condition is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral transparency burden. It clearly states the tool creates a new todo/task, which is a write operation. However, it does not disclose any side effects beyond creation (e.g., whether it modifies other resources or returns a confirmation). For a create operation, the primary behavior is obvious, but the absence of any caveats or prerequisites (like needing to specify a calendar_url) is a minor gap. The schema covers required fields, but the description could have mentioned that a calendar_url is essential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of two clear, concise sentences. The first states the primary purpose, and the second clarifies the use case without extraneous detail. It is front-loaded with the core action and resource, making it easy for an agent to quickly assess relevance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 7 parameters all documented in the schema, the description provides sufficient context for an agent to decide to use it. It mentions the optional fields and the use case. The only minor omission is explicit mention of the required fields (calendar_url and summary), but these are clearly marked in the schema. The description is adequate for guiding invocation without unnecessary verbosity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters have descriptions. The description adds value by pointing out the optional nature of 'due date, priority, and status', which reiterates the schema. However, it does not add any deeper context or meaning beyond what the schema already states (e.g., how priority mapping works or date format specifics). Baseline of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'a new todo/task in a calendar'. It lists the typical use cases (task, todo item, reminder) and mentions optional fields (due date, priority, status). This distinguishes it from related tools like create_event (which handles calendar events) and update_todo (which modifies existing todos).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool: 'Use this when user wants to add a task, todo item, or reminder'. This gives a clear trigger condition. It doesn't explicitly mention when not to use it or name alternatives, but the context of sibling tools (e.g., create_event for non-todo items) makes the distinction clear enough. Slight deduction for not explicitly naming negative cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the tool updates existing calendar properties but does not disclose side effects such as authorization requirements, whether the update is partial or full replacement, or what happens if the calendar does not exist. Since there are no annotations, the description shoulders the burden of transparency, yet it omits these behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences that list the affected properties and provide concrete usage examples. It is well-structured and free of unnecessary detail, making it easy for an agent to quickly grasp the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the 'what' and 'when', it lacks information about the return value or success/failure behavior. Since there is no output schema, the agent is left guessing what the function returns (e.g., updated calendar object, status code, or nothing). This omission reduces its completeness in a real-world invocation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a description for each parameter (e.g., 'Optional: New calendar color in hex format'), achieving 100% coverage. The tool description does not add extra semantic nuance beyond restating the property names and giving usage examples, so it neither enhances nor detracts from the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Update an existing calendar's properties' and lists the specific properties (display name, description, color, timezone). It also provides example user intents ('rename calendar', 'change calendar color') that map directly to this action, distinguishing it from creation, deletion, or listing operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: 'Use this when user asks to "rename calendar", "change calendar color", or "update calendar properties"'. This provides clear guidance on when to select this function over alternatives like create_calendar, delete_calendar, or list_calendars.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It warns that manual iCal formatting is required and that it should only be used with complete data, implying a full replacement. However, it does not disclose error behavior (e.g., etag mismatch, invalid iCal) or explicitly state the update is destructive/overwriting. This is moderate coverage, but lacks detail on edge cases and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the 'ADVANCED' flag and the core purpose. It then immediately provides the usage alternative and condition. Every sentence contributes value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose and usage guidance well, but omits important context for a complex raw-update tool: it does not explain the role of the etag, what happens on conflict, or the response format. Without an output schema or annotations, the description leaves gaps that could affect correct usage, but it is not severely incomplete as it does address the primary decision to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is explained in the schema (event_url, event_etag, updated_ical_data). The tool description reinforces that the iCal must be complete and pre-formatted, but adds no new meaning beyond the schema. The baseline for high schema coverage is 3, and the description provides no extra parameter insights beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an event with raw iCal data and distinguishes itself from the simpler update_event tool. It specifies the resource (event) and the mechanism (raw iCal), and the 'ADVANCED' prefix signals its specialized nature. This fully clarifies what it does and how it differs from its sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: use update_event for simple field updates, and only use this tool when you have complete pre-formatted iCal data or need advanced iCal properties. The alternative tool is named directly, and the conditions for choosing this tool are clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It prominently warns that the action cannot be undone and states that all events will be deleted, which are the two most critical behavioral traits for a destructive operation. It does not address permissions or shared-calendar implications, but the core danger is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. It front-loads the destructive nature and warning, then provides the trigger phrases, so an agent gets the most critical information immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema and no annotations, this description is largely complete. It covers the action, irreversibility, side effects on events, and when to use it. The only minor gap is the absence of guidance on what to do for non-calendar deletion requests, but this is already handled by sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema's parameter description ('The URL of the calendar to delete (get from list_calendars)') is already helpful by pointing to the source. The tool description adds no additional parameter context beyond the schema, so per the baseline rule for high coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Permanently delete'), a specific resource ('a calendar'), and the consequence ('all its events'), clearly distinguishing it from sibling tools like delete_event or update_calendar. The scope is unambiguous and matches the tool name exactly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: when the user asks to 'delete calendar' or 'remove calendar'. However, it does not explicitly mention when not to use it or name alternatives (e.g., use delete_event for removing individual events), so it stops short of full conditional guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates that this is a read-only batch fetch operation, which is important, but it does not describe failure behavior, return format, or what happens if some URLs are invalid or missing. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action is front-loaded, and the efficiency note is directly relevant to tool selection. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only batch fetch tool, the description covers the essential invocation context: what to pass, why to use it, and when it is appropriate. It lacks detail about error handling or response shape, but the tool's simplicity and clear purpose make this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds meaning beyond the schema by emphasizing that the todo_urls must be 'exact' URLs and that the tool fetches 'specific' todos in batch. This clarifies that the parameter is not a search query and that multiple exact URLs are expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('fetch'), a resource ('todos'), and a precise mechanism ('by their URLs'). It also distinguishes the tool from list/query alternatives by emphasizing 'specific todos' and batch retrieval, so an agent can clearly understand its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage condition: use this when you have 'exact todo URLs' and want to batch-fetch multiple todos. It also notes that this is 'more efficient than fetching one by one,' which provides practical guidance, though it does not explicitly name the alternative tool to use when URLs are unavailable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It clarifies that the tool accepts plain fields and RFC 5545 properties without iCal formatting, which is useful. However, it does not mention effects such as whether fields are replaced, how partial updates behave, or any conflict/error behavior, though the etag schema does cover conflict detection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loads the key differentiator ('PREFERRED' and 'without iCal formatting') and then compresses the supported field list efficiently. There is no filler or repetition of schema boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with nested fields and no output schema, the description covers the supported properties, formats, and scope well. It could more explicitly direct agents to update_todo_raw for raw formatting and describe the response, but the schema covers parameter details and the description is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all parameters with 100% coverage, so the baseline is 3. The description adds value by giving human-readable aliases (SUMMARY = title, DESCRIPTION = details), listing valid STATUS values, priority range, and explicitly noting support for custom X-* properties, which goes beyond basic schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Update todo fields') plus a clear scope flag ('without iCal formatting'). It lists the supported properties and explicitly contrasts with the raw sibling, making it easy for an agent to distinguish update_todo from update_todo_raw.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'PREFERRED' marker and 'without iCal formatting' give clear context that this is the high-level update path and imply that update_todo_raw is for raw iCal formatting. It does not explicitly name the alternative or state when to choose raw, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It warns that raw iCal formatting is required and that only complete pre-formatted data should be used, which implies wholesale replacement of the VTODO. However, it does not disclose consequences like what happens to fields omitted from the raw data, or how the ETag conflict failure surfaces at runtime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, every one earning its place: the ADVANCED warning, the manual-formatting requirement, the explicit sibling routing, and the precise conditions for invocation. No fluff, no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex raw-data mutation tool with no output schema and no annotations, the description gives enough to call it safely: what it does, when to avoid it, and when it's the right choice. The one gap is return-value/conflict behavior, but the schema already flags ETag conflict detection, and the explicit 'update_todo for simple cases' warning mitigates the main misuse risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters (todo_url, todo_etag with conflict-detection purpose, updated_ical_data). The description adds only loose alignment between 'complete pre-formatted VTODO data' and the updated_ical_data parameter, which is helpful but not necessary given the schema already describes it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update todo with raw VTODO iCal data') and immediately distinguishes itself from update_todo, which the agent can see is a sibling. The 'ADVANCED' prefix also sets clear expectations that this is the low-level variant of a simple operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative: 'use update_todo instead for simple field updates (summary, description, status)', and gives the exact conditions for choosing this tool: 'only use this if you have complete pre-formatted VTODO data or need to update advanced iCal properties.' This is textbook when/when-not guidance, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states that it lists all available calendars and implies the output contains URLs, which is helpful. However, it does not disclose behavioral nuances like whether it filters by authenticated user, handles pagination, or makes any assumptions about 'available'. This is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place. The first states the action and scope, the second provides the practical purpose. No filler, front-loaded with the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list operation with no output schema, the description is complete. It tells an agent what it will receive (calendar URLs) and why to use it, which is all that's necessary to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, matching the baseline of 4. The description doesn't need to add parameter details since none exist, and it correctly doesn't attempt to fabricate any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names the verb 'List', the resource 'all available calendars', and the source 'from the CalDAV server', which is specific and unambiguous. It clearly differentiates from sibling tools like list_events and list_contacts by focusing on calendars, and the name itself aligns perfectly with the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use this to get calendar URLs needed for other operations' provides an explicit use case, telling an agent why and when to invoke this tool. It does not explicitly name alternatives or provide exclusion criteria (e.g., 'when you already have calendar IDs'), but the context is clear enough for a simple list operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does the work: it discloses that searching without addressbook_url automatically spans all addressbooks, and the sibling routing implies this is the filtered-read counterpart to list_contacts. It doesn't spell out read-only status or result limits, but the query verb and 'search/filter' framing make the operation clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence plus target examples and routing. No filler; the '⭐ PREFERRED' flag, use-cases, alternative tool, and default addressbook behavior all earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple filtered-read tool with fully documented parameters and a clear routing rule, this is nearly complete. It lacks explicit return-format details, but there is no output schema and the limit parameter already mentions alphabetical order and the total-match count, so the main remaining gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter already has a meaningful description and the baseline is 3. The tool description reinforces the filter requirement and adds the 'omit addressbook_url to search ALL' guidance, but that guidance largely mirrors the schema's own parameter description rather than adding new per-parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search and filter contacts efficiently (name, email, organization)' — a specific verb and resource with the exact filter dimensions. It also names the sibling it replaces ('Use instead of list_contacts when ANY filter is specified'), so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete query phrasings ('find contacts with...', 'search for email...', 'contacts at company...') and explicitly routes to list_contacts when no filter is needed. It also instructs when to provide or omit addressbook_url, leaving no ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It discloses the efficient-search behavior, the performance reason, and the automatic cross-calendar scope. It does not explicitly state read-only or describe the result shape, but 'search and filter' plus the schema's note that the response states match counts makes the behavior clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the 'PREFERRED' signal. Every sentence earns its place: one gives the action, one gives the alternative to avoid, and one gives the default-scope behavior. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a query tool with six optional parameters and no output schema, the description plus the rich parameter documentation gives enough to call it correctly. It clearly routes away from list_events, explains the all-calendars default, and the schema covers filter usage. The main omission is an explicit statement of what the returned events look like, but this is not critical for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all six parameters in detail, including examples, defaults, and constraints, so schema coverage is 100%. The top-level description adds cross-calendar context but does not need to repeat parameter semantics; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Search and filter calendar events') and a specific resource, while immediately differentiating itself from list_events. The 'PREFERRED' marker and cross-calendar note make the tool's role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent to prefer this over list_events to avoid loading thousands of entries. It also gives a concrete rule for calendar_url: omit it to search across all calendars, and the schema reinforces the routing by saying not to call list_calendars first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must disclose all behavioral traits. It explicitly states 'cannot be undone' and 'removed from the server immediately', which are critical. It also explains the etag's role in conflict detection. This is thorough, though it omits potential permission requirements or the exact nature of error handling, keeping it just below a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four well-structured sentences. The irreversibility warning is front-loaded, followed by usage guidance and parameter sourcing. Every sentence adds essential information with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation, the description covers the critical aspects: irreversibility, user authorization, how to retrieve required parameters, and conflict detection via etag. No output schema exists, so the lack of return-format details is acceptable. A small gap is the absence of mention of what happens on etag mismatch, but this is likely handled by error messages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for both parameters (coverage 100%), including where to obtain them. The description adds minimal new semantic value beyond restating the source, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb 'delete' with the resource 'calendar event', and includes the key qualifier 'permanently' plus a warning. This clearly distinguishes it from update_event_raw, create_event, and other sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use only when the user explicitly requests deletion, and directs obtaining the event URL and etag from list_events or calendar_query first. This provides both a condition and a step-by-step acquisition path, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must stand alone. It clearly frames the tool as a read-only listing operation ('List all available') and indicates the return payload includes address book URLs. This is sufficient for a zero-parameter list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, first states action and scope, second states purpose. No filler or redundant elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with no output schema, the description covers what it returns (URLs) and why. It does not detail pagination or error behavior, but that is not critical for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, so there is nothing to document. The description's mention of address book URLs is the only meaningful data-related context, and nothing is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action 'List' on a clear resource 'address books' with a source 'CardDAV server'. Distinguishes from siblings like list_contacts and list_calendars by targeting the address book collection itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to use this to fetch address book URLs needed for other contact operations, establishing when to call it (before operations requiring address book identifiers). Does not explicitly contrast with alternatives like addressbook_query, but the prerequisite role is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does a good job disclosing the key behavior: returning all contacts with a warning about potentially thousands of results. However, it doesn't describe the return format or pagination, which would be useful for a 'list all' operation that could return large payloads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The primary action is stated first, followed by a clear warning and the alternative tool specification. Every word earns its place, making it highly efficient and structured for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter tool with no output schema, the description is quite complete. It covers the core behavior, the scale of results, and the alternative path for filtered queries. It could elaborate on return values or error cases, but these are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents the only parameter (addressbook_url). The description doesn't add parameter-specific syntax or format details beyond what the schema provides, but the baseline of 3 is appropriate since the schema does the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the exact purpose: 'List ALL contacts from an address book without filtering.' The verb 'list,' the resource 'contacts,' and the scope 'ALL' are explicit, and it distinguishes itself from the sibling addressbook_query by warning users to use that tool instead when searching. This differentiates it effectively from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative tool (addressbook_query), the condition for the alternative (searching by name, email, or organization), and the rationale (saving tokens). This directly tells the agent when to use this tool versus when to use a sibling, with the unfiltered 'list all' case clearly implied as the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It meaningfully discloses a key behavior: this tool returns every todo with no filtering, and frames it as a warning. It does not mention pagination, auth, or response format, but for an unfiltered read/list operation the core behavior is clearly exposed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the key behavior ('List ALL todos/tasks'), and then adds a targeted warning plus alternative. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter list operation, the description is complete: it states what is returned, the required input context, and the alternative tool for filtered needs. The absence of an output schema does not leave a serious gap for this simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes the only parameter, calendar_url, as 'The URL of the calendar containing todos', so schema coverage is 100%. The description does not add any parameter-specific detail beyond confirming the calendar source, but none is needed with full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('List ALL todos/tasks') and intentionally distinguishes itself from the filtered search via the warning. The use of 'ALL' makes the tool's scope unmistakable and differentiates it from todo_query at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when not to use this tool: whenever filtering is needed. It names the alternative tool (todo_query) and even lists the filter types (status, summary, or due date), so an agent receives direct routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool updates events (mutation), explains the date format inference (datetime vs bare date), notes that all-day end dates are exclusive, and states that property parameters like 'VALUE=DATE' are not accepted and values must not contain line breaks. This is substantial behavioral disclosure, though it doesn't mention conflict detection behavior beyond the etag requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It front-loads the key guidance ('PREFERRED: Update event fields without iCal formatting') and then provides a clear breakdown of what to use for dates vs other fields. Every sentence adds value, and the structure makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, nested fields object, date format nuances), the description is quite complete. It covers the main use cases, the date handling rules, and the constraints on fields. It doesn't explicitly mention return values, but there's no output schema, so that's not a major gap. It could mention what happens if the etag is stale, but the schema already notes it's for conflict detection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by explaining the relationship between start_date/end_date/all_day and the fields object, clarifying that dates are handled separately from other properties. It also explains the all-day inference rule and the exclusive end date convention, which goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: updating event fields without iCal formatting. It specifies the exact fields to use (start_date/end_date/all_day for dates, fields for everything else) and lists common properties (SUMMARY, DESCRIPTION, LOCATION, STATUS) plus custom X-* properties. This distinguishes it from siblings like update_event_raw, which likely handles raw iCal formatting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'PREFERRED' and contrasts with update_event_raw, implying when to use this tool vs the raw alternative. It provides clear guidance on when to use start_date/end_date/all_day vs fields, and even notes that all_day is only needed to state intent explicitly. This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure: the action is irreversible ('cannot be undone'), executes immediately on the server, and uses the etag for conflict detection. This is exactly the safety-relevant behavior an agent needs before invoking a delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the warning front-loaded, followed by the user-consent gate and a concise prerequisite/rationale. Every sentence earns its place and no information is repeated unnecessarily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 2-parameter tool with no annotations and no output schema, this description covers the safety profile, param source, ordering, and concurrency behavior. An agent has everything it needs to call the tool correctly and know what will happen.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both params with source and purpose. The description reinforces the same workflow but adds little semantic meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Permanently delete a contact (vCard) from the address book.' It clearly distinguishes this from update_contact and create_contact by emphasizing permanent removal and immediate server-side deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage condition: 'Use only when the user explicitly requests deletion,' which doubles as a when-not guard for a destructive action. It also states the required prerequisite workflow: obtain the vCard URL and etag from list_contacts or addressbook_query before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden — and it fully delivers: irreversible deletion ('cannot be undone'), immediate server-side execution ('removed from the server immediately'), and safety gating ('only when the user explicitly requests'). It also discloses the etag conflict-detection behavior, giving the agent insight into a non-obvious constraint not present anywhere else.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Tight three-sentence description, front-loaded with the most important facts: what the tool does and that it is irreversible. Every subsequent statement earns its place, covering when to invoke the tool and the prereq/conflict semantics. No filler or repetition of already-structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema tool with two required parameters, everything an agent needs is present: the action, irreversibility trigger, sourcing workflow, and the conflict-check precondition. The minor absence of named alternatives is insufficient to make the agent misuse this tool, and the safety-critical aspects are fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3 — the schema already documents both parameters well. The description adds operational meaning beyond the schema by telling the agent how to obtain valid values ('from list_todos or todo_query first') and by explaining why the etag parameter matters (conflict detection), which reinforces conditional requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('delete') and resource ('todo/task from the calendar'), making the operation unambiguous. It naturally differentiates from sibling tools targeting other resources (delete_event, delete_contact, delete_calendar) and from state-changing todo tools like create_todo and update_todo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit trigger condition — 'Use only when the user explicitly requests deletion' — which guards against speculative destructive calls. It also prescribes the correct sequence: obtain todo_url and etag from list_todos or todo_query first. However, it does not name an alternative tool (e.g., update_todo) for cases where the user wants to modify rather than delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses important behavioral traits: ignores TRANSPARENT events (doesn't block time), ignores cancelled events, expands recurring events, and (implicitly) returns busy slots rather than event details unless include_event_details is set. This goes beyond the schema and helps the agent understand the tool's filtering logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose and examples, and every sentence earns its place. It covers usage, scope, and behavioral nuances in 3 sentences without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (4 params, no output schema), the description is complete: it explains when to use, the default scope, how public (transparent) and cancelled events are handled, and how recurring events are expanded. The only minor omission is the return format (likely a list of slots), but that is inferable and not critical for calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds value by explaining the default behavior of 'calendar_url' (omit to consider every calendar) and 'include_event_details' (off by default because the answer is slots). This enrichment clarifies the purpose of these optional parameters beyond their type descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: finding free/busy time in a date range, with specific example queries. It distinguishes itself from siblings like calendar_query and list_events by focusing on availability. The description's verb 'Find' and resource 'free and busy time' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions when to use this tool (e.g., 'when am I free?', 'am I available Tuesday afternoon?') and provides guidance on alternatives: it searches all calendars unless one is given, implying you might use list_calendars first to get a specific calendar. It also differentiates from list_events by noting it ignores transparent and cancelled events, which is a key distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PhilflowIO/dav-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server