Skip to main content
Glama

Server Details

Outlook.com, Microsoft 365, Google calendars: free time, events, invitations, booking pages, polls.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation4/5

Tools mostly target distinct resources and actions, but the scheduling-surface tools (booking_links_create, booking_page_set, polls_create, free_times_find) share conceptual overlap that could cause hesitation. The detailed descriptions clarify scope, so misselection risk is low but not zero.

Naming Consistency4/5

Names are consistently snake_case with a resource_action pattern (events_create, calendars_list, polls_book), which is predictable and readable. However, polls_results breaks the pattern by ending in a noun rather than a verb, and a few names are notably long.

Tool Count4/5

21 tools for a feature-rich multi-calendar scheduling domain covering events, booking, polls, circles, preferences, and busy copies is on the high side but each tool appears to cover a distinct operation. Slightly heavy but reasonable for the scope.

Completeness4/5

Core event lifecycle, booking links/pages, polls, circles, preferences, and busy-time mirroring are covered, giving broad CRUD-like support. Minor gaps include no explicit tool to delete a circle, remove circle members, or permanently delete events, though agents can work around these via cancellation or manual cleanup.

Available Tools

21 tools
booking_page_setSet up a booking pageB
DestructiveIdempotent
Inspect

Set one of the person's permanent booking pages, named by the name it answers at on this site: the one they hold by that name changes in the fields given alone, newName moving it to a new address while its old one answers nothing; a name they hold no page by adds a page, which needs subject and stays until the account goes. Anyone opening a page, with no account, sees up to 20 times free in every calendar within the person's working hours - Monday to Friday 09:00-17:00 where they stored none - and every other preference, spread across the coming 14 days, each day's preferred times first, in their own time zone, and books one by giving a name and address, in the calendar the person named to receive bookings; a time is booked once across all their pages. The page a guest opens names nobody but the meeting, so put the person's own name in subject, e.g. Intro call with Sam Lee. An event holds its time as its provider's own free/busy shows it: on Google unless shown as available or declined - an invitation not yet answered or answered maybe included - and on Outlook only when shown busy or away, so an Outlook tentative answer leaves its time free; a cancelled event holds none.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe page's name in its address: 3 to 40 lowercase letters, digits and hyphens.
minutesNoMeeting length in minutes; for a new page the stored one where omitted.
newNameNoA new name for the page named, which its address then carries.
subjectNoThe meeting's name, as the guest reads it; a new page needs it.

TDQS

B3.1/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and idempotentHint=true, and the description substantiates these: newName moves the page to a new address while 'its old one answers nothing', fields not given are left alone (idempotent partial update), and a page persists 'until the account goes'. It also discloses substantial downstream behavior (booked-once-per-time, provider free/busy rules). It stops short of stating permissions or rate limits, so not a 5.

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

Conciseness2/5

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

The description is one long, clause-dense run-on mixing upsert rules, guest booking behavior, timezone handling, and provider free/busy semantics. Key operational facts are not front-loaded and the archaic style ('answers nothing', 'where they stored none') impedes parsing rather than aiding it.

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 a mutation tool with 4 params and no output schema, the description does cover creation vs. update, guest booking constraints, and free/busy rules reasonably thoroughly. It omits return values and permission requirements, and its density means an agent may miss details it does contain.

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, but the description adds real meaning beyond the schema: newName relocates the address and deactivates the old one, and subject should carry the person's own name (e.g. 'Intro call with Sam Lee') because the public page names nobody. That is genuine semantic guidance not present in the field descriptions.

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

Purpose3/5

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

The verb 'Set' and resource 'booking page' are present, and the description does convey upsert semantics (update by existing name, add otherwise). However, the purpose is buried in indirect phrasing like 'named by the name it answers at on this site', which forces the agent to decode the sentence to learn it creates OR modifies a page. It is distinguishable from siblings only after effort.

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

Usage Guidelines2/5

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

There is no explicit statement of when to use this tool versus alternatives such as booking_links_create or polls_create. The description describes effects and guest-facing behavior but never says under which circumstances an agent should choose this tool over a sibling, nor any prerequisites or exclusions.

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

busy_everywhere_setShow busy time everywhereA
DestructiveIdempotent
Inspect

Show one of an account's own calendars as busy in another connected account the person names, or stop: within minutes each busy event of the coming 60 days appears as a private block titled "Busy · <the calendar's account address> (Multi Calendar connector)" in the main calendar of the account named, while it allows changing events - never in another calendar, and never in an account nobody named, one connected later included - one block per busy time however many calendars named into it hold it. A block moves with its event, goes when the event ends or goes or the pair is taken away, and is placed again if removed by hand; events_list answers blocks apart from events under busyCopies, and no tool counts, moves or cancels one. Naming a pair answers under shows the sentence to give the person word for word. calendars_list names each calendarId and the accounts each calendar already shows busy in.

ParametersJSON Schema
NameRequiredDescriptionDefault
onYesTrue names the pair, false takes it away.
intoYesThe other connected account to show its busy time in, by the address calendars_list names.
accountYesThe connected account, by the address calendars_list names.
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
calendarIdYesThe calendar, by the calendarId calendars_list names.
intoProviderNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint, idempotentHint, readOnly false), the description discloses a great deal of runtime behavior: blocks appear within minutes, cover the coming 60 days, are private and titled with a specific format, are placed only in the main calendar of the named account, are deduplicated across multiple calendars, follow their event, and are re-placed if removed by hand. This is exactly the kind of context annotations cannot convey.

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

Conciseness2/5

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

The description is a single sprawling, em-dash-laden run-on that is hard to parse and not front-loaded around the primary action. While most clauses carry real information, the structure undermines readability and forces re-reading to extract the core behavior.

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 complex, cross-account, destructive write tool with no output schema, the description covers the effect, lifecycle, scoping, and read-path (busyCopies) well. It omits only secondary details such as permission/auth requirements and any rate-limit behavior.

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 every parameter including the boolean on, the into/account addresses, and the provider disambiguators. The description adds little parameter-specific meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific action — mirroring one account's calendar as busy blocks into another named account, or removing that mirroring. It distinguishes itself from siblings by noting that events_list surfaces blocks under busyCopies and that no tool counts, moves, or cancels a block. The unusual 'Show ... or stop' framing is a bit indirect but the resource and effect are clear.

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?

It implies the context (make an account's busy time visible in another connected account) and points to calendars_list for the identifiers and events_list for reading blocks. However it never explicitly frames when to choose this over alternatives like free_times_find or circles_free_times_find, so the when-to-use guidance is only implied.

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

calendars_listList calendarsA
Read-only
Inspect

List every calendar of every connected Outlook.com, Microsoft 365 and Google account, each naming its account and provider, its calendarId, whether it is that account's default, whether the account owns it - one merely shared with it is not owned - and its owner's address, its access - edit, read, or freeBusy where Google lets only busy time be read - hidden where the person hid it from their Google list, its own time zone where Google keeps one - Outlook keeps none per calendar - and, under busyShownIn, each other account its busy time shows in. An account that could not be read, or whose events the person does not let you see, is named under unread with why, and one holding more calendars than one answer carries under cutShort.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower, yet the description still adds substantial behavior: it discloses ownership vs. mere sharing, Google-specific access modes (edit/read/freeBusy), hidden calendars, per-calendar time zones only where the provider keeps them, the busyShownIn cross-account view, and the unread/cutShort failure and truncation cases. This is genuinely useful context beyond the annotations, though it documents the response rather than any call-time behavior.

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

Conciseness3/5

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

It is front-loaded with the operation and every clause carries return-field information rather than padding, but the entire description is a single sprawling run-on sentence built from comma-separated clauses and em-dash asides. It front-loads well but is hard to parse and would benefit from being broken into structured sentences.

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?

With no output schema and no parameters, the description carries the full burden of explaining what comes back, and it does so in detail, including the unread (unreadable accounts / restricted events) and cutShort (more calendars than one answer carries) edge cases. The main omission is any explicit statement of how to page past the described cutShort truncation.

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 tool takes zero parameters and the schema is empty with additionalProperties=false, so there are no parameter semantics to explain; the baseline for a 0-parameter tool is 4. Nothing in the description conflicts with 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 opens with a specific verb and resource ('List every calendar of every connected Outlook.com, Microsoft 365 and Google account') and scopes the breadth across all accounts, which cleanly separates it from siblings like events_list or free_times_find. An agent can identify the operation and its scope without opening the schema.

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?

Usage is only implied: the tool lists calendars, so an agent infers it should be called for calendar discovery, but no alternative is named and no precondition or 'use this instead of X' guidance is given. Given the 0-parameter, list-everything nature of the tool the implied usage is fairly unambiguous, but it stops short of explicit routing.

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

circles_free_times_findFind a time for a circleA
Read-only
Inspect

Find when everyone in one of the person's circles is free: each stretch of a window that no member's busy time touches and that is at least as long as the meeting, in the zone the call names, else the person's own - the same whichever member asks, save for a member with no calendar connected, counted by the asker's own polls. The calendars each member owns and counts as busy - never one someone else shared with them - are read through that member's own connection as the call is made, and come back under busy only as when that member is busy - the circle's owner named owner, every other member by the address invited - never what an event says. An event holds its time as its provider's own free/busy shows it: on Google unless shown as available or declined - an invitation not yet answered or answered maybe included - and on Outlook only when shown busy or away, so an Outlook tentative answer leaves its time free; a cancelled event holds none. An all-day event holding time holds its whole day in its member's time zone; no one's stored working hours or other preferences apply, only the hours and weekdays the call names, in the answer's zone; limit keeps the earliest stretches, and the search keeps to the window's first 365 days. A member none of whose calendars could be read is named under unknown, and one only some of whose could under readInPart, their busy time read counted; either's busy time may fall inside a stretch. A member with no calendar connected counts as free only at the times they ticked in the person's own polls for this circle, and until they answer one is named under noCalendar - polls_create naming the circle asks them. On the person's own circle each address invited that has not joined is named under notJoined and counts the same way once it answers such a poll. Anyone counted by polls whose answers tick no time in the window is named under tickedNothing. Each stretch names under members every other member's own time for it in the zone they stored, marked unusual where any of it falls outside 09:00-18:00 or on a Saturday or Sunday there. circles_list names each circle's id.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd of the window, excluded, with its offset.
fromYesStart of the window, included, with its offset, e.g. 2026-10-12T09:00:00+01:00.
hoursNoOnly these hours of each day, e.g. 10:00-16:00 or 09:00-12:00, 14:00-17:00.
limitNoAt most this many stretches, the earliest.
circleYesThe circle's id, as circles_list names it.
minutesNoMeeting length in minutes; the stored one where omitted.
timeZoneNoAn IANA zone such as Europe/London the answer is given in; the stored one where omitted.
weekdaysNoOnly these days of the week.

TDQS

A4/5.0
Behavior5/5

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

Annotations only supply readOnly/openWorld/destructive hints; the description goes far beyond them, disclosing which calendars are read and through whose connection, Google vs Outlook busy semantics (tentative/cancelled/all-day events), the 365-day search cap, and the unknown/readInPart/noCalendar/notJoined/tickedNothing member states. This is unusually deep behavioral disclosure for a read-only tool.

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

Conciseness3/5

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

The core purpose is front-loaded in the first clause, but the remainder is a single dense block of run-on clauses with coined terms (tickedNothing, readInPart) that force re-reading. Nearly every sentence carries genuine semantics, so it is information-dense rather than padded, but the structure is poor and the length approaches the limit of usability.

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?

There is no output schema, so the description carries the return-value burden itself and does so thoroughly, naming every status bucket (busy, unknown, readInPart, noCalendar, notJoined, tickedNothing), the per-stretch members list, and the unusual marker. For an algorithmically complex tool this leaves little an agent needs to know unstated.

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, but the description adds real meaning beyond the schema: timeZone falls back to the stored zone, limit keeps the earliest stretches, hours/weekdays restrict what the search considers, and the window is capped at its first 365 days. These are semantics the schema text alone does not convey.

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?

Opens with a specific verb+resource+scope: "Find when everyone in one of the person's circles is free," which clearly separates it from the sibling free_times_find (single-person) and from circles_list. It never names those siblings explicitly, so the differentiation is inferable rather than stated.

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?

Usage is implied by the scope (mutual availability inside a circle), and the closing line "circles_list names each circle's id" usefully points at the prerequisite for the circle parameter. There is no explicit when-to-use-this-vs-free_times_find guidance and no exclusions or failure conditions.

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

circles_inviteInvite people into a circleA
Destructive
Inspect

Invite people by address into one of the person's own circles: an existing one by its id, as circles_list names it, or one by its name, matched whatever its case and made where the person has none by it - two of the person's circles whose names differ only in case are refused, naming both ids. The answer names the circle's id and whether it was made. Each address newly invited gets its own link, which only an account signed in at that address can join with; an address already invited keeps the link it was sent and is named under kept, unless reissue asks for a new one, which stops the old. Lumman sends invitees nothing: hand the links to the person to share, or send each from the person's own mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe circle's name, where no id is passed.
circleNoAn existing circle's id, as circles_list names it.
reissueNoGive an address already invited a new link, stopping the one it was sent.
addressesYesAddresses to invite.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the annotations: it discloses case-insensitive name matching with ambiguity refusal that names both ids, per-address link issuance, the 'kept' vs reissued link distinction, that reissue stops the old link (consistent with destructiveHint=true), and the critical fact that no mail is sent by the system. These are exactly the operational traits an agent cannot infer from the 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?

Front-loads purpose and circle selection, and every sentence carries information rather than filler. The dense, idiosyncratic phrasing ('made where the person has none by it', 'Lumman sends invitees nothing') costs some readability, but nothing is redundant.

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?

With no output schema, the description compensates by naming the response fields (circle id, whether it was made, kept vs new links) and the no-email side effect. It leaves out authorization requirements and rate limits, but for a 4-parameter mutation tool this is close to 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 the baseline is 3, but the description adds real meaning: name-vs-id precedence, case-insensitive matching semantics for name, and that a new address gets its own link while an existing one keeps its link unless reissue is set. Only the addresses/reissue mechanics largely duplicate the schema wording.

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?

States a specific verb+resource (invite people by address into a circle) and immediately scopes it to 'one of the person's own circles', naming circles_list as the authority for circle ids. An agent can distinguish this from circles_list or circles_free_times_find without opening any schema.

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?

Clear about the id-vs-name selection rule ('an existing one by its id... or one by its name, matched whatever its case') and explicit about what to do afterwards ('hand the links to the person to share, or send each from the person's own mailbox'). It stops short of stating when-not to use it or naming an alternative tool for a different invite path.

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

circles_listList circlesA
Read-only
Inspect

List every circle the person owns or has joined: its id, its name, whether it is the person's own, the address of each member who has joined and, on the person's own, of each address invited that has not joined under invited. circles_free_times_find finds a time for one.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral detail beyond that: it enumerates the returned fields and clarifies that invited-but-not-joined addresses appear as 'invited' only on the person's own circles.

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?

It is a single sentence front-loaded with the verb and resource, and every clause carries information. The clause about invited addresses is grammatically convoluted ('on the person's own, of each address invited...') and slightly slows parsing, but nothing is wasted.

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?

With no output schema, the description must carry the return-value burden, and it does by naming the fields returned. Nothing needs to be said about parameters or safety beyond the annotations, so the definition is essentially complete for a zero-param read 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?

The tool takes zero parameters and the schema is an empty object with additionalProperties=false, so there is nothing for the description to disambiguate. No parameter semantics are needed.

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?

States a specific verb (list) and resource (circles) with an explicit scope: every circle the person owns or has joined. It also names the sibling circles_free_times_find and its different job, so an agent can separate the two without opening either schema.

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 closing pointer to circles_free_times_find implies the boundary between browsing circles and finding a meeting time, but there is no explicit statement of when to call this tool versus circles_invite or the free-times tool. Usage is only implied, not stated.

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

events_cancelCancel an eventA
DestructiveIdempotent
Inspect

Cancel an event the account organises; its provider sends a meeting's attendees the cancellation from that account's own address, as notify chooses, and Outlook sends message with it. Someone else's event is not cancelled here: declining it with events_respond takes it off an Outlook calendar and leaves it on a Google one, shown declined. copyOnly true takes only the account's own copy of someone else's event off its calendar - an Outlook copy its organiser has cancelled included - sending nothing, though Google then shows the account as declined and so needs inviting and replying allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFor an occurrence of a recurring series: occurrence, where omitted, acts on that occurrence alone, series on its whole series. A series named by its own seriesId is refused unless series is passed.
notifyNoWho the provider tells: every guest where omitted, externalOnly only guests outside Google Calendar, none nobody. Outlook tells every guest of a meeting it makes, changes or cancels, so there only an answer goes untold.
accountYesThe connected account, by the address calendars_list names.
eventIdYesThe event's id, as events_list names it.
messageNoWords sent to the guests with the cancellation; Outlook alone sends them.
copyOnlyNoTrue to take only the account's own copy of someone else's event off its calendar; the event stands for everyone else.
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
calendarIdNoThe calendar holding the event, by the calendarId events_list names; a Google account's event outside its default calendar needs it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true, so the safety profile is covered; the description goes beyond them by disclosing that the provider sends the cancellation from the account's own address, that Outlook alone sends the message, and that copyOnly sends nothing while leaving Google showing the account as declined. It stops short of stating irreversibility or auth requirements, but the side-effect disclosure is genuinely useful.

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

Conciseness3/5

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

The verb+resource is front-loaded, and nearly every clause carries real information (no filler). However, it is compressed into a single sprawling paragraph with tangled clauses such as 'as notify chooses, and Outlook sends message with it', which makes it harder to parse than the content warrants.

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?

With eight parameters, open-world external effects, and no output schema, the description covers ownership, notification behavior, provider differences, and the copyOnly edge case including its Google-side aftermath. An agent has enough to call it correctly; only the absence of any pagination/return or error-behavior note keeps it from being fully 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 description coverage is 100%, so all eight parameters are already documented in the schema, including the provider quirks for notify and message. The prose restates some of that (copyOnly, notify) rather than adding syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The opening clause 'Cancel an event the account organises' gives a specific verb and resource plus an ownership scope, and the description explicitly contrasts itself with events_respond for events the account does not own. The purpose is identifiable, though the delivery is buried in a dense run-on sentence rather than stated crisply.

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 names the alternative path explicitly ('Someone else's event is not cancelled here: declining it with events_respond') and explains the calendar-dependent consequences of that alternative. It also gives the condition for copyOnly (someone else's event, own copy only). It stops short of a clean when-not list, but the routing guidance is concrete.

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

events_createCreate an eventA
DestructiveIdempotent
Inspect

Create an event in one of a connected account's own calendars: the one named by the calendarId calendars_list gives, else the account's default; a calendar only shared with the account is refused. Guests are invited by that account's provider, Microsoft or Google, from its own address. A timed event's start and end are instants with their offset, the end no earlier than the start, so an entry of no length is taken; an all-day event's are dates, its end the day after its last. It is written in the person's own time zone, so an invitation shows that zone's time, and the answer gives its times in the zone it names under timeZone. A meeting with guests, no location and no video gets the person's default meeting link as its place. How it shows, its privacy, reminders, kind and video link are each refused with the reason where the account's provider lacks them. An Outlook subject takes at most 255 characters. repeat makes it a recurring series, each occurrence keeping the start's own hour in the person's time zone across clock changes. Who hears of it is notify's choice. Repeating a create whose answer was lost, with the same arguments, finds the event the first made rather than making a second - for the rest of that day (UTC), on Outlook only while Microsoft also recognises the repeat - so two events meant as two differ in some argument. Each guest's own times are answered under guestTimes in their time zone where it is known - the one guestZones names for them, else the one a member of the person's circles stored - and any other guest's zone as unknown, their time counted as the person's. A meeting any part of which falls, for a guest of known zone, outside 09:00-18:00 or on a Saturday or Sunday in that zone - an all-day one only on a Saturday or Sunday - is not sent: the refusal names each such guest and their time, and it goes out only once the call passes unusualHoursAgreed true on the person's word. A series is checked by its first occurrence; the person's own hours are never held.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
bodyNo
kindNoGoogle makes either only in a Workspace account's main calendar, timed; Outlook makes out of office alone, shown away.
startYes
videoNoA Meet link on a Google account or a Teams link on a work Microsoft account, given back under joinUrl.
guestsNoAddresses to invite.
notifyNoWho the provider tells: every guest where omitted, externalOnly only guests outside Google Calendar, none nobody. Outlook tells every guest of a meeting it makes, changes or cancels, so there only an answer goes untold.
repeatNoMakes it a recurring series, from its start, without end unless until or count is named.
showAsNoHow it shows; Google shows busy or free alone. Busy where omitted.
accountYesThe connected account, by the address calendars_list names.
privacyNoThe calendar's own where omitted.
subjectYes
locationNo
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
remindersNoMinutes before its start each reminder sounds, Outlook keeping one; empty for none, the calendar's own where omitted.
calendarIdNoThe calendar to create it in, by the calendarId calendars_list names; the account's default where omitted.
guestZonesNoA guest's own time zone, only as the person names it - never inferred from an address, a language or a provider.
unusualHoursAgreedNoTrue only once the person has agreed to send at the hours an answer named as unusual for a guest.

TDQS

A4.4/5.0
Behavior5/5

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

Far exceeds what annotations provide: the idempotency rule is spelled out precisely (same arguments find the event the first made rather than a second, for the rest of that day UTC, Outlook only while Microsoft recognises the repeat) which is far richer than idempotentHint=true. It also discloses which inputs are refused and why, the unusual-hours send block, and the default meeting-link behavior.

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

Conciseness3/5

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

Information density is high and the calendar rule is front-loaded, but the archaic, clause-heavy prose is hard to parse and there is no structure (no grouping of ids, guests, recurrence, sending). Much of the content earns its place given 18 parameters, but the packaging makes it harder than it needs to be.

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?

With no output schema, the description does carry return-shape context (the answer's times in its timeZone, guestTimes, joinUrl) and covers invitation, notification, recurrence and refusal branches. It is close to complete for a tool this complex, though a few enum params (kind, showAs) get less prose than their provider caveats deserve.

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 description coverage is 72%, above baseline, yet the description still adds semantics the schema lacks: the Outlook 255-character subject cap, the instant-vs-date difference between start and end, and that each recurrence keeps the start's own hour across clock changes. These are genuine additions, not restatements.

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?

Opens with a specific verb+resource ('Create an event in one of a connected account's own calendars') and immediately scopes it: own calendars only, a shared-with calendar is refused. That scope cleanly separates it from events_edit, events_list and polls_create in the sibling set.

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?

Gives concrete selection rules (which calendar via calendarId from calendars_list, else default), the refusal condition for shared calendars, the provider caveats, and the exact gate for unusualHoursAgreed. It never names an alternative sibling ('use events_edit to...'), so it stops short of a 5.

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

events_editChange an eventA
Destructive
Inspect

Change an event the account organises, in place and in one call: its subject, body, location, start and end, how it shows, its privacy, reminders and video link, and its guests - addGuests invited, removeGuests taken off. Only what is named changes: the event keeps its id, every other guest's answer and its join link, a start named alone keeps its length and an end named alone keeps its start. Start and end are named as events_create names them, so naming both in the other form turns a timed event all-day or back, and are written in the person's own time zone as events_create writes them. What the account's provider lacks is refused with the reason, as on events_create, and so is a new body for an Outlook online meeting, whose join details it holds. Changing guests takes inviting allowed on the account. A whole series' start and end are its first occurrence's, and a change to a whole series holding occurrences changed apart from it is refused, naming each by when its series set it, so none of theirs is undone. Its provider sends a meeting's guests the change from the account's own address, as notify chooses. Like every write, the answer names the event's provider, its calendarId where its provider addresses it by one, and its webLink. Guests' own hours hold a change as they hold events_create: every guest's where its times change, an added guest's at its time otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
bodyNo
scopeNoFor an occurrence of a recurring series: occurrence, where omitted, acts on that occurrence alone, series on its whole series. A series named by its own seriesId is refused unless series is passed.
startNo
videoNoA Meet link on a Google account or a Teams link on a work Microsoft account, given back under joinUrl.
notifyNoWho the provider tells: every guest where omitted, externalOnly only guests outside Google Calendar, none nobody. Outlook tells every guest of a meeting it makes, changes or cancels, so there only an answer goes untold.
showAsNoHow it shows; Google shows busy or free alone.
accountYesThe connected account, by the address calendars_list names.
eventIdYesThe event's id, as events_list names it.
privacyNo
subjectNo
locationNo
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
addGuestsNoAddresses to invite.
remindersNoMinutes before its start each reminder sounds, Outlook keeping one; empty for none.
calendarIdNoThe calendar holding the event, by the calendarId events_list names; a Google account's event outside its default calendar needs it.
guestZonesNoA guest's own time zone, only as the person names it - never inferred from an address, a language or a provider.
removeGuestsNoGuests to take off, by address.
unusualHoursAgreedNoTrue only once the person has agreed to send at the hours an answer named as unusual for a guest.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=true, openWorldHint=true): it explains preservation behaviour (id, other guests' answers, join link kept; a lone start keeps duration, a lone end keeps the start), provider-side refusals with reasons, the Outlook online-meeting body refusal, and notification fan-out ('from the account's own address, as notify chooses'). This is exactly the mutation context a destructiveHint flag alone cannot convey.

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

Conciseness3/5

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

Front-loaded with the core action and nearly every sentence carries distinct information, but it is one very long, densely packed paragraph with idiosyncratic phrasing that makes it hard to scan. The size is justified by the complexity, yet the structure costs readability.

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 19-parameter mutation tool with no output schema, it covers what an agent needs: patch semantics, recurring-series scope and refusals, provider limitations, notification behaviour, and the shape of the response (provider, calendarId where applicable, webLink). Remaining gaps (e.g. reminders format) are handled by schema descriptions.

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 only 68%, and the description compensates: it clarifies that start/end are named as events_create names them and that naming both in the other form flips timed/all-day, that times are in the person's own time zone, and that addGuests/removeGuests take guests on and off. The guestZones/'own hours' sentence also explains cross-field timing behaviour. It adds real meaning where the schema is silent.

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?

States a precise verb+resource ('Change an event the account organises, in place and in one call') and then enumerates exactly which fields the update can touch (subject, body, location, start/end, showAs, privacy, reminders, video, guests). An agent can distinguish it from events_create and events_cancel from the description alone.

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?

Gives clear operating conditions: partial-patch semantics ('Only what is named changes'), the occurrence-vs-series choice and the rule that a whole series with separately-changed occurrences is refused, and the precondition that changing guests requires inviting to be allowed on the account. It does not explicitly route to sibling tools (e.g. use events_create to make a new event), so it stops short of a 5.

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

events_getRead an eventA
Read-only
Inspect

Read one event whole, by the account, calendarId and id events_list names: its whole description as text, every Teams, Zoom or Meet join link found in the event, its place or its words, the organizer and each guest with their role - required, optional or resource - and answer, its kind and privacy as events_list names them, how it shows, the account's own answer, its reminders - the minutes before its start each sounds, or none, which events_edit writes as an empty list, and unsaid where a Google event keeps its calendar's own - and its web link. Times are given as events_list gives them, in the zone named under timeZone, and an occurrence of a recurring series its seriesId and originalStart as events_list names them. An event whose words screen as a prompt attack is withheld. One of Lumman's own busy copies is answered under busyCopy as events_list answers one, saying under about what it is and where it is switched off.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountYesThe connected account, by the address calendars_list names.
eventIdYesThe event's id, as events_list names it.
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
timeZoneNoAn IANA zone such as Europe/London to answer in; the person's stored one where omitted.
calendarIdNoThe calendar holding the event, by the calendarId events_list names; an event outside the account's default calendar needs it.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnly/destructive/openWorld, and the description adds substantial behavior beyond them: events whose text screens as a prompt attack are withheld, Lumman's own busy copies are answered under busyCopy with about/switched-off fields, and reminders are reported as minutes or an empty list. These are real edge-case behaviors an agent cannot get from 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.

Conciseness3/5

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

The purpose is front-loaded, and given the absence of an output schema, the enumeration of returned fields earns its place. However, it is delivered as one extremely dense run-on sentence with heavy nesting, which hurts parseability rather than being genuinely 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?

With no output schema, the description carries the full return-value burden and does so thoroughly: join links, organizer/guest roles and answers, kind, privacy, visibility, reminders, web link, timeZone handling, recurrence fields (seriesId, originalStart), the prompt-attack withholding rule, and the busyCopy variant. Nothing material for a correct call is missing.

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 schema already documents account, eventId, provider, timeZone and calendarId, including when provider and calendarId are needed. The description reinforces that output times follow the timeZone parameter, but adds little new meaning about the parameters themselves; 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 opening establishes a specific verb and resource ('Read one event whole') and immediately scopes it as 'by the account, calendarId and id events_list names,' which cleanly separates it from the list-oriented sibling events_list. An agent can distinguish it from events_edit and events_list without opening any schema.

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?

Usage is implied through repeated references to sibling conventions ('as events_list names them', 'which events_edit writes as an empty list'), but there is no explicit when-to-use statement or exclusion such as 'use events_list to discover ids first' or 'use busyCopy for a busy view only.' The agent must infer the call context.

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

events_listRead eventsA
Read-only
Inspect

Read the events of a period across every connected calendar, earliest first, or latest first with newestFirst. query finds the events whose title, description, place, organizer or guests hold every word it names - a person by name or address included - on every account: Google searches its own, while Outlook, which searches titles alone, is read across the period and matched here. account, with provider where two share an address, reads that account alone, and calendarId, as calendars_list names it, that one of its calendars alone. Each event answers once, naming under copies every account and calendar holding it, with that copy's id, how it shows there and that account's own answer. An occurrence of a recurring series names under originalStart the start its series gave it, which a moved one keeps, and under each copy that account's seriesId. A calendar shared into one account from another connected account is read through its owner alone. Lumman's own busy copies - private blocks titled "Busy · (Multi Calendar connector)" - are never among the events: busyCopies answers them apart, one entry per copied busy time with its start and end, the account it copies under copyOf - unknown where no record of it stands - and each account it stands in under standsIn. None counts as the person's time or can be moved or cancelled; asked about one, say it is a busy copy of that account, switched off at https://lumman.co/mcp/account/multi-calendar or by taking that pair away with busy_everywhere_set. Every time is given with its offset in the zone the answer names under timeZone: the one passed, else the person's stored zone, which now names with their time now; an all-day event's start and end are dates, its end the day after its last. An answer, a guest's or an account's own, is accepted, tentative, declined, unanswered or organizer, and one a copy cannot know is left out. An event names its kind where it is no ordinary event - a Google outOfOffice, focusTime, workingLocation, birthday or fromGmail entry - its privacy where it is not normal: public, private, confidential or personal - and its Teams, Zoom or Meet join link, and each copy its webLink; an out-of-office event shows as away. A description is its first 255 characters, marked descriptionCut where it goes on: events_get reads it whole. Each calendar answers at most 50 events, read in time order; one with more is named under cutShort with its calendarId, readTo - the start of the last event read - and continueAt: pass that continueAt with its account and calendarId, the same period and query, to read on from exactly where it stopped; read latest first, such a calendar's latest events are the ones past readTo, so read it on before naming the latest. A calendar or an account that could not be read, or that the person does not let you see, is named under unread with why: needs_reconnection - reconnected at https://lumman.co/mcp/account/multi-calendar - not_allowed, refused, gone, rate_limited or unavailable; where nothing could be read the answer is an error. malformed counts events a provider sent in a form that could not be read, each left out. An event whose words screen as a prompt attack is left out and named under withheld by its start, its end and each copy's account, calendarId and id - by account alone where an id screened so - and a calendar whose name screened so is named by its account alone.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd of the period, excluded, in the same forms.
fromYesStart of the period, included: e.g. 2026-10-12, 2026-10-12T09:00 or 2026-10-12T09:00:00+01:00.
queryNoWords, or a person by name or address, every one of which an event must hold.
accountNoRead this connected account alone, by the address calendars_list names.
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
timeZoneNoAn IANA zone such as Europe/London to answer in; the person's stored one where omitted.
calendarIdNoRead this calendar of the account named alone, by the calendarId calendars_list names.
continueAtNoRead on from where a calendar under cutShort was cut: its continueAt, with its account and calendarId.
newestFirstNoAnswer the latest events first.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare a safe, read-only, closed-world read, and the description adds substantial context beyond them: 50-events-per-calendar cap with cutShort/readTo/continueAt resumption, unread reasons (needs_reconnection, not_allowed, refused, gone, rate_limited, unavailable), withheld prompt-attack events, malformed counts, busy-copy exclusion, and 255-char description truncation.

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

Conciseness3/5

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

It is front-loaded with the core purpose, and most sentences carry needed return-value information since there is no output schema. But it is a single massive run-on paragraph with no grouping, making it hard to scan for the operational details an agent needs (pagination, unread, withheld).

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?

With no output schema and 9 parameters, the description carries the full burden and delivers: it documents event fields, copies, occurrence/originalStart, timeZone handling, answer statuses, join links, pagination, and all error/omission cases. Nothing essential to calling or interpreting the tool correctly is missing.

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 description coverage is 100%, so the baseline is 3, but the description adds real meaning: query semantics differ per provider (Google searches all fields, Outlook searches titles alone and is read across the period then matched), provider is 'needed only where two connected accounts share an address,' and continueAt must be paired with the cutShort account and calendarId.

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?

Opens with a specific verb+resource+scope: 'Read the events of a period across every connected calendar, earliest first, or latest first with newestFirst.' It also distinguishes itself from the sibling events_get by noting events_get reads a description whole, and from calendars_list by defining account/calendarId in terms of it.

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?

Gives concrete conditional guidance: narrowing with account/provider/calendarId, resuming with continueAt after cutShort, and handling busy copies ('asked about one, say it is a busy copy of that account... or take that pair away with busy_everywhere_set'). However it never contrasts itself against other listing/availability siblings such as free_times_find or circles_free_times_find, so the when-not framing is incomplete.

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

events_respondAnswer an invitationA
Destructive
Inspect

Accept, tentatively accept or decline an invitation; the account's provider sends the answer, with message where given, to its organiser from the account's own address unless notify is none. Answering a whole series answers each occurrence answered apart from it too, and says under replaced how many of their answers it replaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFor an occurrence of a recurring series: occurrence, where omitted, acts on that occurrence alone, series on its whole series. A series named by its own seriesId is refused unless series is passed.
notifyNoWhether the organiser is told: all where omitted, none to answer untold; on Google, externalOnly tells an organiser outside Google Calendar alone.
accountYesThe connected account, by the address calendars_list names.
eventIdYesThe event's id, as events_list names it.
messageNoWords sent to the organiser with the answer; on Google every guest of the event can read them too.
providerNoThe account's provider, as calendars_list names it; needed only where two connected accounts share an address.
responseYes
calendarIdNoThe calendar holding the event, by the calendarId events_list names; a Google account's event outside its default calendar needs it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this as a non-read-only, destructive, open-world mutation. The description adds real value beyond that: it explains that the provider sends the answer from the account's own address, that notify=none suppresses notifying the organiser, and that answering a series cascades to other occurrences and reports a replaced count. The Google message-visibility caveat, however, lives only in the schema, not the description.

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

Conciseness3/5

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

The action is front-loaded, which is good, but the second sentence ('Answering a whole series answers each occurrence answered apart from it too, and says under replaced how many of their answers it replaced') is a convoluted run-on that is hard to parse, hurting readability more than length does.

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 an 8-parameter mutation with no output schema, the description covers the important behavioral edges: cascading series answers and the returned 'replaced' count. Combined with the 88%-covered schema, an agent has enough to invoke this correctly, though provider-specific fallbacks (calendarId, provider) are left entirely to the 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 description coverage is 88%, so the schema already documents nearly every parameter including notify, scope, and message semantics. The description largely restates the notify and series behavior rather than extending it, so it does not meaningfully exceed the schema baseline.

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?

States a specific verb set (accept, tentatively accept, decline) against a specific resource (an invitation), and the response enum mirrors this exactly. It is clearly distinguishable from siblings like events_edit, events_cancel, or events_create.

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?

Usage is implied by the nature of the tool rather than stated. There is no explicit guidance on when to choose this over events_edit for changing a reply, and no prerequisites are given, though the scope/series and notify clauses give partial context for deciding how to invoke it.

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

free_times_findFind a timeA
Read-only
Inspect

Find when the person is free in every connected calendar: each stretch of a window that no busy time touches and that is at least as long as the meeting. An event holds its time as its provider's own free/busy shows it: on Google unless shown as available or declined - an invitation not yet answered or answered maybe included - and on Outlook only when shown busy or away, so an Outlook tentative answer leaves its time free; a cancelled event holds none. An all-day event holding time holds its whole day in the person's own time zone. The search never starts before now, keeps to every preference preferences_get names and to the window's first 365 days and, where the call names them, to hours on each day and to weekdays on top of those preferences; limit keeps the earliest stretches. Once any day has working hours, a day without them is off. The buffers pad the meeting being booked: a stretch starts buffer_before_minutes after busy time ends and ends buffer_after_minutes before the next begins. Each stretch answers once, in time order, with its parts inside the preferred times under preferred. Times, hours and weekdays are in the zone the call names, else the person's own; the stored working hours and preferred times are in the person's own. searched names the window searched and narrowedBy what narrowed it: notice, the least notice from now, rounded up to the quarter hour; horizon, to the end of its last day; yearCap, the 365 days; readLimit, a calendar holding more events than a search reads, read as far as it could be and searched to two days before the last it read; daysOff, days without working hours; fullDays, days already holding the most meetings in a day, a meeting being an event of some length that holds time inside that day's working hours. A calendar or account named under unread was not counted, nor were the calendars past the first 100 of an account under cutShort, so their busy time may fall inside a stretch; an account needing reconnection is reconnected at https://lumman.co/mcp/account/multi-calendar.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd of the window, excluded, with its offset.
fromYesStart of the window, included, with its offset, e.g. 2026-10-12T09:00:00+01:00.
hoursNoOnly these hours of each day, e.g. 10:00-16:00 or 09:00-12:00, 14:00-17:00.
limitNoAt most this many stretches, the earliest.
minutesNoMeeting length in minutes; the stored one where omitted.
timeZoneNoAn IANA zone such as Europe/London the answer is given in; the stored one where omitted.
weekdaysNoOnly these days of the week.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only declare this as a safe read (readOnlyHint=true, destructiveHint=false), and the description goes far beyond them: provider-specific free/busy interpretation (Google vs Outlook tense answers, cancelled events, all-day events), buffer padding semantics, the narrowedBy reasons (notice, horizon, yearCap, readLimit, daysOff, fullDays), and warnings that unread/cutShort calendars may still hold busy time. It even supplies a reconnection URL for accounts needing reauth.

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

Conciseness3/5

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

The first sentence is well front-loaded and most content is substantive rather than filler, which earns credit. But the body is an extremely dense, run-on block of semicolon-chained clauses and nested qualifiers that is hard to parse, and it is very large for an agent to consume before acting.

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?

There is no output schema, so the description carries the return-value burden and does: 'Each stretch answers once, in time order, with its parts inside the preferred times under preferred,' plus a full inventory of narrowedBy reasons and the searched window. Nothing needed to interpret the result is missing.

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 mostly restates schema content (limit = earliest stretches, hours = only these hours) but does add the zone-resolution rule (times/hours/weekdays use the named zone, stored working hours and preferred times use the person's own). Net value over the structured fields is marginal.

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?

States a specific verb and resource with scope: 'Find when the person is free in every connected calendar: each stretch of a window that no busy time touches and that is at least as long as the meeting.' An agent can tell this computes free slots rather than listing events. However, it never differentiates itself from the obvious sibling circles_free_times_find, so the 'every connected calendar' framing is the only (implicit) distinguishing signal.

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?

Gives concrete usage constraints: the search never starts before now, honors preferences_get, is capped at the window's first 365 days, and narrows by hours/weekdays. It does not, however, explicitly state when to prefer it over circles_free_times_find, so routing between the two free-times tools is left to inference.

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

polls_bookBook a poll's timeA
Destructive
Inspect

Book one of a poll's times in the calendar the person named to receive bookings: the time is checked again against every calendar, exactly the people the poll is for are invited by Microsoft or Google from that account's own address, the meeting written in the person's own time zone, and the poll closes. Its invitees' own hours hold it as they hold events_create, save for one who ticked that time, chosen on their own clock. An event holds its time as its provider's own free/busy shows it: on Google unless shown as available or declined - an invitation not yet answered or answered maybe included - and on Outlook only when shown busy or away, so an Outlook tentative answer leaves its time free; a cancelled event holds none.

ParametersJSON Schema
NameRequiredDescriptionDefault
pollYesThe poll's id, as polls_create names it.
startYesThe time to book, as polls_results names it.
guestZonesNoA guest's own time zone, only as the person names it - never inferred from an address, a language or a provider.
unusualHoursAgreedNoTrue only once the person has agreed to send at the hours an answer named as unusual for a guest.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, yet the description still adds real substance: the time is re-validated against every calendar, invitations are sent by Microsoft or Google from the host account's own address, the meeting is written in the host's time zone, and the poll is closed as a side effect. It also explains the provider-specific free/busy rules that determine whether a slot still 'holds' its time. The value is genuine, though the run-on phrasing blurs which details are guarantees versus conflict-detection heuristics.

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

Conciseness3/5

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

The action is front-loaded and there is little pure filler, but the description is a dense sequence of nested clauses ('exactly the people the poll is for are invited by Microsoft or Google from that account's own address') that is hard to parse on first read. Information density is high; readability and structure are poor.

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?

With no output schema, the description carries the return-value burden and does not say what comes back on success or what happens when the re-check shows the time no longer holds. It does, however, cover the major side effects, time-zone handling, and conflict semantics, which is substantial for a 4-parameter tool whose schema is fully documented.

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 'poll', 'start', 'guestZones' and 'unusualHoursAgreed' are already documented in the schema, including the explicit warning that a guest's zone is never inferred. The description adds nothing parameter-specific beyond the events_create analogy, so the baseline 3 applies.

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?

The first sentence names a specific verb and resource: booking one of a poll's times into the calendar of the person who receives bookings, and it distinguishes the action from polls_create/polls_results/links_polls_close by describing the invite-and-close outcome. The archaic phrasing ('the person named to receive bookings') makes the actor harder to identify than it should be, but the core action is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: the description references polls_results as the source of the 'start' value and compares invitee-hour handling to events_create, which hints at the post-poll-confirmation workflow. There is no explicit statement of when to call this versus polls_results (view times) or links_polls_close (close without booking), and no stated prerequisites such as the poll needing to be open.

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

polls_createMake a group pollAInspect

Make a poll of times free_times_find found for a named meeting, for the people it is for. Each address gets its own link, an address named twice one, handed back in this answer alone - a lost link needs a new poll. Lumman sends them nothing: hand the links to the person to share, or send each from the person's own mailbox. Whoever opens a link, with no account, ticks the times that address can make, answering again replaces its answer, and sees no one else's. polls_results ranks the times and polls_book books one, in the calendar the person named to receive bookings, which making a poll does not need; a poll closes once booked, or 14 days after it is made, and then holds no address or answer. Naming a circle makes a poll for members of it or, on the person's own circle, for addresses invited that have not joined, meant for those circles_free_times_find names under noCalendar or notJoined: once they answer, the person's own searches for that circle count each by the times they can make, and their page offers to connect a calendar - an address that has not joined joins first, through the link circles_invite gave it. A member with a calendar is read through it, never from a poll. The page a guest opens names nobody but the meeting, so put the person's own name in subject, e.g. Intro call with Sam Lee. An invitee whose time zone is known, as events_create knows a guest's, is answered with that zone and each time in it.

ParametersJSON Schema
NameRequiredDescriptionDefault
timesYesEach time offered, its start with its offset.
circleNoThe circle's id, as circles_list names it, where the poll is for members of it.
minutesNoMeeting length in minutes; the stored one where omitted.
subjectYesThe meeting's name, as whoever opens the link reads it.
inviteesYesThe address of each person the poll is for.
guestZonesNoA guest's own time zone, only as the person names it - never inferred from an address, a language or a provider.

TDQS

A4.1/5.0
Behavior5/5

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

With readOnly=false declared, the description adds unusually rich behavior beyond annotations: each address gets its own link, a lost link requires a new poll, the app sends nothing (caller must distribute), guests answer without an account, re-answering replaces the prior answer, answers are private, and the poll closes on booking or after 14 days, after which it retains no address or answer. It also states bookings need a calendar that poll creation does not require.

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

Conciseness3/5

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

Front-loaded with the core purpose, but the body is a dense run-on of long clauses (link lifecycle, circles, guest pages, time zones) that resists parsing. Much of it earns its place as behavior, yet it could be broken into shorter sentences or a lifecycle list without losing 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?

No output schema exists, and the description partly covers returns ('handed back in this answer alone'). For a mutation tool with six parameters it adequately covers lifecycle, closure rules, privacy, distribution responsibility, and the calendar dependency. It leaves the exact response shape vague, so not a 5.

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, but the description adds real meaning beyond the schema: subject should carry the host's own name ('Intro call with Sam Lee') because the guest page names nobody but the meeting, and guestZones is tied to a known time zone as events_create knows one. These are substantive usage notes not present in the schema descriptions.

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?

Opens with a specific verb+resource: 'Make a poll of times free_times_find found for a named meeting, for the people it is for.' It clearly distinguishes itself from siblings by naming polls_results (ranks), polls_book (books), and circles_free_times_find as the intended upstream source. The phrasing is convoluted, but an agent can identify the operation without opening the schema.

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?

Gives clear context for use: times come from free_times_find, invitees are 'the people it is for,' and the circle variant is spelled out ('Naming a circle makes a poll for members of it or ... addresses invited that have not joined'). It routes downstream work to polls_results and polls_book. It stops short of explicit when-not/alternative selection, so not a 5.

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

polls_resultsRead a poll's answersB
Read-only
Inspect

Read a poll's answers: each of its times still to come with the addresses of those who can make it, most first, then each address it is for and whether it has answered. An answer is what that address's own link sent. A booked or closed poll holds none; booked names the time it was booked, or is being booked, at.

ParametersJSON Schema
NameRequiredDescriptionDefault
pollYesThe poll's id, as polls_create names it.

TDQS

B3/5.0
Behavior4/5

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

Annotations already establish the read-only, non-destructive, closed-world profile, so the bar is lower. The description still adds genuinely non-obvious behavior: that answers originate from the respondent's own link, and that booked or closed polls return no answers at all with 'booked' naming the booking time. That edge-case disclosure is real value beyond the structured fields.

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

Conciseness3/5

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

It is a single front-loaded sentence of moderate length, so it is not bloated. But the dense, archaic phrasing ('most first, then each address it is for') forces re-reading, and the closing clause about 'booked' is awkwardly appended rather than structured, so the words do not fully earn their 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?

There is no output schema, so the description carries the burden of explaining the return shape; it makes a genuine attempt (upcoming times with eligible addresses, then per-address response status, plus the empty result for booked/closed polls). But the opaque wording leaves the exact structure and ordering only partially recoverable for a read tool an agent must parse.

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?

With one parameter at 100% schema description coverage, the schema already explains that 'poll' is the poll's id. The description only obliquely implies a poll input ('a poll's answers') and adds no format, naming, or sourcing detail beyond the schema's own 'as polls_create names it'.

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

Purpose3/5

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

It opens with a clear verb+resource, 'Read a poll's answers', which distinguishes it from write siblings like polls_book or polls_create. However, the rest of the sentence is written in a convoluted, almost archaic register ('times still to come', 'most first', 'each address it is for') that makes the actual returned content hard to parse on first read.

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

Usage Guidelines2/5

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

The only usage-adjacent information is the conditional 'A booked or closed poll holds none', which hints at when results will be empty but never states when to reach for this tool versus links_polls_list, polls_book, or links_polls_close. No alternatives or prerequisites are named, leaving the agent to infer routing from sibling names.

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

preferences_getRead scheduling preferencesA
Read-only
Inspect

Read the person's scheduling preferences, as preferences_set describes each, null where unset; once any day's hours are set, a day without is off; receiving names the calendar bookings are made in. calendars_list says which calendars count as busy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 destructiveHint=false, so safety is covered. The description adds real domain semantics the annotations cannot: unset values come back null, a day with no hours is off once any day is set, and the 'receiving' field names the booking calendar. That is genuinely useful behavioral context, short only of pagination/error behavior.

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 core action is front-loaded in the first clause and nothing is wasted. The back half is a dense semicolon chain covering three separate rules, which is compact but slightly harder to parse than it needs to be.

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?

There is no output schema, so the description correctly carries the burden of explaining return semantics, and it does so for the tricky cases (null vs. off, receiving calendar). It falls just short of a complete picture of what a 'scheduling preference' record contains, deferring that to preferences_set.

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 tool takes zero parameters, so the baseline is 4. The description instead spends its words on return-value semantics (null when unset, day-means-off rule), which is the right trade-off for a no-arg reader, though it does not enumerate the full set of returned preference fields.

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?

States a specific verb ('Read') and resource ('the person's scheduling preferences') and explicitly positions itself against siblings: preferences_set is the writer whose fields this mirrors, and calendars_list supplies the busy-calendar definition. An agent can distinguish read-preferences from set-preferences without opening a schema.

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 cross-references to preferences_set and calendars_list make the read-vs-write split clear by implication, and the mention of 'receiving names the calendar bookings are made in' tells the agent when this data is relevant. However, it never explicitly states 'use this when you need current preferences; use preferences_set to change them', leaving the routing to inference.

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

preferences_setChange scheduling preferencesA
DestructiveIdempotent
Inspect

Change any of the person's scheduling preferences as preferences_get names them, the rest left as they stand; null clears one. calendar marks one calendar calendars_list names as counting as busy or not. receiving, which null does not clear, names the calendar bookings are made in: one of an account's own calendars, as calendars_list names it. time_zone changes only with zoneConfirmed true, once the person has confirmed it as theirs.

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarNo
receivingNo
time_zoneNoTime zone, e.g. Europe/London
friday_hoursNoFriday's working hours, e.g. 09:00-12:00, 13:00-17:00
horizon_daysNoDays ahead a meeting may be
meeting_linkNoDefault meeting link, https
monday_hoursNoMonday's working hours, e.g. 09:00-12:00, 13:00-17:00
sunday_hoursNoSunday's working hours, e.g. 09:00-12:00, 13:00-17:00
daily_maximumNoMost meetings in a day
tuesday_hoursNoTuesday's working hours, e.g. 09:00-12:00, 13:00-17:00
zoneConfirmedNoTrue only once the person has confirmed the time_zone passed as theirs.
notice_minutesNoLeast notice in minutes
saturday_hoursNoSaturday's working hours, e.g. 09:00-12:00, 13:00-17:00
thursday_hoursNoThursday's working hours, e.g. 09:00-12:00, 13:00-17:00
meeting_minutesNoMeeting length in minutes
preferred_timesNoTimes offered first, e.g. 10:00-12:00, 14:00-16:00
wednesday_hoursNoWednesday's working hours, e.g. 09:00-12:00, 13:00-17:00
buffer_after_minutesNoMinutes kept free after a meeting being booked
buffer_before_minutesNoMinutes kept free before a meeting being booked

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare idempotent=true, destructive=true and readOnly=false, so the safety profile is covered. The description adds genuinely non-structured behavior: unspecified fields are left untouched, null clears a field, null does NOT clear receiving, and time_zone only takes effect with zoneConfirmed true. It does not mention permission requirements or error behavior.

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

Conciseness3/5

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

The general partial-update rule is correctly front-loaded, and each clause covers a distinct behavior that earns its place. However, the two comma-spliced run-on sentences are dense and force the agent to re-parse to separate the rules for calendar, receiving and time_zone.

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 19-parameter, zero-required, no-output-schema mutation tool, the description covers the highest-risk semantics (partial update, null clearing, the receiving exception, the time_zone gate). The remaining hours/horizon/buffer fields are adequately handled by the 89%-covered schema, so nothing critical is missing.

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 description coverage is 89%, so baseline is 3, but the description meaningfully exceeds the schema for calendar ('marks one calendar ... as counting as busy or not'), receiving (the calendar bookings are made in, and exempt from null-clearing) and time_zone (gated on zoneConfirmed). Those are cross-field semantics the schema does not express, since most schema descriptions are only form examples.

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?

States a specific verb and resource: 'Change any of the person's scheduling preferences', and cross-references preferences_get as the source of field names, which implicitly separates it from the read sibling. It does not explicitly name other write siblings such as busy_everywhere_set or booking_page_set, so routing is inferred rather than stated.

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?

Usage is implied by 'Change any of the person's scheduling preferences ... the rest left as they stand', which tells the agent this is a partial-update path and that calling preferences_get first is how field names are learned. There is no explicit when-not guidance or comparison against alternative write tools like busy_everywhere_set.

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.

  1. 21 tool updates
    • First observedbooking_links_create
    • First observedbooking_page_set
    • First observedbusy_everywhere_set
    • First observedcalendars_list
    • First observedcircles_free_times_find
    • First observedcircles_invite
    • First observedcircles_list
    • First observedevents_cancel
    • First observedevents_create
    • First observedevents_edit
    • First observedevents_get
    • First observedevents_list
    • First observedevents_respond
    • First observedfree_times_find
    • First observedlinks_polls_close
    • First observedlinks_polls_list
    • First observedpolls_book
    • First observedpolls_create
    • First observedpolls_results
    • First observedpreferences_get
    • First observedpreferences_set

Publisher details

Operator
Lumman Ltd · Publisher source
Vendor relationship
Independent · Publisher source
Trust center
Not available
Restrictions
Every calendar free, with 1 booking page and 1 circle; a paid plan adds any number of both. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables privacy-safe calendar availability queries across Outlook, iCloud, and Google ICS feeds, exposing only busy/free intervals and free-slot search without revealing event details.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    The Outlook Calendar MCP enables Claude to directly manage Microsoft Outlook calendars on Windows systems, offering a privacy-focused solution that keeps all data local. Users can view events, create meetings, find free time slots, and manage multiple calendars without their data leaving their machi
    7
    24 npm
    42
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources