Skip to main content
Glama

mcp-meetsync

MCP server for MeetSync — a calendar negotiation API built for AI agents.

Exposes all 19 MeetSync endpoints as MCP tools so any MCP-compatible LLM can autonomously find availability, propose meeting times, and confirm bookings — no human back-and-forth required.


Installation

npm install -g mcp-meetsync

Or run directly with npx:

npx mcp-meetsync

Related MCP server: M365 Calendar MCP Server

Configuration

The server reads two environment variables:

Variable

Required

Default

Description

MEETSYNC_API_URL

No

http://localhost:3000

Base URL of your MeetSync API

MEETSYNC_API_KEY

Yes

API key sent in X-API-Key header

Copy .env.example to .env and fill in your values, or pass them directly in the Claude tool definition.


Adding to Claude

Paste this snippet into your Claude desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "meetsync": {
      "command": "npx",
      "args": ["-y", "mcp-meetsync"],
      "env": {
        "MEETSYNC_API_URL": "https://api.yourmeetsync.com",
        "MEETSYNC_API_KEY": "your-api-key-here"
      }
    }
  }
}

After saving, restart Claude. The 19 MeetSync tools will appear in Claude's tool list.


Tools

All 19 MeetSync operationIds are exposed as tools. Tool names match operationIds exactly.

Participants (7 tools)

Tool

When to use

listParticipants

Browse or search registered participants

createParticipant

Register a new person before they can be scheduled

getParticipant

Look up a specific participant's timezone/provider details

updateParticipant

Change a participant's name, email, timezone, or calendar setup

deleteParticipant

Permanently remove a participant (use force to cascade)

getParticipantPreferences

Read a participant's working hours and scheduling constraints

setParticipantPreferences

Define or replace working hours, blackout windows, and buffers

Availability (2 tools)

Tool

When to use

getParticipantAvailability

Find free windows for a single participant

findMutualAvailability

Find scored slots that work for all participants simultaneously

Proposals (5 tools)

Tool

When to use

listProposals

Browse pending or historical proposals

createProposal

Propose candidate time slots and send to participants for consensus

getProposal

Check proposal status and see who has responded

cancelProposal

Withdraw a pending proposal

respondToProposal

Record a participant's acceptance or rejection

Bookings (5 tools)

Tool

When to use

listBookings

Browse confirmed, cancelled, or rescheduled meetings

createBooking

Confirm a booking from an accepted proposal, or book directly

getBooking

Retrieve full details of a specific meeting

rescheduleBooking

Move a confirmed meeting to a new time

cancelBooking

Cancel a meeting permanently


Example agent workflow

Here is a complete scheduling workflow an AI agent would follow using these tools:

1. createParticipant  ← register alice@example.com
2. createParticipant  ← register bob@example.com
3. setParticipantPreferences  ← Alice: Mon–Fri 09–17, 15 min buffer
4. setParticipantPreferences  ← Bob: Mon–Fri 10–18, no back-to-back
5. findMutualAvailability  ← find 60-min slots next week for [alice, bob]
   → returns top 5 scored slots
6. createProposal  ← "Budget Review" with top 3 slots, expires in 24h
   → proposal id: prop_abc123
7. respondToProposal  ← alice accepts, prefers slot 1
8. respondToProposal  ← bob accepts, prefers slot 1
   → proposal auto-transitions to "accepted", acceptedSlotId set
9. getProposal  ← confirm acceptedSlotId
10. createBooking  ← proposalId + slotId
    → booking confirmed, calendarEventIds written

Development

# Install dependencies
npm install

# Type-check without building
npm run typecheck

# Build to dist/
npm run build

# Run in dev mode (auto-reloads)
MEETSYNC_API_URL=http://localhost:3000 MEETSYNC_API_KEY=dev-key npm run dev

Architecture

src/
  index.ts          ← MCP Server, ListTools + CallTool handlers, stdio transport
  client.ts         ← Typed fetch wrapper: GET/POST/PUT/PATCH/DELETE + X-API-Key injection
  tools/
    participants.ts  ← 7 participant tools + handlers
    availability.ts  ← 2 availability tools + handlers
    proposals.ts     ← 5 proposal tools + handlers
    bookings.ts      ← 5 booking tools + handlers

Each tool file exports:

  • A Tool[] array with name, description, and inputSchema (strict JSON Schema)

  • A handle*Tool(name, args) async function that calls the MeetSync API via client


License

MIT

Available Tools

19 tools
cancelBookingA

Use this tool when a confirmed meeting needs to be permanently cancelled for all participants. If the intent is to move the meeting to a different time rather than cancel it entirely, use rescheduleBooking instead — cancellation is irreversible. Only bookings with status "confirmed" can be cancelled; already-cancelled bookings will return an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesUUID of the booking to cancel.

TDQS

A4.7/5.0
Behavior4/5

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

Given no annotations, the description carries full burden. It discloses irreversibility and preconditions, but could add more about side effects (e.g., notifications). Still, it covers key behavioral traits well.

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 purpose and usage. No 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.

Completeness5/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, the description covers purpose, usage, preconditions, side effects, and error conditions. It is complete and sufficient.

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 baseline is 3. The description adds value by stating that bookingId must belong to a confirmed booking, providing usage context beyond the schema's type and 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 tool cancels a confirmed meeting permanently for all participants, distinguishing it from rescheduleBooking by specifying when to use each. It uses a specific verb and resource.

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 (confirmed meetings needing permanent cancellation), when not to (use rescheduleBooking for time changes), and includes a prerequisite (only 'confirmed' bookings). It also warns about errors for already-cancelled bookings.

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

cancelProposalA

Use this tool when the organizer needs to withdraw an entire proposal — cancelling it for all participants so no booking can result. Only proposals with status "pending" can be cancelled. Important: this is not the tool to use when a single participant wants to decline. If one participant wants to say no while others continue, call respondToProposal with status="rejected" for that participant instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesUUID of the proposal to cancel.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that only pending proposals can be cancelled and that cancellation affects all participants. However, it does not mention whether the action is reversible or any post-cancellation behaviors, leaving minor gaps.

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 plus a clarifying note—with no redundant or 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?

Given the tool's simplicity (one parameter, no output schema), the description is complete: it covers purpose, usage, preconditions, and alternatives. No additional information is needed for correct invocation.

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 a clear description for proposalId. The description adds no extra parameter details 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 verb 'withdraw' (cancel) and the resource 'proposal', and explicitly distinguishes it from the sibling 'respondToProposal' for single participant rejection. It specifies that it cancels the entire proposal 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 Guidelines5/5

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

It provides explicit when-to-use (organizer withdraws entire proposal, only pending status) and when-not-to-use (single participant decline) guidance, and directs to the alternative tool 'respondToProposal'.

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

createBookingA

Use this tool to confirm a meeting. Choose the mode based on how you arrived here: MODE 1 — Proposal-based (used after a proposal workflow): call this when a proposal's status is "accepted". First call getProposal to retrieve the acceptedSlotId, then pass proposalId + slotId (= acceptedSlotId) here. All participant UUIDs are already known from the proposal. MODE 2 — Direct (skipping the proposal workflow): call this when you already know the exact meeting time and want to book immediately. You must provide organizerParticipantId, participantIds (all UUIDs from createParticipant), startTime, and endTime. Use this only when consensus is already established outside of MeetSync. In both modes, conflict detection runs automatically and the call fails if any participant has an overlapping confirmed booking.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the meeting.
descriptionNoOptional meeting description or agenda.
proposalIdNo(Proposal-based mode) UUID of an accepted proposal.
slotIdNo(Proposal-based mode) UUID of the accepted slot within the proposal.
organizerParticipantIdNo(Direct mode) UUID of the participant organizing the meeting.
participantIdsNo(Direct mode) UUIDs of all participants including the organizer.
startTimeNo(Direct mode) Meeting start as ISO 8601 datetime with timezone offset.
endTimeNo(Direct mode) Meeting end as ISO 8601 datetime with timezone offset.
timezoneNo(Direct mode) IANA timezone for the booking. Defaults to UTC.
locationNoPhysical location or meeting room.
conferenceLinkNoVideo conference URL.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses that conflict detection runs automatically and the call fails on overlap. No annotations exist, so the description carries full burden; it adequately informs about behavior but could mention side effects like creation persistence.

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?

Structured into clear modes with numbered instructions. While well-organized, it is slightly verbose; concise mode labels and a list could reduce length without losing meaning.

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 11 parameters, no output schema, and two modes, the description provides sufficient workflow context and conflict detection notes. It lacks return value details but compensates with mode-specific parameter guidance.

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 baseline is 3. The description adds value by grouping parameters by mode and explaining relationships (e.g., proposalId and slotId come from getProposal), exceeding the schema's individual descriptions.

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: to confirm a meeting. It explains two distinct modes (proposal-based and direct) and how to use each, effectively distinguishing this from siblings like createProposal and cancelBooking.

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 explicit guidance on when to use each mode, including prerequisite steps (e.g., calling getProposal for proposal-based mode). However, it does not explicitly state when not to use the tool, but the context makes it clear that this is for finalizing a booking.

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

createParticipantA

Use this tool when you need to register a new person in MeetSync so their calendar can be considered during scheduling. Must be called before a participant can appear in proposals, bookings, or availability queries. Supports Google, Outlook, and iCal providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFull name of the participant.
emailYesUnique email address.
timezoneNoIANA timezone identifier (e.g. "America/New_York"). Defaults to UTC.
calendarProviderNoCalendar integration provider. Defaults to "none".
icalUrlNoiCal feed URL. Required when calendarProvider is "ical".

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral information. It states that the participant's calendar will be considered during scheduling, which implies a read/write side effect. It also lists supported providers (Google, Outlook, iCal). However, it does not disclose authentication requirements, rate limits, or what happens if the participant already exists. This is adequate but not comprehensive.

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, each serving a distinct purpose: what the tool does, when to use it, and provider support. No wasted words; front-loaded with the main action.

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 5 parameters, one conditional, and no output schema or annotations. The description explains the prerequisite (must be called before other operations) and provider support. It lacks return value information and error handling details, but given the complexity, it is reasonably 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?

Input schema has 100% description coverage, so the baseline is 3. The description adds value by noting that 'icalUrl is required when calendarProvider is "ical"', which is not conveyed in the individual parameter descriptions. This extra context justifies a 4.

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: 'register a new person in MeetSync so their calendar can be considered during scheduling.' This provides a specific verb and resource, and distinguishes it from siblings like deleteParticipant and updateParticipant.

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 this tool: 'Must be called before a participant can appear in proposals, bookings, or availability queries.' It does not mention when not to use or alternatives, but the context is clear and actionable.

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

createProposalA

Use this tool when you want to send candidate meeting times to a group and collect their votes before confirming a booking. Prerequisites: every participant in participantIds must already be registered via createParticipant; the organizerParticipantId must be one of the participantIds. Typical sequence: createParticipant for each person → findMutualAvailability to get slots → createProposal with those slots. After creation the proposal is "pending". Each participant must respond via respondToProposal (one call per person). Once all participants accept, the proposal becomes "accepted" and you call createBooking to confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort title for the proposed meeting (e.g. "Q2 Planning Sync").
descriptionNoOptional longer description or agenda.
organizerParticipantIdYesUUID of the participant organizing this meeting. Must be in participantIds.
participantIdsYesUUIDs of all participants, including the organizer.
candidateSlotsYesProposed time slots for participants to vote on. Provide between 1 and 10.
expiresAtNoWhen the proposal expires if not fully responded to. Defaults to 48 hours from creation.
locationNoOptional physical location or meeting room.
conferenceLinkNoOptional video conference URL.

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description fully bears the burden of behavioral disclosure. It reveals that the proposal starts as 'pending', each participant must respond via respondToProposal, and once all accept it becomes 'accepted' leading to createBooking. It mentions default expiration (48 hours) but does not specify behavior on rejections or partial responses, keeping it slightly short of a perfect score.

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

Conciseness4/5

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

The description is relatively concise but front-loads the purpose. It consists of 5 sentences, each contributing to clarity. It could potentially be shortened slightly without losing information, but it remains 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 tool has 8 parameters, no output schema, and no annotations, the description provides a complete picture: the tool's role in the workflow, prerequisites, lifecycle, and chaining with sibling tools. It covers all critical aspects for correct agent usage, missing only minor edge cases like rejection handling.

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 already provides 100% description coverage for all 8 parameters, so the description needs to add minimal value beyond schema. It does not elaborate on parameter meaning beyond what is in the schema, 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 identifies the tool's purpose: 'send candidate meeting times to a group and collect their votes before confirming a booking'. The verb 'create' combined with the resource 'Proposal' is specific, and the description distinguishes it from sibling tools like findMutualAvailability and createBooking.

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 explicitly states when to use the tool ('Use this tool when you want to...'), provides prerequisites (all participants must be registered, organizerParticipantId must be in participantIds), and gives a typical usage sequence (createParticipant → findMutualAvailability → createProposal). It also indicates subsequent steps (respondToProposal, then createBooking).

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

deleteParticipantA

Use this tool only when you need to permanently and irreversibly erase a participant and all their data. If the goal is simply to stop scheduling someone, use updateParticipant with status="inactive" instead — that preserves their history and can be reversed. deleteParticipant cannot be undone. By default it fails if the participant has active proposals or confirmed bookings; pass force=true only when you explicitly intend to cancel those as well.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdYesUUID of the participant to delete.
forceNoIf true, cancel any active proposals and bookings before deleting. Defaults to false.

TDQS

A4.9/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavior: permanence, irreversibility, failure by default if participant has active proposals/bookings, and force=true cancels those. All key traits are covered.

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, each earning its place: purpose+contrast, alternative, nuance. No wasted words. Front-loaded with the critical usage instruction.

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 deletion tool with no output schema, the description covers prerequisites (active proposals/bookings), behavior with force, and alternative. It is complete given 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% with descriptions. The description adds context: force=true is for cancelling active proposals/bookings, and implies default behavior. It adds value beyond the schema but does not detail the UUID format beyond what's in 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 permanently and irreversibly erases a participant and all their data. It distinguishes from updateParticipant for deactivation, and uses specific verbs like 'erase' and 'delete'. The resource and action are unambiguous.

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

Usage Guidelines5/5

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

Explicitly says 'Use this tool only when you need to permanently and irreversibly erase a participant'. Provides alternative (updateParticipant for inactivation) and warns about force=true. Excellent guidance on when and when not to use.

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

findMutualAvailabilityA

Use this tool when you need to find meeting times that work for all participants simultaneously. This is the primary scheduling intelligence tool — call it to get scored candidate slots before creating a proposal. Prerequisites: every participant in participantIds must already be registered via createParticipant (UUIDs required — names and emails are not accepted). Have ready: the UUIDs of all participants, the meeting duration in minutes, and the date range to search. The returned slots are scored 0–1 by suitability (working hours, buffer fit, daily meeting load) and the start/end values can be passed directly into createProposal as candidateSlots.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdsYesUUIDs of all participants who must be available (minimum 2).
durationMinutesYesRequired meeting duration in minutes.
startDateYesStart of the search window (YYYY-MM-DD, inclusive).
endDateYesEnd of the search window (YYYY-MM-DD, inclusive). Max 30 days from startDate.
timezoneNoIANA timezone to express candidate slots in. Defaults to the first participant's timezone.
limitNoMaximum number of candidate slots to return. Defaults to 5.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that returned slots are scored 0–1 by suitability based on working hours, buffer fit, and daily meeting load. It also states that start/end values can be passed into createProposal. This provides good insight into the tool's behavior, though it could mention whether the tool is read-only (it appears to be, but not explicitly stated).

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 a single focused paragraph that covers purpose, prerequisites, and output usage. Every sentence provides value, and the information is well-organized. It could be slightly more structured (e.g., bullet points for prerequisites), but it is appropriately concise for the complexity of the tool.

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 lack of an output schema, the description partially explains the return format (scored slots with start/end values) but does not detail all fields in the response. This could hinder an agent's understanding of the full output. For a tool with no output schema, a more complete description of the return structure would be beneficial.

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 baseline is 3. The description adds significant context beyond the schema: it explains that participantIds must be UUIDs from createParticipant, defines the scope of durationMinutes and date range, and notes that the timezone defaults to the first participant's timezone. This enhances the agent's understanding of how to use the parameters correctly.

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 that the tool finds meeting times for all participants simultaneously and positions itself as the primary scheduling intelligence tool. It also distinguishes itself by noting that the returned slots can be passed directly into createProposal, which differentiates it from sibling tools like getParticipantAvailability.

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 guidance on when to use the tool ('when you need to find meeting times that work for all participants') and lists prerequisites (participants must be registered via createParticipant, UUIDs required). It does not explicitly state when not to use it, but the context is sufficient for an agent to understand its primary use case.

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

getBookingA

Use this tool when you need to retrieve full details about a specific booking — including its status, participants, start/end times, calendar event IDs, and any linked proposal. Useful for confirming a booking was created successfully or for building a summary to share with participants.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesUUID of the booking to retrieve.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description must disclose behavior. It accurately describes a read-only retrieval operation, lists the returned data, and implies no side effects. It does not mention error handling or permissions, but for a simple getter this is sufficient.

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 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?

Despite lacking an output schema, the description enumerates the returned fields and provides practical usage examples. For a single-parameter read operation, it 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?

Parameter schema already has full coverage (UUID description). The description does not add extra semantics beyond the schema's definition, so 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?

The description explicitly states 'retrieve full details about a specific booking' and lists the included fields (status, participants, times, event IDs, proposal). It clearly distinguishes from siblings like listBookings which lists multiple bookings.

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 'Use this tool when you need to retrieve full details' and provides concrete use cases (confirming creation, building summary). It lacks explicit when-not-to-use or alternative tools, but the context is clear enough.

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

getParticipantA

Use this tool when you already have the participant's UUID and need to look up their details — timezone, calendar provider, or status. Prerequisite: you must have the UUID from a prior createParticipant or listParticipants call. If you only have a name or email address and need the UUID, call listParticipants first. Note: this does not return scheduling preferences — call getParticipantPreferences for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdYesUUID of the participant.

TDQS

A5/5.0
Behavior5/5

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

No annotations provided, but description fully discloses what is returned, what is not (scheduling preferences), and the prerequisite. 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 efficient sentences, logically flow from purpose to prerequisite to boundary, with no wasted 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?

Complete for a simple lookup tool: covers what is returned, what is not, and how to obtain the input.

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

Parameters5/5

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

The description adds context that the participantId UUID comes from prior create/list calls, enriching the schema's minimal 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?

The description clearly states the tool's purpose: to look up participant details (timezone, calendar provider, status) using their UUID, distinguishing it from siblings like getParticipantPreferences.

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 explains when to use (when UUID is known), prerequisite (UUID from prior call), and alternative (listParticipants for name/email).

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

getParticipantAvailabilityA

Use this tool when you need to inspect the free time windows for exactly one participant — for example, to verify they are free at a specific time before booking directly, or to understand one person's constraints before a conversation. Do not use this for group scheduling — if you need a time that works for multiple people at once, call findMutualAvailability instead. Prerequisite: you must have the participant's UUID from createParticipant or listParticipants.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdYesUUID of the participant whose availability you want.
startDateYesStart of the date range to check (YYYY-MM-DD, inclusive).
endDateYesEnd of the date range to check (YYYY-MM-DD, inclusive). Max 30 days from startDate.
timezoneNoIANA timezone to express results in. Defaults to the participant's own timezone.
minDurationMinutesNoExclude free windows shorter than this. Defaults to 30.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not explicitly state that the tool is read-only, nor does it disclose any side effects, rate limits, or error conditions. The read-only nature is implied but not guaranteed.

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: (1) purpose and use case, (2) when not to use with alternative, (3) prerequisite. No redundancy, front-loaded, every sentence adds value.

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 description is complete for usage intent but lacks details about return format and behavior (e.g., does it return free windows or busy slots? Pagination? Defaults for timezone and minDurationMinutes are mentioned in schema, not description. No output schema provided.

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 input schema already documents all parameters. The description adds a prerequisite context (participantId from other tools) but does not enhance parameter semantics 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: inspect free time windows for exactly one participant. It specifies use cases (verify availability before booking, understand constraints) and explicitly distinguishes from the sibling tool findMutualAvailability for group scheduling.

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 on when to use (single participant) and when not to (group scheduling, recommending findMutualAvailability instead). It also includes a prerequisite: the participant's UUID from createParticipant or listParticipants.

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

getParticipantPreferencesA

Use this tool when you need to read a participant's scheduling preferences — working hours by day, blackout windows, buffer time between meetings, and maximum meetings per day. Important: getParticipant does not return preferences; you must call this tool separately. Call this before setParticipantPreferences if you only want to update some fields, since setParticipantPreferences replaces the entire preference object.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdYesUUID of the participant.

TDQS

A4.5/5.0
Behavior4/5

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

The description clearly implies a read-only operation by stating 'read a participant's scheduling preferences,' but it does not explicitly declare that the tool has no side effects, especially in the absence of annotations. While the read intent is unambiguous, a more explicit statement about non-mutation would increase transparency. Score 4 reflects minor omission.

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, each serving a distinct purpose: stating the tool's function, warning about a sibling limitation, and providing usage best practices. There is no redundant or filler content, and the key information is front-loaded.

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 tool with one parameter and no output schema, the description is complete. It explains what data is returned (preferences components) and supplies context about sibling tools and usage sequencing. No further details (e.g., error handling, pagination) are necessary 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?

The input schema has 100% coverage with a single parameter (participantId) already documented as a required UUID. The description does not add any additional semantics about this parameter beyond what the schema already provides. The baseline for high coverage is 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 explicitly states the tool reads a participant's scheduling preferences and lists the components (working hours, blackout windows, buffer time, max meetings per day). It distinguishes itself from the sibling getParticipant by noting that getParticipant does not return preferences, making the purpose clear and distinct.

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 when-to-use guidance ('Use this tool when you need to read a participant's scheduling preferences'), a when-not-to-use note (getParticipant does not return preferences), and a usage recommendation relative to setParticipantPreferences ('Call this before setParticipantPreferences if you only want to update some fields, since setParticipantPreferences replaces the entire preference object'). This is comprehensive and educational.

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

getProposalA

Use this tool when you need to inspect a specific proposal — to see its current status, check which participants have and have not yet responded, or retrieve the acceptedSlotId you will need to pass into createBooking once the proposal is accepted. If you do not have the proposalId, call listProposals first.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesUUID of the proposal to retrieve.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only operation (inspect, see, check, retrieve) but does not explicitly state that no changes are made or mention any side effects. The description is sufficient for a simple retrieval tool, but explicit read-only confirmation would be ideal.

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: three sentences that front-load the main purpose, list specific use cases, and provide a conditional instruction. No unnecessary words, every sentence contributes meaning.

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 adequately describes the type of return data (status, participant responses, acceptedSlotId). It covers enough for an agent to understand what to expect, though a full list of properties would be more 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?

The input schema has 100% coverage for the single parameter proposalId. The description adds value by advising how to obtain the parameter (via listProposals if missing) and explaining that the output includes key data like acceptedSlotId, which is useful context beyond the schema's type 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?

The description clearly states the tool's purpose: inspect a specific proposal. It lists concrete use cases (status, participant responses, acceptedSlotId) and distinguishes from sibling listProposals by advising to call that first if no proposalId is available.

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?

Provides explicit usage instructions: use when you need to inspect a specific proposal, and if you lack the proposalId, call listProposals first. Also explains that the acceptedSlotId is needed for createBooking, offering clear context on when this tool is appropriate.

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

listBookingsB

Use this tool when you need to retrieve confirmed, cancelled, or rescheduled meetings. Supports filtering by participant, status, and time range. Call this to check a participant's upcoming meetings or to find a specific booking before rescheduling or cancelling it.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdNoFilter to bookings that include this participant.
statusNoFilter by booking status.
startAfterNoReturn bookings that start after this ISO 8601 datetime.
startBeforeNoReturn bookings that start before this ISO 8601 datetime.
pageNo
limitNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description must fully convey behavior. It does not mention pagination, default limit, sorting, or what happens without filters. The read-only nature is implied but not stated. This is a significant gap for a listing tool.

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

Conciseness5/5

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

Three concise sentences that front-load purpose, followed by filtering capabilities and an example use. No waste.

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

Completeness2/5

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

Missing output schema, no mention of response format, default sorting, or pagination limits. For a list tool with 6 parameters, the description should cover these to be complete.

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

Parameters2/5

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

Schema descriptions cover 4 of 6 parameters, but the description adds no extra insight beyond the schema. The 'page' and 'limit' parameters lack descriptions, and the description does not explain pagination behavior. Schema description coverage at 67% is moderate, but the description fails to compensate.

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

Purpose4/5

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

Description explicitly states 'retrieve confirmed, cancelled, or rescheduled meetings' and gives examples, making purpose clear. However, it does not strongly differentiate from sibling tools like getBooking (singular) or listParticipants.

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 explicit usage contexts: 'when you need to retrieve meetings', 'check a participant's upcoming meetings', 'find a specific booking before rescheduling or cancelling'. This guides when to use the tool, though it could mention when not to (e.g., for a single booking use getBooking).

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

listParticipantsA

Use this tool when you need to find participants and you do not yet have their UUID — for example, when you only know their name or email address. Also use it to verify a person is registered before scheduling, or to enumerate all active participants. If you already have a participant's UUID, use getParticipant instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter participants by status.
pageNoPage number (1-based).
limitNoResults per page.

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does not disclose behavioral traits beyond listing (e.g., that it is non-destructive or any rate limits). The mention of 'active participants' slightly contradicts the schema which also includes inactive status, but this is minor.

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 that front-load the primary purpose and immediately provide usage guidance. Every sentence adds value without redundancy.

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 tool's simplicity and no output schema, the description covers all essential aspects: when to use, what it returns (list of participants), and how it differs from siblings. It is complete for the context.

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, so the baseline is 3. The description does not add additional meaning beyond what is already in the schema parameter descriptions.

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: finding participants without UUID, verifying registration, and enumerating active participants. It distinguishes from getParticipant by specifying the prerequisite (UUID).

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 explicitly tells when to use this tool (when no UUID, need to verify or enumerate) and when to use the alternative (getParticipant if UUID is known), providing clear guidance.

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

listProposalsA

Use this tool when you need to browse existing meeting proposals — for example, to check whether a proposal is still pending, to find proposals involving a particular participant, or to audit all pending proposals before creating a new one. Supports filtering by status and organizer.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizerParticipantIdNoFilter to proposals created by this participant.
participantIdNoFilter to proposals that include this participant.
statusNoFilter by proposal status.
pageNo
limitNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It mentions filtering by status and organizer but does not disclose behavioral details such as pagination behavior (page/limit parameters exist but are unexplained), ordering, or whether the tool is read-only. This is adequate but not thorough.

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 the usage guidance. Every sentence adds value with no repetition or 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?

Given the tool has five parameters, no output schema, and no annotations, the description provides a good overview of purpose and typical use cases. It is missing details about pagination and return format, but it is reasonably complete for a list tool with clear parameters.

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 60% (descriptions for three out of five parameters). The description adds context for filtering by status and organizer but does not cover the participantId filter or explain the page and limit parameters. It adds minimal 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: browsing existing meeting proposals. It provides specific examples (check pending, find by participant, audit) and distinguishes itself from sibling tools like getProposal or createProposal by focusing on listing and filtering.

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?

It explicitly says 'Use this tool when you need to browse existing meeting proposals' and gives concrete use cases. It implies alternatives exist for modifying proposals, as sibling tools like cancelProposal, createProposal, and respondToProposal are listed separately.

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

rescheduleBookingA

Use this tool when you need to move a confirmed meeting to a new time. The new startTime must be in the future. Conflict detection runs automatically for all participants. Only bookings with status "confirmed" can be rescheduled.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookingIdYesUUID of the booking to reschedule.
startTimeYesNew start time as ISO 8601 datetime with timezone offset. Must be in the future.
endTimeYesNew end time as ISO 8601 datetime with timezone offset.
reasonNoOptional reason for the reschedule.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions conflict detection and status validation but omits important details like whether notifications are sent, if the previous slot is freed, or permission requirements. It provides some transparency but not comprehensive.

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 concise sentences, each adding essential information. The purpose is front-loaded, and every sentence earns its place without redundancy or verbosity.

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 description covers key constraints but lacks any mention of what the tool returns (e.g., success indication, updated booking object) or error conditions. Given no output schema, this is a gap in 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 the description adds limited value beyond restating constraints. It mentions 'conflict detection' and 'only confirmed' status, which are not in the schema, but does not elaborate on the 'reason' parameter or output behavior.

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 ('move'), resource ('a confirmed meeting'), and specific constraints (new time, only confirmed bookings). It distinguishes from siblings like 'cancelBooking' and 'updateParticipant' by focusing on rescheduling.

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 ('when you need to move a confirmed meeting') and includes conditions (future start time, conflict detection, confirmed status). However, it does not mention explicit alternatives, which would raise it to a 5.

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

respondToProposalA

Use this tool to record one participant's response (accept or reject) to a meeting proposal. This must be called once per participant — if a proposal has 3 participants, you must call this tool 3 separate times, once for each participantId. Call getProposal first to see which participants have not yet responded (check the responses array). When accepting, the participant can indicate a preferredSlotId from the proposal's candidateSlots. Once every participant has responded and all accepted, the proposal automatically becomes "accepted" and you can then call createBooking (proposal-based mode) to confirm the meeting.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalIdYesUUID of the proposal being responded to.
participantIdYesUUID of the participant submitting their response.
statusYes"accepted" to agree to the proposal, "rejected" to decline.
preferredSlotIdNoUUID of the participant's preferred slot within the proposal (only used when status is "accepted").
noteNoOptional message to include with the response (e.g. reason for rejection).

TDQS

A4.6/5.0
Behavior4/5

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

No annotations, so description carries full burden. It discloses that the tool must be called per participant, the auto-acceptance condition, and the follow-up action. Lacks details on error states but sufficient for a recording action.

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, each with purpose. Front-loaded usage guide, no wasted words. Efficiently conveys necessary workflow.

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 the workflow fully, mentions pre-step (getProposal) and post-step (createBooking). Missing error handling (e.g., duplicate responses) but complete for typical use.

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%, baseline 3. Description adds context: preferredSlotId only for 'accepted', participantId per participant, and linking to candidateSlots. Adds value 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?

The description clearly states it records a participant's response to a meeting proposal, specifying the verb 'record' and the resource. It distinguishes from siblings like createProposal and getProposal by focusing on the response action.

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 states when to use: after calling getProposal, once per participant. Provides a step-by-step workflow and mentions the follow-up call to createBooking after all accepted. Clear distinction from alternatives.

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

setParticipantPreferencesA

Use this tool when you need to set a participant's scheduling preferences: working hours, blackout windows, buffer time, and daily meeting cap. WARNING — this is a full replacement, not a partial update: any preference not included in your call reverts to its default value, which will silently overwrite existing settings. If you only want to change one field (e.g. bufferMinutes), call getParticipantPreferences first to read the current values, then send the full merged object back here.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdYesUUID of the participant.
workingHoursNoWorking hours keyed by day of week (monday–sunday). Each day has start/end in HH:MM format and an enabled flag.
blackoutWindowsNoRecurring unavailable time blocks (e.g. lunch, standup).
bufferMinutesNoMinimum gap (minutes) between consecutive meetings.
maxMeetingsPerDayNoMaximum number of meetings per calendar day.

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses the critical behavioral trait of full replacement, warning that omitted preferences revert to defaults. Since no annotations are provided, the description carries the full burden, and it does so effectively, alerting the agent to a potentially destructive side effect.

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 purpose, and uses a clear warning format. Every sentence serves a purpose: stating use case, listing fields, and warning about replacement behavior. Highly concise.

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 tool's complexity (5 parameters, nested objects) and absence of output schema, the description adequately covers the scenario. It explains the full-replacement behavior, guides partial updates, and references the read tool. This is sufficient for correct invocation.

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 already has 100% coverage with descriptions for every parameter. The description adds no per-parameter semantics but provides overarching behavioral context. Baseline 3 is appropriate as the description does not detract but adds limited extra value 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?

The description clearly states the tool's action ('set a participant's scheduling preferences') and enumerates the specific fields it manages (working hours, blackout windows, buffer time, daily meeting cap). It also distinguishes itself from sibling tool 'getParticipantPreferences' by implying a complementary relationship.

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 explicitly tells when to use the tool ('when you need to set a participant's scheduling preferences') and when not to (if only changing one field, recommending a read-then-write pattern). It provides clear guidance on avoiding data loss.

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

updateParticipantA

Use this tool when you need to change a participant's name, email, timezone, or calendar provider, or when you want to soft-deactivate a participant by setting status to "inactive". Only the fields you supply are changed (partial update — other fields stay as-is). Prefer this over deleteParticipant when you want to stop scheduling someone without erasing their history.

ParametersJSON Schema
NameRequiredDescriptionDefault
participantIdYesUUID of the participant to update.
nameNoUpdated full name.
emailNoUpdated email address.
timezoneNoUpdated IANA timezone identifier.
calendarProviderNoUpdated calendar provider.
icalUrlNoUpdated iCal URL (required if switching to ical provider).
statusNoSet to "inactive" to soft-deactivate.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description discloses partial-update behavior (only supplied fields change) and soft-deactivation via status. It could mention more about idempotency or authorization, but the key behavior is covered.

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, all essential: purpose, partial-update clarification, and sibling differentiation. No wasted 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 7 parameters, no output schema, and no annotations, the description fully explains the tool's purpose, behavior, and when to use alternatives. It covers soft-deactivation and partial update clearly.

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 baseline is 3. The description adds value by explicitly stating it's a partial update and listing the common fields to update, reinforcing the schema descriptions.

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 specifies the verb 'update', the resource 'participant', and lists exactly which fields can be changed (name, email, timezone, calendar provider, status). It also distinguishes itself from the sibling deleteParticipant.

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 explicitly says 'Prefer this over deleteParticipant when you want to stop scheduling someone without erasing their history.' This provides clear when-to-use and when-not-to-use guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 19 tool updatesv2.0.0
    • First observedcancelBooking
    • First observedcancelProposal
    • First observedcreateBooking
    • First observedcreateParticipant
    • First observedcreateProposal
    • First observeddeleteParticipant
    • First observedfindMutualAvailability
    • First observedgetBooking
    • First observedgetParticipant
    • First observedgetParticipantAvailability
    • First observedgetParticipantPreferences
    • First observedgetProposal
    • First observedlistBookings
    • First observedlistParticipants
    • First observedlistProposals
    • First observedrescheduleBooking
    • First observedrespondToProposal
    • First observedsetParticipantPreferences
    • First observedupdateParticipant

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, with detailed descriptions that explicitly differentiate similar actions (e.g., cancelBooking vs. cancelProposal vs. rescheduleBooking). Descriptions warn against misuse and guide correct tool selection, eliminating ambiguity.

Naming Consistency5/5

All tool names consistently follow the verbNoun pattern in camelCase (e.g., createProposal, findMutualAvailability, setParticipantPreferences). Verbs are descriptive and predictable, with no mixing of conventions or vague names.

Tool Count4/5

19 tools cover the full scheduling domain, but the count slightly exceeds the ideal 3-15 range for a well-scoped set. Still, each tool earns its place for participant, proposal, booking, and availability management, so the slight excess is reasonable.

Completeness5/5

The tool surface covers the complete lifecycle: participant CRUD plus preferences, proposal creation/response/cancellation, booking CRUD with rescheduling, and availability lookup (individual and group). No obvious gaps are present for the stated purpose of meeting scheduling.

Maintenance

ActivityInactive
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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to intelligently schedule meetings by checking Microsoft Outlook calendars, finding available time slots across multiple participants, and automatically booking meetings with Teams integration. Uses Microsoft Graph API with smart fallback logic for optimal scheduling.
    1
    -
  • 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.
    -

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/nicholasemccormick/mcp-meetsync'

If you have feedback or need assistance with the MCP directory API, please join our Discord server