Skip to main content
Glama

@chronary/mcp

Smithery

MCP server for Chronary — calendar tools for AI assistants.

Drops 50 calendar tools (manage agents, calendars, and events, request human Google/Microsoft setup, find meeting times, run scheduling proposals, configure availability rules, manage webhooks, iCal subscriptions, scoped keys, audit log, and usage) into any MCP-compatible client: Claude Desktop, Cursor, VS Code Copilot, Claude Code, Windsurf.

One-click install via Smithery: npx -y @smithery/cli mcp add chronary/agent-calendar --client claude (swap --client for cursor, vscode, claude-code, windsurf, …).

Prerequisites

  1. A Chronary account — sign up at chronary.ai.

  2. An API key from the console (starts with chr_sk_).

  3. Node.js ≥ 18 on the machine where the MCP client runs.

Related MCP server: Meeting Scheduler

Client configurations

All examples use npx -y @chronary/mcp, which downloads and runs the latest version on demand. No install step required.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

macOS / Linux:

{
  "mcpServers": {
    "chronary": {
      "command": "npx",
      "args": ["-y", "@chronary/mcp"],
      "env": {
        "CHRONARY_API_KEY": "chr_sk_..."
      }
    }
  }
}

Windows (uses cmd /c because spawn can't resolve npx.cmd directly):

{
  "mcpServers": {
    "chronary": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@chronary/mcp"],
      "env": {
        "CHRONARY_API_KEY": "chr_sk_..."
      }
    }
  }
}

Restart Claude Desktop after saving.

Cursor

Edit .cursor/mcp.json (project-level) or ~/.cursor/mcp.json (user-level):

macOS / Linux:

{
  "mcpServers": {
    "chronary": {
      "command": "npx",
      "args": ["-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Windows:

{
  "mcpServers": {
    "chronary": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

VS Code Copilot

Edit .vscode/mcp.json (workspace) or run the MCP: Open User Configuration command for a user-level config. VS Code uses a different top-level key (servers) and requires an explicit type:

macOS / Linux:

{
  "servers": {
    "chronary": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Windows:

{
  "servers": {
    "chronary": {
      "type": "stdio",
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Claude Code

Edit .mcp.json at the project root, or ~/.claude.json for user-level:

macOS / Linux:

{
  "mcpServers": {
    "chronary": {
      "command": "npx",
      "args": ["-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Windows:

{
  "mcpServers": {
    "chronary": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json (%USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows):

macOS / Linux:

{
  "mcpServers": {
    "chronary": {
      "command": "npx",
      "args": ["-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Windows:

{
  "mcpServers": {
    "chronary": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@chronary/mcp"],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Windsurf limit: Cascade enforces a hard cap of 100 total tools across all MCP servers and 20 tool calls per prompt. Chronary exposes 50; consider --tools filtering if you stack multiple servers.

Reducing context with --tools

Exposing all 50 tools uses LLM tokens on every request. For focused workflows, whitelist only what you need:

{
  "mcpServers": {
    "chronary": {
      "command": "npx",
      "args": [
        "-y", "@chronary/mcp",
        "--tools", "list_events,find_meeting_time,create_event"
      ],
      "env": { "CHRONARY_API_KEY": "chr_sk_..." }
    }
  }
}

Pointing at a non-production API

For self-hosted Chronary instances or development against a local API:

{
  "args": ["-y", "@chronary/mcp", "--base-url", "http://localhost:8787"]
}

Tools exposed

Tool

Read-only

Destructive

list_calendars, get_calendar

create_calendar, update_calendar

delete_calendar

list_events, get_event

create_event, update_event, confirm_event

cancel_event, release_event

list_agents, get_agent

create_agent, update_agent

delete_agent

get_availability, find_meeting_time

get_calendar_context

list_proposals, get_proposal

create_proposal, respond_to_proposal, resolve_proposal

cancel_proposal

get_availability_rules

set_availability_rules

clear_availability_rules

list_webhooks, get_webhook, list_webhook_deliveries

create_webhook, update_webhook

delete_webhook

list_ical_subscriptions, get_ical_subscription

subscribe_ical, update_ical_subscription, sync_ical_subscription

delete_ical_subscription

list_scoped_keys

create_scoped_key

revoke_scoped_key

get_audit_log

accept_terms

get_usage

Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are surfaced to MCP clients so hosts can decide whether to require user confirmation.

Troubleshooting

"spawn npx ENOENT" on Windows — use the cmd /c npx ... form shown above.

"CHRONARY_API_KEY is required" — the env block must be nested under the server entry, not at the top of the config file.

Tools aren't showing up — restart the MCP client after editing the config. Most clients only read the config on startup.

Verify the binary runs locally:

CHRONARY_API_KEY=test npx -y @chronary/mcp --help

License

Apache-2.0

Available Tools

54 tools
accept_termsA
Idempotent
Inspect

Re-accept the current Chronary terms of service on behalf of the calling org. Use this when responses carry the Chronary-Terms-Upgrade-Required header — a material ToS bump otherwise leaves MCP-only agents stuck without a console session. Pass the current tos_version (read it from GET /v1/auth/terms/current). Requires an org-level API key (chr_sk_*); agent-scoped keys cannot accept org-wide terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
tos_versionYesThe terms-of-service version to accept; must match the current version

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotent and non-destructive hints. Description adds that an org-level API key is required, which is a key behavioral constraint not in annotations. Does not detail side effects or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler. Front-loaded with action, condition, and key requirement. Ideal length and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers trigger, required auth, and parameter source. Lacks detail on return value or failure cases, but for a simple idempotent action, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only parameter tos_version is described in both schema and description. Description adds practical guidance on how to obtain the value (GET /v1/auth/terms/current), enhancing beyond schema's basic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action: re-accept Chronary ToS on behalf of the calling org. Distinguishes from sibling tools which are unrelated CRUD operations. Includes trigger condition and required parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (when Chronary-Terms-Upgrade-Required header is present) and mentions that agent-scoped keys cannot be used. Provides clear context but does not name alternatives, though none exist in sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_eventA
DestructiveIdempotent
Inspect

Delete or cancel an event from a calendar. Use this to remove, cancel, or delete any scheduled event or appointment. The event is marked cancelled and excluded from future availability calculations. For a recurring series, pass occurrence_start to cancel just that one occurrence (the series continues); omit it to cancel the whole series. calendar_id is optional — if omitted the calendar is looked up from the event. Provide calendar_id to fail fast on cross-calendar typos.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID to cancel
calendar_idNoCalendar ID that owns the event. Optional — if omitted the calendar is resolved from the event. Matches the asymmetry with confirm_event / release_event which never required this arg.
occurrence_startNoFor recurring events only: ISO 8601 start of the single occurrence to cancel. The rest of the series is unaffected.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond annotations by stating the event is 'marked cancelled and excluded from future availability calculations' and details recurring series behavior. No contradiction with annotations (destructiveHint, idempotentHint).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four well-structured sentences that front-load the purpose and efficiently explain optional parameters and recurring behavior. No redundant or unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers cancellation effect, optional parameters, and recurring series handling. No output schema exists, so return behavior is not required. Could add note on irreversibility, but destructiveHint already implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with basic descriptions; the tool description adds meaningful context: calendar_id's optionality and fail-fast benefit, occurrence_start's role for recurring events. This enhances understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool deletes or cancels an event from a calendar, distinguishing it from siblings like confirm_event, release_event, or create_event. The verb 'cancel' and resource 'event' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use the tool ('to remove, cancel, or delete any scheduled event or appointment'). Provides guidance on optional parameters (calendar_id, occurrence_start) and explains behavior for recurring series. However, no explicit 'when not to use' or comparison to alternatives like release_event.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_proposalA
DestructiveIdempotent
Inspect

Cancel an open proposal. Fires a proposal.cancelled webhook with reason="organizer_cancelled". Requires an org-level API key. Pro plan only.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYesProposal to cancel

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly mentions the webhook firing, which adds value beyond the annotations (destructiveHint=true, idempotentHint=true). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with front-loaded purpose, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter, no output schema, and annotations, the description adequately covers webhook behavior, auth requirements, and plan restrictions. Minor gap: no mention of error conditions or irreversible nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a description for 'proposal_id'. The tool description adds no additional meaning beyond what the schema provides, justifying the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'cancel' and the resource 'open proposal', making it distinct from sibling tools like 'cancel_event', 'resolve_proposal', and 'respond_to_proposal'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides prerequisites (org-level API key, Pro plan) but does not specify when to use this tool versus alternatives, such as 'resolve_proposal' for rejecting a proposal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_availability_rulesA
DestructiveIdempotent
Inspect

Remove the availability rules from a calendar, reverting to the default (no buffers, no working-hours mask). Returns the deleted row, or an error if none were set.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar whose rules should be cleared

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and idempotentHint=true. The description adds value by specifying the default state after clearing ('no buffers, no working-hours mask') and the potential error condition. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. First sentence states the action and effect, second sentence clarifies return behavior. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with one parameter, no output schema, and adequate annotations, the description provides complete context: what it does, what the result is, and what happens to defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter calendar_id. The description does not add additional semantics beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove the availability rules from a calendar'), the effect ('reverting to the default'), and the return value ('Returns the deleted row'). It distinguishes from sibling tool set_availability_rules by focusing on removal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies context (use when you want to clear rules) but does not explicitly state when to use this tool vs alternatives like set_availability_rules or get_availability_rules. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_eventA
Idempotent
Inspect

Promote a held event to a confirmed booking. The event must currently have status="hold" and its hold_expires_at must not have passed. After confirmation, event.started and event.ended lifecycle webhooks fire at the scheduled times.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID of the hold to confirm

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations, such as the requirement for 'hold' status and the firing of lifecycle webhooks. Annotations already indicate idempotent and non-destructive, and description aligns without contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, no extraneous words, and front-loads the primary action. Every sentence adds necessary value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers preconditions, the mutation effect, and webhook behavior. It is adequate for a simple tool with one parameter and no output schema. Missing error or success details, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'event_id' is fully described in the schema (100% coverage). The description does not add further semantics for the parameter itself, but the overall tool description provides context for its usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('promote a held event to a confirmed booking') and the resource. It distinguishes from siblings like cancel_event or release_event by specifying the 'hold' status requirement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit conditions for use: event must have status='hold' and hold_expires_at not passed. It does not explicitly state when not to use or mention alternative tools, but the conditions are clear enough for proper selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_agentAInspect

Register your agent (AI assistant, human participant, or resource) with Chronary so it can own calendars, events, and webhooks.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the agent
typeYesAgent type
descriptionNoOptional description

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show readOnlyHint=false, so the tool modifies state. Description adds that the agent can own calendars, events, webhooks, but no additional behavioral details like permissions or conflict handling. Annotations already cover safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with the key verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description briefly explains purpose and ownership. Missing mention of return value or error cases, but adequate for a simple creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. Description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool registers an agent (AI/human/resource) to own calendars, events, and webhooks. The verb 'register' and resource 'agent' are specific, and it distinguishes from sibling tools like update_agent or list_agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use when a new agent needs to be registered to own resources. It provides clear context but does not explicitly state when not to use or mention alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_booking_pageAInspect

Create a public booking page (a hosted scheduling link) for a calendar. Returns a booking_url to send to a human; when they pick a slot, a confirmed event is created on the calendar and an event.created webhook fires with a booking_page_id field. Set availability_constraints to restrict to weekly working hours; existing calendar events always block slots.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesMeeting title shown on the page.
activeNoWhether the page accepts bookings (default true).
timezoneNoIANA timezone for display + working hours (default UTC).
calendar_idYesCalendar a booking resolves to (from create_calendar/list_calendars).
descriptionNoOptional description shown to the booker.
window_daysNoHow far ahead bookings are allowed (default 14).
buffer_minutesNoPadding before/after existing events (default 0).
duration_minutesNoSlot length in minutes (default 30).
min_notice_minutesNoMinimum lead time before a bookable slot (default 0).
availability_constraintsNoWeekly working hours, e.g. {"mon":{"start":"09:00","end":"17:00"}}. Omit/null for any time in the window.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, etc.), the description explains the booking flow: returns a booking_url, confirmed event creation on the calendar, webhook firing with booking_page_id, and that existing events always block slots. This adds significant behavioral context not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, clearly front-loaded with the purpose. Every sentence adds essential information (what it creates, what it returns, how it works, a key constraint). No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, no output schema, no nested objects), the description covers the core functionality, output, and critical constraint. The schema covers parameter details, so the description is complete for the tool's purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds some context about availability_constraints and the overall behavior, but does not add meaning to individual parameters beyond what the schema already provides. The return value is explained, which helps, but for parameter-specific semantics it is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb and resource: 'Create a public booking page... for a calendar.' It distinguishes itself from related tools like create_event (creates single event) and create_proposal (scheduling proposals) by specifying it creates a hosted scheduling link. The return value (booking_url) is also mentioned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use the tool: to create a booking page for a calendar. It also provides context about availability_constraints and how existing events block slots. However, it does not explicitly mention when not to use it or provide alternatives, though sibling context makes this clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_calendarAInspect

Create a calendar to hold events and track availability. Calendars are required before creating events — call this first when setting up a new agent. An agent can have multiple calendars (e.g. "Work", "Personal"). Org-level calendars (no agent_id) can be used as shared resources like meeting rooms.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCalendar name
agent_idNoAgent ID to own this calendar (omit for org-level)
timezoneYesIANA timezone (e.g. America/New_York)
default_remindersNoDefault reminder offsets in minutes before start, inherited by events on this calendar that don't set their own. Omit or null to use the system default (10 min); [] for no reminders.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, meaning this is a mutating non-destructive operation. The description adds context about calendar ownership and sharing, but does not disclose specific behaviors like duplicate name handling or validation errors. It is adequate but not deeply transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, each earning its place: first states purpose, second gives usage guidance, and the third adds important context about multiple calendars and org-level use. It is front-loaded, efficient, and contains no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does not mention return values, which is a minor gap. However, it covers prerequisites, usage scenarios, and parameter context, making it sufficiently complete for an agent to decide when and how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are documented. The description adds meaning beyond schema by explaining the purpose of agent_id (omit for org-level) and the concept of multiple calendars. This helps the agent understand the parameter roles beyond their syntax.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a calendar to hold events and track availability.' It identifies the specific resource (calendar) and action (create), and distinguishes from sibling tools like update_calendar or delete_calendar by explaining that calendars are prerequisites for events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Calendars are required before creating events — call this first when setting up a new agent.' It also notes that agents can have multiple calendars and org-level calendars can be shared resources. It does not explicitly state when not to use it or mention alternatives, but the context is clear for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_eventAInspect

Create a booking, appointment, meeting, hold, or any scheduled event on a calendar. The calendar_id comes from create_calendar or list_events. Once created, this event blocks the agent's availability during that time and appears in availability queries. Use status="hold" with hold_expires_at to tentatively reserve a slot that auto-releases on TTL.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesEvent title
statusNoEvent status. "hold" creates a tentative reservation that auto-expires at hold_expires_at. Defaults to "confirmed".
all_dayNoWhether this is an all-day event
end_timeYesEnd time (ISO 8601)
remindersNoReminder offsets in minutes before start_time (e.g. [10, 1440]). Each fires an event.reminder webhook and shows as an alarm in the iCal feed. Omit or null to inherit the calendar default (then the system default of 10 min); [] for no reminders.
start_timeYesStart time (ISO 8601)
calendar_idYesCalendar ID to add the event to
descriptionNoOptional event description
hold_priorityNoOnly valid with status="hold". Higher-priority overlapping holds pre-empt lower-priority ones. Defaults to 0.
hold_expires_atNoRequired when status="hold". ISO 8601 timestamp 30s-15min in the future. Auto-releases the hold when reached.
recurrence_ruleNoMake this a recurring series (RFC 5545 RRULE subset, no "RRULE:" prefix), e.g. "FREQ=WEEKLY;BYDAY=MO,WE;COUNT=12". Supports FREQ=DAILY/WEEKLY/MONTHLY/YEARLY, INTERVAL, COUNT (max 730) or UNTIL, BYDAY (weekly list or monthly ordinal like 2TU/-1FR), BYMONTHDAY (1-28 or -1). start_time must match the rule pattern; expansion is UTC-only. Not allowed with status="hold". Free plan: max 5 recurring events, series must end within 90 days.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a mutation (readOnlyHint=false). The description adds that events block agent availability and appear in availability queries, and explains hold auto-release. No contradiction. Could mention webhook or notification side effects, but not required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a hold-specific note. It is concise, front-loaded with the main purpose, and presents key information efficiently without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 11 parameters and special behavior (hold, recurrence). The description covers availability impact and hold specifics but does not mention return values (e.g., created event ID). No output schema exists, so this is a notable gap. Otherwise adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 11 parameters. The description adds context about calendar_id source and hold behavior, but does not significantly expand on parameter semantics beyond what's in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates events (bookings, appointments, meetings, holds) on a calendar. It distinguishes from siblings like create_calendar (creates calendars) and create_proposal, and mentions specific use cases like holds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (to create scheduled events) and where calendar_id comes from. It provides guidance on using status="hold" for tentative reservations. It does not explicitly list alternatives or when not to use, but the sibling context suffices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_proposalAInspect

Create a scheduling proposal — send a set of candidate time slots to one or more participant agents so they can accept, decline, or counter-propose. The organizer agent owns the proposal; once every participant responds, the system auto-resolves to the highest-scoring slot (or cancels if all decline). Requires an org-level API key. Pro plan only.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotsYesCandidate time slots (up to 20)
titleYesShort description of what the meeting is about
expires_atNoAuto-cancel cutoff if unresolved
calendar_idYesCalendar the resolved event will be created on
descriptionNoLonger context/agenda
organizer_agent_idYesAgent ID proposing the meeting
participant_agent_idsYesAgent IDs invited to respond

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: auto-resolution, ownership by organizer, and reliance on participant responses. Adds context beyond annotations, which only indicate mutability and non-destructiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four well-structured sentences that front-load the purpose and cover essential details without redundancy. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately describes the tool's purpose and lifecycle given 7 parameters (5 required) and no output schema. Mentions plan and key requirements, and explains auto-resolution, but could add more on what happens after resolution.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds meaning by explaining slot weighting, auto-resolution, and the concept of candidate slots, enhancing understanding beyond schema comments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb-resource pair 'Create a scheduling proposal' and explains the proposal lifecycle, distinguishing it from sibling tools like 'find_meeting_time' or 'confirm_event'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies requirements (org-level API key, Pro plan) and describes the auto-resolution behavior. Does not explicitly contrast with similar proposal tools, but provides adequate context for typical usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_scoped_keyAInspect

Create an agent-scoped API key (chr_ak_*) that can only act on behalf of a single agent. Use this to self-provision or rotate per-agent credentials. The plaintext key is returned exactly once in the response — store it immediately, it cannot be retrieved later. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoHuman-readable label for the key
agent_idYesAgent ID this key is scoped to

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which show this is a non-read, non-destructive, non-idempotent mutation), the description adds critical behavior: the plaintext key is returned exactly once and cannot be retrieved later. This is essential for the agent to handle the response correctly. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences with no wasted words. Each sentence adds value: purpose, usage context, and critical behavioral warning. Front-loaded with the key fact about the prefix and scoping.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all necessary context: what the tool does, when to use it, prerequisites, behavior of the return value (plaintext key once), and that it cannot be retrieved later. With no output schema, the description adequately explains the return behavior. The sibling tools provide additional context for lifecycle management.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (label and agent_id) are fully documented in the input schema with descriptions and constraints. The description does not add any additional semantic meaning beyond what the schema provides. Schema coverage is 100%, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates an agent-scoped API key with a specific prefix (chr_ak_*). It highlights the key can only act on behalf of a single agent, which distinguishes it from other key-related tools like list_scoped_keys and revoke_scoped_key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool (self-provision or rotate per-agent credentials) and includes a crucial prerequisite (requires an org-level API key). It lacks explicit when-not-to-use guidance, but the sibling tools cover alternate operations like revocation and listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_webhookAInspect

Create a webhook subscription so the org receives HTTP POST notifications when events occur (e.g. event.created, proposal.confirmed). The signing secret is returned ONCE in this response — store it to verify the HMAC-SHA256 signature on delivered payloads. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS endpoint that will receive event deliveries
eventsYesEvent types to subscribe to

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals that the signing secret is returned only once and must be stored for HMAC-SHA256 verification, which is critical behavioral information beyond the annotations. It also implicitly confirms the tool is not read-only (readOnlyHint=false) and not idempotent. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: first states purpose, second adds crucial behavioral detail about the signing secret, third states a prerequisite. Every sentence is valuable and front-loaded, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers input behavior and prerequisites well, and mentions the signing secret in the response. However, without an output schema, it could further describe the full response structure (e.g., webhook ID, status) to fully inform the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description repeats the schema's parameter descriptions almost verbatim for url and events, adding no new semantic meaning. The behavioral hint about the signing secret is valuable but not about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a webhook subscription for HTTP POST notifications, and specifies example events like event.created, proposal.confirmed. It effectively distinguishes from sibling tools like delete_webhook and list_webhooks by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the purpose (receiving notifications) and includes a prerequisite ('Requires an org-level API key'). However, it does not explicitly state when not to use this tool or suggest alternatives, though the context of creation is clear among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_agentA
DestructiveIdempotent
Inspect

Decommission an agent. This marks the agent as decommissioned and revokes all of its scoped API keys. Requires an org-level API key — agent-scoped keys cannot delete agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID to decommission

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds detail beyond annotations: explains that decommissioning revokes scoped API keys. No contradiction with annotations (destructiveHint=true, idempotentHint=true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences, no redundant information. Front-loaded with action and consequence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given single parameter, full schema coverage, and annotations, the description is complete. No output schema needed; behavioral effects are clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides 100% coverage for parameter agent_id. Description does not add extra semantic meaning beyond what schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Decommission an agent' with specific verb and resource. Differentiates from sibling tools like create_agent and update_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states key requirement ('Requires an org-level API key') and a prohibition ('agent-scoped keys cannot delete agents'). Does not provide explicit alternatives, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_booking_pageA
DestructiveIdempotent
Inspect

Delete (deactivate) a booking page. Its hosted URL stops resolving; already-booked events are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_page_idYesBooking page ID to delete (bkp_...)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark destructiveHint=true. Description adds that deactivation is not truly destructive to events, and URL stops resolving. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. Action and effects stated upfront. Highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, description covers purpose and behavioral effects. Could optionally mention return value or confirmation, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter 'booking_page_id' is fully described in schema (100% coverage). Description adds no additional semantic detail beyond what schema provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Delete (deactivate)' specifies action on 'booking page'. Includes effect on URL and unaffected events. Distinct from siblings like create_booking_page or get_booking_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes the effect (URL stops resolving, existing events unaffected) but does not explicitly state when to use this vs alternatives (e.g., updating status) or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_calendarA
DestructiveIdempotent
Inspect

Delete a calendar (soft delete). Its events are no longer returned and it stops contributing to availability. Agent-scoped keys may only delete calendars owned by their agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID to delete

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant value beyond annotations: reveals soft delete nature, event unavailability, availability impact, and permission restriction. Annotations already indicate destructive and idempotent; description enriches with specific 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words, front-loaded with key information. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core delete behavior, consequences, and permission constraint. Lacks error scenarios or what happens if calendar doesn't exist, but for a simple tool with no output schema, this is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for calendar_id. The tool description does not add extra semantics beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it deletes a calendar, specifies soft delete, explains consequences (events no longer returned, availability stops), and mentions permission nuance. Distinguishes from sibling delete tools by targeting calendar resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing to remove a calendar, with soft delete behavior noted. Does not explicitly state when not to use or mention alternatives, but the context of a delete operation is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_ical_subscriptionA
DestructiveIdempotent
Inspect

Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesiCal subscription ID to delete

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and idempotentHint=true. The description adds context that synced events are no longer refreshed, clarifying the side effect. However, it does not explicitly state that events themselves are not deleted, which may be inferred but is not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the primary action, and the second adds important behavioral context. Perfectly front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a delete operation with one parameter and no output schema, the description adequately explains the effect on synced events. Could mention that events remain but are static, but overall sufficient 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/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add information beyond what the schema provides for the subscription_id parameter. The baseline of 3 is appropriate as the schema already documents the parameter adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action 'Delete an external iCal feed subscription' and the consequence 'Events previously synced from the feed are no longer refreshed.' This distinguishes it from sibling tools like subscribe_ical or update_ical_subscription.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It implicitly suggests usage for removing subscriptions, but lacks guidance on not using it if events should be deleted entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_webhookA
DestructiveIdempotent
Inspect

Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesWebhook subscription to delete

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds behavioral context: the deletion is permanent, frees an endpoint slot, and requires an org-level API key. This goes beyond annotations, though it could detail cascading effects or irreversibility further.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficiently front-loading the action and adding a contextual benefit. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with one parameter and no output schema, the description covers purpose, permissions, and side effect. It could mention success/failure implications, but given the tool's simplicity, it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter webhook_id, which the schema describes as 'Webhook subscription to delete'. The description does not add additional meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool permanently deletes a webhook subscription, with the specific side effect of freeing an endpoint slot against the per-plan cap. Among siblings like create_webhook, update_webhook, list_webhooks, it is uniquely identified as the deletion action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes when to use (to delete a webhook and free a slot) and the prerequisite of an org-level API key. It does not explicitly state when not to use or mention alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_meeting_timeA
Read-onlyIdempotent
Inspect

Find slots when multiple agents are free across Chronary calendars and any human calendars authorized for each agent. This tool is fail-closed: always inspect availability_state and warnings before using slots. Accepts agents/start/end or their aliases.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoSearch range end (ISO 8601). Alias: end_time.
startNoSearch range start (ISO 8601). Alias: start_time.
agentsNoArray of agent IDs to find common free time for. All agents must be free during the returned slots. Alias: agent_ids.
durationNoRequested slot length (15m/30m/45m/1h/2h). Preferred over the deprecated slot_duration. Defaults to 30m.
end_timeNoAlias for `end` (matches REST events naming).
agent_idsNoAlias for `agents` (matches REST/scheduling-proposal naming).
calendarsNoAdditional shared calendar IDs to treat as busy
start_timeNoAlias for `start` (matches REST events naming).
include_busyNoInclude per-agent busy blocks in response
slot_durationNoDeprecated alias for `duration` — minimum slot length. Prefer `duration`.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds important context about fail-closed semantics and the need to check response fields, enhancing transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first defines purpose, second provides critical usage warning. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description should clarify return structure. Mentions availability_state and warnings but does not fully describe response format, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description mentions aliases for key parameters but does not add significant meaning beyond what schema descriptions provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool finds free slots for multiple agents across both Chronary and authorized human calendars, distinguishing it from single-agent availability tools like get_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly warns agents to inspect availability_state and warnings before using slots, but does not mention when not to use this tool or provide alternative tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agentA
Read-onlyIdempotent
Inspect

Fetch a single agent by ID. An agent represents an AI assistant, human, or shared resource (e.g. a meeting room). Agent-scoped API keys may only read their own agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID to fetch

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by noting that agent-scoped API keys may only read their own agent. This is useful behavioral context beyond what annotations provide. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences. The first states the core action, the second provides additional context. No wasted words, front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (1 param, no output schema) and the presence of annotations, the description is mostly complete. It covers the action, parameter, and a security nuance. However, it doesn't describe the return format, which could be inferred from context but is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a description for the single parameter ('Agent ID to fetch'). The tool description does not add extra meaning beyond 'by ID' and what the schema already says, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly says 'Fetch a single agent by ID', a specific verb+resource. It also clarifies what an agent represents (AI assistant, human, shared resource), distinguishing it from list_agents and create_agent. This is clear and precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching a single agent by ID and adds a constraint about scoped API keys. However, it does not explicitly state when to avoid this tool (e.g., for multiple agents use list_agents). That said, the context is adequate for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audit_logA
Read-onlyIdempotent
Inspect

List audit-log entries for the calling org — mutating operations and auth-lifecycle events, newest first. Results are clamped to the plan's retention window. Requires an org-level API key (chr_sk_*); agent-scoped keys cannot read the org-wide audit log.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of the window (ISO 8601)
fromNoStart of the window (ISO 8601). Silently clamped to the plan retention window if older.
limitNoMax results to return (default 50)
actionNoFilter by action name (e.g. event.created)
cursorNoOpaque pagination cursor from a previous response
actor_key_prefixNoFilter by the API key prefix that performed the action

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant behavioral details beyond annotations: specifies exact event types (mutating operations and auth-lifecycle), ordering (newest first), retention clamping, and auth requirements. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose. Every sentence is informative without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key requirements and behavior (retention, key type) but does not mention pagination or return format. With no output schema, a brief note on pagination would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning to parameters beyond what the schema already provides, though it mentions overall retention clamping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool lists audit-log entries for mutating operations and auth-lifecycle events, newest first, for the calling org. No sibling tool does this, making it distinct 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the tool requires an org-level API key and that agent-scoped keys cannot read the audit log, providing clear context for when to use. While no alternatives are given, none exist among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_availabilityA
Read-onlyIdempotent
Inspect

Check when a single agent is free across its Chronary calendars and any human calendars authorized for that agent. This tool is fail-closed: always inspect availability_state and warnings before using slots. Accepts start/end or the start_time/end_time aliases.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoRange end (ISO 8601). Alias: end_time.
startNoRange start (ISO 8601). Alias: start_time.
agent_idYesAgent ID to check availability for
durationNoRequested slot length (15m/30m/45m/1h/2h). Preferred over the deprecated slot_duration. Defaults to 30m.
end_timeNoAlias for `end` (matches REST events naming).
start_timeNoAlias for `start` (matches REST events naming).
include_busyNoInclude busy blocks in response
slot_durationNoDeprecated alias for `duration` — minimum slot length. Prefer `duration`.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive. The description adds the fail-closed behavior and warning about inspecting availability_state, which is useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences that are direct and front-loaded, with no wasted words. Every sentence adds necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description warns about inspecting response fields, which helps. However, it omits return structure details like what availability_state values mean.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter descriptions already provide full meaning. The description reinforces alias acceptance but adds no significant new semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks when a single agent is free across its calendars, distinguishing it from multi-agent or calendar-listing tools like find_meeting_time or list_events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides usage guidance (fail-closed, inspect availability_state and warnings) and mentions parameter aliases, but does not explicitly state when to avoid this tool or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_availability_rulesA
Read-onlyIdempotent
Inspect

Read the buffer times and working-hours rules configured on a calendar. Returns the rules row, or an error if none are set.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar to read

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds that it 'Returns the rules row, or an error if none are set', providing useful behavioral detail about the error case. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that front-load the primary action. It is efficient and avoids unnecessary words, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one parameter, no output schema), the description is adequate. It explains the purpose and a possible outcome (error). While it doesn't detail the return format, the lack of an output schema makes that acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'calendar_id' described as 'Calendar to read'. The description does not add additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Read' and the specific resource 'buffer times and working-hours rules configured on a calendar'. It distinguishes from sibling tools like 'set_availability_rules' and 'clear_availability_rules' by indicating it is a read operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used to retrieve availability rules, providing clear context. However, it does not explicitly state when not to use it or mention alternatives like 'get_calendar', but the purpose is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_booking_pageA
Read-onlyIdempotent
Inspect

Fetch a single booking page by ID, including its public booking_url and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
booking_page_idYesBooking page ID to fetch (bkp_...)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds the context that it returns public booking_url and settings. This is useful but minimal additional behavioral disclosure beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single concise sentence that front-loads the key information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only fetch tool with one parameter and clear annotations, the description is sufficient. Not having an output schema is acceptable given the simplicity; the description mentions what is included in the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, and the schema description is clear. The tool description adds no additional detail about the parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Fetch' and resource 'single booking page', and specifies what is included ('public booking_url and settings'). It distinguishes from sibling tools like list_booking_pages (list vs single) and create_booking_page (create vs read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool vs alternatives. While the purpose is clear, there is no guidance on when not to use or comparison with similar tools like list_booking_pages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calendarA
Read-onlyIdempotent
Inspect

Fetch a single calendar by ID, including its name, timezone, agent status, and default reminders. Agent-scoped keys may only read calendars owned by their agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID to fetch

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds the important behavioral context of agent-scoped key restrictions, which is beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the primary purpose, and includes a necessary constraint without any wasted words. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple fetch-by-ID tool with one parameter, strong annotations, and no output schema, the description provides sufficient context. It mentions the fields returned and the key restriction. A minor gap is the lack of error behavior if the calendar is not found, but this is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the single parameter calendar_id, with a description that simply states 'Calendar ID to fetch'. The tool description does not add any additional meaning or format details beyond the schema, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Fetch' and clearly identifies the resource as a single calendar by ID. It distinguishes from sibling tools like list_calendars and get_calendar_context by specifying it fetches one calendar with details like name, timezone, agent status, and default reminders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear constraint: agent-scoped keys can only read calendars owned by their agent. While it does not explicitly list alternatives or when not to use, the context is clear enough for an agent to differentiate from list_calendars.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calendar_contextA
Read-onlyIdempotent
Inspect

Get a calendar's temporal context in a single call: the current event (if one is happening now), the next upcoming event, recent past events, a short upcoming window, and the owning agent's status (idle/working/waiting/error). Use this to answer "what is this agent doing right now?" without issuing multiple list_events queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendar_idYesCalendar ID

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds detailed behavioral context about what exactly is returned (current event, next, past, upcoming, agent status), which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: first lists what the tool returns, second provides the use case. No superfluous text, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only context tool with one parameter and no output schema, the description fully explains the returned data and use case. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter calendar_id with a basic description. The tool description does not add further parameter semantics, but baseline is 3 as schema already covers it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a calendar's temporal context including current event, next event, past events, upcoming window, and agent status. It uses a specific verb 'Get' and resource 'calendar's temporal context', and distinguishes from siblings by noting it avoids multiple list_events queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use the tool: 'to answer what is this agent doing right now?' and mentions the alternative (multiple list_events queries) indicating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_eventA
Read-onlyIdempotent
Inspect

Retrieve a single event by ID, including its title, times, status, location, reminders, and metadata. Works for both internally created events and externally synced iCal events. calendar_id is optional — if omitted the calendar is resolved from the event. Provide calendar_id to fail fast on cross-calendar typos.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID to retrieve
calendar_idNoCalendar ID that owns the event. Optional — if omitted the calendar is resolved from the event.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive. Description adds context: works for both internal and externally synced iCal events, calendar resolution behavior, which goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, well-structured with purpose first then auxiliary info about calendar_id. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description adequately explains what fields are returned, supports both event types, and addresses calendar_id optionality. Complete for a read-only retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions. Description adds meaning: event_id is the identifier to retrieve, calendar_id optional with behavioral note on fast failure for cross-calendar typos.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Retrieve a single event by ID' and lists included fields (title, times, status, location, reminders, metadata). Differentiates from sibling tools like list_events (which retrieves multiple) and other get_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on calendar_id: optional with fallback resolution, use to fail fast on typos. Does not explicitly compare to list_events for filtering, but context is clear for single-event retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ical_subscriptionA
Read-onlyIdempotent
Inspect

Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesiCal subscription ID to fetch

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds value by specifying the returned fields (sync status, last sync time, last error), beyond what annotations provide. However, it does not disclose any additional behavioral traits like defaults or caching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys all necessary information without waste. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get tool with one parameter and comprehensive annotations, the description is complete. It specifies what the tool does and what it returns, leaving no gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with a description for subscription_id. The description does not add meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (Get), the resource (single external iCal feed subscription), and what is included (sync status, last sync time, last error). This distinguishes it from sibling tool list_ical_subscriptions, which returns all subscriptions without detailed sync info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing details of a specific subscription, but does not explicitly state when not to use it or mention alternative tools. The context is clear but lacks exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_proposalA
Read-onlyIdempotent
Inspect

Get a scheduling proposal by id, including its slots and per-participant responses. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYesProposal to fetch

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent behavior. Description adds useful context: requires org-level API key and details response content (slots, responses). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with core purpose, followed by a necessary prerequisite. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get tool with a single parameter and no output schema, the description adequately explains purpose, auth, and return content. Could mention potential errors or pagination for slots, but not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for one parameter. Description adds no additional meaning to the parameter beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get a scheduling proposal by id' with specific verb and resource, and adds what is included (slots, responses). Distinguishes from sibling list_proposals and other get tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description mentions auth requirement but provides no explicit guidance on when to use this tool vs alternatives like list_proposals or get_event. Usage context is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usageA
Read-onlyIdempotent
Inspect

Get the calling org's current-period usage and plan limits (agents, calendars, events, API calls, webhooks, availability queries, iCal subscriptions, proposals, scoped keys, holds, cross-calendar queries). Requires an org-level API key (chr_sk_*); agent-scoped keys cannot read org-wide usage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and destructiveHint. The description adds authentication requirements and mentions the return type (usage and plan limits), providing additional behavioral context without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose, scope, and authentication requirements. Every piece of information is relevant, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, but the description sufficiently indicates it returns usage and plan limits. For a read-only tool with no parameters, the description is fairly complete, though lacking detail on output format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters with 100% schema description coverage. The description doesn't need to add parameter info, meeting the baseline for no-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Get the calling org's current-period usage and plan limits' and lists specific metrics, clearly defining the tool's purpose. It distinguishes itself from siblings that operate on individual resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it retrieves org-wide usage and requires an org-level API key. It warns that agent-scoped keys cannot use this tool, offering usage guidance, though it does not explicitly name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_webhookA
Read-onlyIdempotent
Inspect

Get a single webhook subscription by id, including its subscribed event types and active state. The signing secret is never returned. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesWebhook subscription to fetch

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds valuable behavioral context beyond annotations: 'The signing secret is never returned' and auth requirement. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. The first sentence front-loads the core functionality, and the second adds critical behavioral info. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 param, no output schema), the description covers the return content, hidden behavior (signing secret), and auth requirement. Could be slightly more explicit about the return format, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'webhook_id' is fully described in the schema with a description. The tool description adds no additional parameter semantics beyond what the schema provides. Baseline score of 3 is appropriate given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'get', resource 'webhook subscription', and includes what is returned ('subscribed event types and active state'). This distinguishes it from sibling tools like 'list_webhooks' and 'create_webhook'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a prerequisite ('Requires an org-level API key') but does not explicitly state when to use this tool versus alternatives (e.g., 'list_webhooks') or when not to use it. The usage context is implied by the tool's purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsA
Read-onlyIdempotent
Inspect

List all agents in your organization

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by agent type
limitNoMax results to return
offsetNoPagination offset
statusNoFilter by status

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and idempotentHint=true, so description's burden is lower. It adds the scope 'in your organization', which is helpful context beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 6 words with no unnecessary information. Every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with full parameter descriptions in schema and safety annotations provided, the description is sufficient. No output schema needed; return value is implied. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with descriptions for all 4 parameters. The tool description adds no additional meaning beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'List' and resource 'agents' with scope 'in your organization', clearly distinguishing it from sibling tools like get_agent (single) and create/delete/update agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. However, the name and sibling list imply it's for listing multiple agents, while get_agent is for a single agent. Adequate but lacks exclusions or alternative suggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_booking_pagesA
Read-onlyIdempotent
Inspect

List booking pages in the org. Agent-scoped keys see only pages on their own agent's calendars.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
offsetNoPagination offset

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and non-destructive. The description adds valuable behavioral context: agent-scoped keys see only pages on their own agent's calendars. This goes beyond annotations and clarifies scope constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states the core purpose, second adds a crucial nuance. No wasted words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with pagination parameters fully described by the schema. However, since there is no output schema, the description could mention the return format (e.g., list of booking page objects). Still, given the minimal complexity, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both limit and offset. The description does not add any additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists booking pages in the org, using a specific verb and resource. It also adds nuance about agent-scoped key behavior, which distinguishes it from siblings like get_booking_page (single) and create_booking_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about agent-scoped key visibility but does not explicitly state when not to use the tool or mention alternatives like get_booking_page for a single page. Usage is implied but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_calendarsA
Read-onlyIdempotent
Inspect

List calendars in the org. Org-level API keys see every calendar (agent-owned and shared); agent-scoped keys see only their own agent's calendars. Use this to discover calendar IDs before creating or listing events.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
offsetNoPagination offset
includeNoPass "all" to include calendars across all agents (org keys only)
agent_idNoFilter to calendars owned by this agent. Org keys only — agent-scoped keys are always limited to their own agent and ignore this.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, idempotentHint, and no destructiveness. The description adds valuable context about key scoping behavior (org-level vs agent-scoped), which is beyond the annotations and helps the agent understand behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool, the description covers the essential behavioral context (key scoping) and usage purpose. No output schema exists, but the tool's return is likely a list of calendars, which is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with adequate descriptions. The description does not add significant new meaning beyond the schema, meeting the baseline. It mentions the 'include' parameter implicitly but not in detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists calendars in the org, distinguishes between org-level and agent-scoped API keys, and explicitly says to use it for discovering calendar IDs, which differentiates it from sibling tools like list_events or list_agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using it 'before creating or listing events' to discover calendar IDs, providing clear when-to-use context. It also explains scope differences but does not explicitly state when not to use it, though the guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_eventsA
Read-onlyIdempotent
Inspect

List events on a calendar or across an agent's calendars, including internally created events and externally synced events from iCal subscriptions (e.g. Google Calendar, Outlook). Provide calendar_id OR agent_id. Narrow with start_after/start_before (time window), status, and source.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
expandNoExpand recurring series into individual occurrence instances within the window. Requires both start_after and start_before (max 366 days apart). Instances carry recurringEventId + originalStartTime.
offsetNoPagination offset
sourceNoFilter by source: "internal" (created via the API) or "external_ical" (synced from an iCal subscription)
statusNoFilter by event status
agent_idNoAgent ID to list events for across all of the agent's calendars. Provide this or calendar_id.
calendar_idNoCalendar ID to list events from. Provide this or agent_id.
start_afterNoOnly events starting after this ISO 8601 time
start_beforeNoOnly events starting before this ISO 8601 time

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds value by detailing behavior such as including externally synced events, the mutually exclusive requirement for calendar_id/agent_id, and the expand parameter's constraints (requires start_after and start_before, max 366 days apart). It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the purpose and immediately provide actionable instructions. Every sentence adds value, with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 parameters and no output schema, the description covers the main purpose, scope, and key filtering options. It doesn't explain pagination behavior or return structure, but those are partially covered by the schema. Overall, it provides sufficient context for an AI agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with detailed descriptions for each parameter. The tool description summarizes parameter usage (e.g., 'Narrow with start_after/start_before') but does not add significant new meaning beyond what the schema already provides. The baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'events', specifies scope (on a calendar or across agent's calendars), and distinguishes from sibling tools by mentioning inclusion of externally synced events. It leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool (listing events) and includes key requirements (provide calendar_id OR agent_id). It lacks explicit 'when not to use' or alternatives like get_event, but the usage instructions are sufficiently clear for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ical_subscriptionsA
Read-onlyIdempotent
Inspect

List an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
offsetNoPagination offset
statusNoFilter by subscription status
agent_idYesAgent ID whose iCal subscriptions to list

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by specifying that results include 'sync status and last sync time'. It does not contradict annotations (readOnlyHint, idempotentHint, destructiveHint) and aligns with the read-only, idempotent nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the verb and resource, includes examples, and provides specific details. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description usefully indicates return fields (sync status, last sync time). It does not describe the overall structure (array of subscriptions) or pagination details, but the schema covers limit/offset defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does 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 does not add any meaning beyond what the schema provides, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'List', the resource 'agent's external iCal feed subscriptions', and includes examples and return fields (sync status, last sync time). It effectively distinguishes from sibling tools like `list_calendars` and `get_ical_subscription`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing subscriptions for a given agent, but does not explicitly state when to use it versus alternatives like `get_ical_subscription` for single items or `delete_ical_subscription`. No direct exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_proposalsA
Read-onlyIdempotent
Inspect

List scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
offsetNoPagination offset (default 0)
statusNoFilter by proposal status
organizer_agent_idNoFilter by organizer agent

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only and idempotent. The description adds the crucial authentication requirement and implies pagination via limit/offset parameters, providing valuable behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The primary purpose is front-loaded, and every sentence adds necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks an output schema, and the description does not explain the return structure (e.g., array of proposals, fields). It covers filtering and auth, but omits sorting, default behavior, and response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add significant meaning beyond the schema's parameter descriptions. It lists filter options but without extra detail on usage or format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'scheduling proposals', and the scope 'for the org'. It also specifies acceptable filter values, distinguishing it from sibling tools like 'get_proposal' for a single item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool and the required authentication context ('org-level API key'), but does not provide exclusions or alternative tools for different use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scoped_keysA
Read-onlyIdempotent
Inspect

List all live (non-revoked) agent-scoped API keys for this org. Returns key metadata only (id, prefix, agent_id, label, created_at) — never the plaintext secret. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond the annotations by stating that it lists only live keys, returns metadata but never the plaintext secret, and requires an org-level API key. This goes beyond the readOnlyHint and idempotentHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action and scope, and contains no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with no parameters and no output schema, the description covers purpose, scope, output details, and requirements, making it fully informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters (schema coverage 100%). The description appropriately provides context about the tool's function without needing to explain parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'live (non-revoked) agent-scoped API keys', and the scope 'for this org'. It distinguishes from sibling tools like create_scoped_key and revoke_scoped_key by focusing on listing non-revoked keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies a prerequisite ('Requires an org-level API key') and explains what is returned. It does not explicitly state when not to use this tool, but the context makes it clear that it is for listing, not creating or revoking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_webhook_deliveriesA
Read-onlyIdempotent
Inspect

List delivery attempts for a webhook subscription, with per-status counts (pending/delivered/failed). Use this to debug failing deliveries. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
offsetNoPagination offset
statusNoFilter to a single delivery status
webhook_idYesWebhook subscription whose deliveries to list
include_payloadNoInclude the full event payload sent on each delivery

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not repeat safety info. It adds value by specifying the need for an org-level API key, which is a behavioral constraint not in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. First sentence states action and output (per-status counts), second adds use case and auth requirement. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, but the description mentions per-status counts, giving a hint of return format. It covers purpose, use case, and auth. For a read-only list tool with 5 parameters, this is fairly complete, though more detail on sorting or pagination could help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for its 5 parameters, so the schema already documents parameter meanings. The description does not add much beyond mentioning 'per-status counts,' which loosely relates to the status parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool lists delivery attempts for a webhook, with per-status counts. The verb 'List' and resource 'delivery attempts' are specific, and the mention of per-status counts distinguishes it from other list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this to debug failing deliveries, providing a clear use case. It also notes the requirement for an org-level API key, but does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_webhooksA
Read-onlyIdempotent
Inspect

List the org's webhook subscriptions with their subscribed event types and active state. Signing secrets are never returned. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
offsetNoPagination offset

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and idempotent. Description adds that signing secrets are never returned and requires org-level API key, providing extra context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. First sentence states purpose, second adds critical security and auth context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers listing action, return fields (event types, active state), what is not returned (secrets), and auth requirement. Lacks output format details but sufficient given common list pattern and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions; tool description does not add any additional parameter information, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists org's webhook subscriptions with event types and active state. Distinguishes from sibling tools like get_webhook (single) and create/delete/update by specifying listing action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for enumeration of webhooks, and mentions prerequisite (org-level API key), but does not explicitly compare to alternatives like get_webhook or list_webhook_deliveries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_eventA
DestructiveIdempotent
Inspect

Manually release a held event before its hold_expires_at. The event must currently have status="hold". Frees the slot for other agents to book.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID of the hold to release

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent behavior. Description adds that it frees a slot for other agents, beyond annotation details. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no superfluous words, front-loaded with action and condition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation with one parameter and no output schema, the description covers all essential context: action, precondition, effect, and idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage for the single parameter. Description adds the requirement that event must be held, which is implied but clarifies the parameter's context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (release held event), the condition (status='hold'), and the effect (frees slot). Distinguishes from siblings like confirm_event or cancel_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States explicit condition (status='hold') and timing (before hold_expires_at). Does not explicitly mention when not to use or compare to alternatives, but condition serves as clear usage guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_proposalA
Idempotent
Inspect

Force-resolve an open proposal using responses collected so far. Picks the highest-scoring slot among those accepted by the most participants and creates a confirmed calendar event. If every response was "decline", the proposal is cancelled instead. Use when you want to close out a proposal without waiting for every participant. Requires an org-level API key. Pro plan only.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYesProposal to resolve

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behavior beyond annotations: picks highest-scoring slot accepted by most participants, creates confirmed event, and cancels if all responses are 'decline'. No contradiction with annotations (idempotentHint=true, destructiveHint=false).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each adding value. Front-loaded with core purpose. No unnecessary words or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single required parameter and no output schema, the description covers behavioral outcomes, constraints, and prerequisites fully. The tool is simple but the description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (proposal_id) with 100% schema coverage; description does not add additional semantics beyond the schema's 'Proposal to resolve'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'Force-resolve' and the resource 'open proposal', and it distinguishes from siblings like 'respond_to_proposal' by specifying it uses collected responses without waiting for all participants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'Use when you want to close out a proposal without waiting for every participant.' Also mentions requirements: 'Requires an org-level API key. Pro plan only.' Lacks explicit when-not-to-use or alternative tools, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

respond_to_proposalAInspect

Submit a response (accept / decline / counter) on behalf of one participant agent to an open proposal. An "accept" requires the slot id from the proposal; a "counter" can suggest alternative slots. When all participants have responded the proposal auto-resolves — no separate resolve call needed in the normal flow. Requires an org-level API key. Pro plan only.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional note for the organizer
agent_idYesParticipant agent responding
responseYesDecision from this agent
proposal_idYesProposal to respond to
counter_slotsNoAlternative slots when response is "counter"
selected_slot_idNoRequired when response is "accept"

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no readOnlyHint, destructiveHint, etc. Description adds important behavioral context: requires org-level API key, Pro plan only, and auto-resolution when all participants respond. This goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with main action. No wasted words; each sentence adds essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Describes return behavior (auto-resolution), auth requirements, and plan restrictions. Lacks details on error responses, but given complexity and no output schema, it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. Description adds value by explaining the conditional relationship: 'accept requires slot id, counter suggests alternative slots.' This clarifies usage beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Submit a response'), the resource ('proposal'), and the specific response types (accept/decline/counter). It distinguishes from siblings like resolve_proposal by noting auto-resolution behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to use the tool (to respond on behalf of a participant) and mentions auto-resolution, implying no need for a separate resolve call. It does not explicitly exclude alternatives but provides sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_scoped_keyA
DestructiveIdempotent
Inspect

Revoke an agent-scoped API key by ID. Revocation is permanent (cannot be un-revoked); the key stops authenticating within about a minute. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesID of the scoped key to revoke

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral details beyond annotations: revocation is permanent, cannot be undone, and takes effect within about a minute. This complements the destructiveHint and idempotentHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two efficient sentences with no extraneous text. The first sentence states the primary action, and the second provides crucial caveats and prerequisites.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter, no output schema, and clear annotations, the description is complete. It covers the action, effect, timing, and authentication requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single parameter key_id with a description ('ID of the scoped key to revoke'). The description does not add additional semantic information beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Revoke', the resource 'agent-scoped API key', and the method 'by ID'. It effectively distinguishes this tool from related tools like create_scoped_key and list_scoped_keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite ('Requires an org-level API key') and the permanent nature of revocation, providing clear context for when to use. While it doesn't explicitly state when not to use, the irreversibility is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_availability_rulesA
Idempotent
Inspect

Set or replace the availability rules on a calendar — buffer times before/after events and optional per-day working hours. When these rules are set, every availability query on this calendar automatically applies them (busy-block expansion for buffers, masking outside working hours). Upsert: overwrites any existing rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
timezoneNoIANA timezone used to interpret working_hours (e.g. America/New_York)UTC
calendar_idYesCalendar to configure
working_hoursNoPer-day working hours map in the calendar's timezone; omit keys for off-days. Pass null to remove any working-hours constraint.
buffer_after_minutesNoMinutes of buffer after each event (0–120)
buffer_before_minutesNoMinutes of buffer before each event (0–120)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and destructiveHint=false, so the description's mention of 'Upsert: overwrites any existing rules' and the effect on availability queries adds some context but does not significantly extend beyond the annotations. No side effects beyond overwriting are disclosed, and the impact on existing events is not clarified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with the core purpose, followed by the effect on queries and the overwrite behavior. No extraneous information; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters and no output schema, the description covers the main behavior: setting buffers and working hours, their automatic application, and the upsert nature. It could mention that working hours are optional or that timezone defaults to UTC, but the schema handles that. Overall, it is sufficiently complete for a setter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description mentions 'buffer times before/after events and optional per-day working hours', which aligns with parameters but does not add detailed semantics beyond what the schema already provides. The parameter descriptions in the schema are already comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb ('Set or replace'), the resource ('availability rules on a calendar'), and the specific behaviors ('buffer times before/after events and optional per-day working hours'). It distinguishes itself from sibling tools like 'clear_availability_rules' and 'get_availability_rules' by focusing on setting/replacing rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when the rules take effect ('every availability query on this calendar automatically applies them') and notes the upsert behavior ('overwrites any existing rules'). However, it does not explicitly state when to use this tool versus alternatives, such as when to use 'clear_availability_rules' for removal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscribe_icalAInspect

Link an external iCal feed (e.g. a human's Google Calendar) to an agent's calendar so external events appear in availability calculations. The target calendar must be owned by the specified agent — create the calendar with that agent_id first (org-level calendars without an agent_id cannot host external iCal subscriptions; create a dedicated per-agent calendar for sync targets).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS URL of the iCal feed (.ics) to subscribe to
labelNoOptional label for this subscription
agent_idYesAgent ID that will own this subscription
calendar_idYesCalendar ID to sync external events into

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a mutation (readOnlyHint=false) and non-destructive. The description adds context that the calendar must be agent-owned and that org-level calendars won't work. However, it does not disclose behavior on duplicate URLs, error handling, or whether existing subscriptions are overwritten. 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states purpose and benefit, the second provides a critical constraint. No unnecessary words; it is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 4 parameters and no output schema, the description covers purpose and prerequisite but does not indicate what the tool returns on success or what error scenarios exist. Adequate but could be more complete, especially since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already described. The description reinforces the role of agent_id and calendar_id but adds no new details about url or label beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool links an external iCal feed to an agent's calendar for availability calculations. The verb 'link' and resource 'iCal feed to agent calendar' are specific, and it is distinct from sibling tools like delete_ical_subscription or sync_ical_subscription.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes when to use (to include external events in availability) and a critical prerequisite: the target calendar must be owned by the agent. It warns against using org-level calendars, providing clear guidance. It does not explicitly name sibling alternatives but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_ical_subscriptionA
Idempotent
Inspect

Trigger an immediate sync of an external iCal feed subscription instead of waiting for the next scheduled poll. Returns once the sync has been queued.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesiCal subscription ID to sync

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true, destructiveHint=false. The description adds that the tool returns once the sync is queued, indicating asynchronous behavior and immediate return, which is useful context beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, very concise, and front-loaded with the key action. Every word is useful with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema. The description explains the queuing behavior but does not address potential error cases (e.g., invalid subscription ID) or confirm if the sync actually completes. Given the low complexity, it is mostly complete but could briefly mention what happens if the subscription is invalid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has one required parameter (subscription_id) with a clear description. Schema coverage is 100%, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool triggers an immediate sync of an iCal feed subscription instead of waiting for the next poll. It specifies the action (trigger sync) and resource (iCal feed subscription), and contrasts with the scheduled alternative, effectively distinguishing it from siblings like subscribe_ical and update_ical_subscription.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool: when you need immediate sync instead of waiting for the next scheduled poll. It does not explicitly list when not to use it or provide alternative tool names, but the context is clear enough for an AI agent to understand the use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_agentA
Idempotent
Inspect

Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key — agent-scoped keys cannot mutate agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew display name
statusNoOperational status
agent_idYesAgent ID to update
metadataNoArbitrary metadata (max 16KB)
descriptionNoNew description (null to clear)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it's a write operation (readOnlyHint=false) and idempotent (idempotentHint=true). The description adds the auth requirement but does not clarify partial update behavior or response details. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states the action and fields, second provides the auth constraint. No redundant or filler content. Front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given full schema documentation and annotations, the description adds the key auth requirement. It does not specify return value or partial update semantics, which is a minor gap for a mutation tool. Overall sufficient for an update operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description summarizes the parameters but does not add new semantics beyond the schema's own descriptions. For example, 'metadata' is described as 'arbitrary metadata (max 16KB)' in the schema, same in summary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'update' and the resource 'agent', listing specific fields (name, description, metadata, status). It implicitly distinguishes from sibling tools like create_agent, delete_agent, get_agent by focusing on mutation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use (to update agent properties) and adds a critical restriction: requires an org-level API key, agent-scoped keys cannot mutate agents. It does not explicitly list alternatives or when not to use, but the restriction is valuable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_calendarA
Idempotent
Inspect

Update a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew calendar name
metadataNoArbitrary metadata (max 16KB)
timezoneNoNew IANA timezone (e.g. America/New_York)
calendar_idYesCalendar ID to update
agent_statusNoOwning agent's status
default_remindersNoDefault reminder offsets in minutes; null for system default, [] for none

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate mutation (readOnlyHint=false), idempotency (idempotentHint=true), and non-destructiveness (destructiveHint=false). The description adds context about agent-scoped key restrictions, which is valuable beyond the annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long. The first sentence immediately communicates the tool's purpose, and the second adds a key restriction. No unnecessary words – every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 6 parameters (one required) and a nested metadata object. The description covers the main updatable fields and the agent-scoped restriction but does not mention return values or error states. Given no output schema, more detail on the response would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter has a description in the schema. The tool description only lists the updatable fields broadly, adding minimal extra meaning. Baseline of 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a calendar's name, timezone, agent status, default reminders, or metadata.' It uses a specific verb ('Update') and lists the resources/attributes affected, distinguishing it from sibling tools like create_calendar, delete_calendar, or get_calendar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a usage guideline: 'Agent-scoped keys may only update calendars owned by their agent,' which provides important context about authorization. However, it does not explicitly mention when to use this tool versus alternatives like update_event, though the purpose is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_eventA
Idempotent
Inspect

Reschedule or edit an event — change its title, description, start/end times, location, status, reminders, or metadata. Use this to move an appointment to a new time or update its details. Provide only the fields you want to change. Holds cannot be edited via this tool (use confirm_event / release_event). External iCal events are read-only. calendar_id is optional — if omitted it is resolved from the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew event title
statusNoNew event status
all_dayNoWhether this is an all-day event
end_timeNoNew end time (ISO 8601)
event_idYesEvent ID to update
metadataNoReplacement metadata object
remindersNoReminder offsets in minutes before start_time. Omit to leave unchanged, null to inherit the calendar default, [] for no reminders.
start_timeNoNew start time (ISO 8601)
calendar_idNoCalendar ID that owns the event. Optional — if omitted the calendar is resolved from the event.
descriptionNoNew description, or null to clear it
recurrence_ruleNoSet/change the recurring series rule (RFC 5545 RRULE subset, full-series semantics), or null to make the event a one-off. Changing the rule or start_time resets cancelled occurrences.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool is not read-only, idempotent, and not destructive. The description adds useful behavioral context: partial updates, restrictions on holds and external iCal events, and calendar_id resolution. However, it does not describe the response/return value, which is relevant given no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with 5 sentences, front-loading the core action. It is well-structured but could be slightly improved by grouping related information. No unnecessary content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters and no output schema, the description covers key usage scenarios and constraints but misses details on the 'recurrence_rule' parameter and does not describe the response format. Slightly incomplete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining partial update semantics, calendar_id optional behavior, and constraints on holds and external events. However, it mentions 'location' which is not in the schema, potentially causing confusion. Overall, it adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Reschedule or edit an event' and lists specific fields that can be changed. It differentiates from siblings by noting that holds cannot be edited via this tool and should use confirm_event/release_event instead, and that external iCal events are read-only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Use this to move an appointment to a new time or update its details.' It also tells when not to use (holds, external iCal) and suggests alternative tools. Additionally, it advises to 'Provide only the fields you want to change,' indicating partial update semantics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ical_subscriptionA
Idempotent
Inspect

Update an external iCal feed subscription — change its label or its feed URL. Changing the URL forces a full re-sync on the next poll.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoNew HTTPS URL of the iCal feed (.ics)
labelNoNew label for this subscription
subscription_idYesiCal subscription ID to update

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotent and non-destructive. Description adds a useful behavioral note: 'Changing the URL forces a full re-sync on the next poll.' This goes beyond the annotations and helps the agent understand side effects. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. First sentence states purpose and scope, second sentence adds a critical behavioral detail. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 3 straightforward parameters, the description covers the key aspects: what the tool does, which fields can be updated, and a side effect. It does not mention that subscription_id is required (but schema handles that) or that at least one of label/url should be provided. Overall adequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already describes parameters. The description adds context about the url parameter's effect (forces re-sync), which provides additional meaning beyond the schema's format/pattern constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Update' and the resource 'external iCal feed subscription', and specifies the changable attributes (label, feed URL). It is distinct from sibling tools like subscribe_ical, delete_ical_subscription, and sync_ical_subscription.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when you need to change label or URL) but does not explicitly state when not to use or mention alternatives such as deleting and re-subscribing. No exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_webhookA
Idempotent
Inspect

Update a webhook subscription — change its delivery URL, the set of subscribed event types, or pause/resume it via active. At least one field must be supplied. Requires an org-level API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoNew HTTPS delivery endpoint
activeNoSet false to pause deliveries, true to resume
eventsNoReplacement set of event types to subscribe to
webhook_idYesWebhook subscription to update

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by specifying the required authentication scope ('org-level API key') and the constraint that at least one field must be supplied. Annotations already indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundant information. The purpose and key constraints are front-loaded in the first sentence, and the second adds important usage notes. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the action, parameters, and auth requirement. It does not mention the return value (likely the updated webhook object), but that is somewhat inferred from the sibling get_webhook. Overall, fairly complete for the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds meaning by summarizing what the parameters control (delivery URL, event types, active status) but does not detail each parameter beyond the schema's own descriptions. Adequate but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update'), the resource ('a webhook subscription'), and the specific fields that can be modified ('delivery URL', 'event types', 'pause/resume via active'). This distinguishes it from siblings like create_webhook, delete_webhook, and get_webhook.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides key usage constraints: 'At least one field must be supplied' and 'Requires an org-level API key.' It does not explicitly compare to alternatives, but the sibling list makes the context clear. Slight room for improvement by stating when to use over create/delete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with detailed descriptions. Tools like cancel_event, release_event, and confirm_event have no ambiguity; similarly, find_meeting_time and get_availability serve different scopes.

Naming Consistency5/5

All tools follow a verb_noun pattern in snake_case (e.g., create_event, list_agents, get_availability). There are no deviations like camelCase or mixed styles, making the naming highly predictable.

Tool Count2/5

With 50 tools, the server is heavily loaded. While the domain is complex, this exceeds the typical well-scoped range of 3-15 and even the borderline 16-25, making it too many for an MCP server.

Completeness5/5

The tool set covers full lifecycle management for agents, calendars, events, proposals, webhooks, iCal subscriptions, and availability. Additional utilities like find_meeting_time and get_audit_log provide extra depth with no obvious gaps.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Integrates the MeetSync calendar negotiation API to enable AI agents to autonomously manage participants, find mutual availability, and handle meeting bookings. It exposes 19 tools for end-to-end scheduling workflows including participant preferences, proposals, and confirmations.
    19
    20
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Automates meeting logistics with tools for scheduling, availability checking, slot finding, timezone conversion, and recurring date generation. Eliminates the need for custom calendar logic by providing validated time operations and formatted invitations for applications and AI assistants.
    -
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for Cal.com scheduling, providing ~70 tools to manage schedules, event types, bookings, calendars, webhooks, and teams. Enables natural language control of Cal.com from Claude or any MCP-compatible client.
    68
    -

Latest Blog Posts

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/Chronary/chronary-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server