Skip to main content
Glama

Server Details

Free no-signup group planner: dates, RSVPs, place votes, shared checklist and split costs.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.3/5.0

Scored across 24 tools

Disambiguation3/5

Core planning tools (add_expense, set_availability, set_rsvp, vote_place, etc.) are mostly distinct. However, open_preferences, read_plugin_settings, and update_plugin_settings all concern local widget/plugin settings and could easily be confused. The app-only widget_* tools also overlap conceptually with regular read/write tools, increasing misselection risk.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern (add_place, get_plan, set_rsvp, update_event). The widget_* tools use a domain-prefix pattern instead, which is a minor deviation but still readable. No mixed camelCase or chaotic conventions.

Tool Count3/5

With 24 tools, the surface is on the heavy side for a group planning server. Several tools are app-only transport, settings, or preference controls that agents likely do not need for core planning workflows. The count feels slightly inflated rather than clearly scoped.

Completeness4/5

The core planning lifecycle is well covered: create/join/get plan, availability, RSVP, places, checklist, expenses, payments, and event updates. Missing operations like deleting a plan, removing a participant, or updating plan metadata are minor and mostly workaroundable. No severe dead ends for typical planning tasks.

Available Tools

24 tools
add_checklist_itemAdd a checklist itemInspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Add exactly ONE independently checkable item to the shared checklist (e.g. "Bring the grill"). For several requested tasks, shopping items or recipe ingredients, call this tool separately for EACH item; never combine the list into one text. Keep quantities and explanatory details with their own item. Read get_checklist afterwards to verify separate item_ids. Acts as the participant. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
textYesOne independently checkable item, single line, max 500 chars. Not a list of multiple tasks/ingredients.
participant_idYesFrom create_plan or join_plan.
participant_tokenYesFrom create_plan or join_plan.
add_expenseAdd an expenseInspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Record a shared expense, split equally. paid_by defaults to the person you act for; split_among defaults to everyone in the plan. Requires a user-requested amount, currency, payer and equal-split participants; missing or ambiguous details need clarification. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
amountYesTotal, max 2 decimals (e.g. 42.5). Send a plain number.
currencyNoISO code, e.g. CZK or EUR. Sets the plan's currency if it has no expenses yet; otherwise must match it (see get_plan currency).
descriptionYesWhat it was for, e.g. "Groceries" (max 120 chars).
split_amongNoWho shares the cost (participant_id values or exact names). Defaults to everyone.
participant_idYesFrom create_plan or join_plan.
allow_duplicateNoOnly if the user confirms a second, identical expense within 10 minutes (otherwise it is treated as a retry).
participant_tokenYesFrom create_plan or join_plan.
paid_by_participant_idNoWho paid (participant_id from get_plan, or their exact name). Defaults to you.
add_placeSuggest a place
Idempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Suggest a place the group can vote on (Where tab). Default source=auto searches the same Google Places autocomplete as the web and returns needs_selection with up to five candidates, without a write. A selected google_place_id loads official details and stores the Google Maps link, coordinates and metadata. Zero results use the supplied link or manual name/address. source=manual explicitly saves a link/manual location without lookup. Google lookup failure does not save a fallback automatically. Supplied Google Maps URLs remain available as a zero-results or explicit manual fallback; they do not bypass the default Google lookup. Duplicates are merged. Acts as the participant. Current stored state is available through get_plan. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkNoOptional link to any other page about the place (http/https), instead of google_maps_url.
nameYesRequested place name, including accents (max 300 chars). A selected Google result supplies its official name.
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
queryNoOptional Google autocomplete query including the known city/address (max 160 chars); otherwise name/address are used.
sourceNoDefault auto uses Google first. Manual explicitly saves the supplied name/address/link without a paid lookup.
addressNoOptional address (max 500 chars).
participant_idYesFrom create_plan or join_plan.
google_maps_urlNoOptional Google Maps link (google.com/maps or maps.app.goo.gl). Links with coordinates (…/@50.08,14.42,…) also show a map preview.
google_place_idNoExact place ID from returned Google candidates; official details are loaded server-side (max 160 chars).
participant_tokenYesFrom create_plan or join_plan.
check_itemTick off a checklist item
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Mark a checklist item done (done: true) or open again (done: false), by item_id from get_checklist. Current stored state is available through get_checklist. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
doneYes
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
item_idYesFrom get_checklist or add_checklist_item (the exact item text also works).
participant_idYesFrom create_plan or join_plan.
participant_tokenYesFrom create_plan or join_plan.
collect_plan_detailsChoose plan detailsA
Read-only
Inspect

Ask the user for missing availability, RSVP, place, expense or agreed event details in a native form. Returns selected values only; NEVER changes a plan. Use the corresponding write tool only after the user explicitly confirms the returned details. Hosts without forms should ask in chat or use open_planner.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes
actionYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations establish readOnlyHint=true and destructiveHint=false, and the description goes further by specifying that only selected values are returned, that the plan is never modified, and that a write tool must be invoked only after explicit confirmation. The host-capability fallback (no forms -> chat or open_planner) is behavioral context the 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.

Conciseness5/5

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

Three tight sentences: purpose first, then the read-only/confirmation constraint, then the fallback path. No filler, every clause carries operational information.

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

Completeness5/5

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

For a two-parameter read-only collector with no output schema, the description covers purpose, return semantics, mutation gating, and environment fallback. An agent has everything needed to decide when and how to call it, and no return-value documentation is required since there is no output schema.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the burden; it enumerates the five detail categories (availability, RSVP, place, expense, event) that map directly onto the action enum values, giving each choice concrete meaning. The 'plan' identifier parameter is left unexplained, so it does not fully compensate for the coverage gap.

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 and resource: it collects missing plan details (availability, RSVP, place, expense, event) via a native form. It explicitly distinguishes itself from the write siblings (set_availability, set_rsvp, add_place, add_expense, update_event) by declaring it returns values and never changes a plan.

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

Usage Guidelines5/5

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

Gives when-to-use (missing availability/RSVP/place/expense/event details), when-not (never writes a plan), the follow-up condition (call the write tool only after explicit user confirmation), and a named alternative for hosts without forms (ask in chat or use open_planner).

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

create_planCreate a planInspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Create a new saved lesgooo plan and its first participant. Returns shareable links, private participant credentials and missing_details. Title and name are optional: omissions use temporary Event/Organizer labels, allowing the requested action to complete before missing details are collected in chat. Explicitly supplied fields are not missing. Existing organizer details can later be completed through credential-bound join_plan and the same plan title through update_event, with data preserved. Does not send invitations or notifications. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoUser-supplied short plan name (max 120 chars). Omitted when unknown; temporary Event label until collected after the requested action.
your_nameNoUser-supplied participant name (max 80 chars). Omitted when unknown; temporary Organizer participant until their name is collected after the requested action.
request_idNoOptional UUID v4 for atomic creation. An identical UUID and identical fields (including omissions) replay the same creation; a changed payload is rejected.
find_plan_mentionsFind a plan by linkA
Read-only
Inspect

Resolve an explicitly supplied lesgooo saved-plan link or exact ID for the desktop mention picker. Empty or general searches return no results; never enumerate plans.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral detail: empty or general searches return no results, and it never enumerates plans. This tells the agent exactly what input is required and what failure looks like, which is meaningful beyond the annotations.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and constraints. Every clause earns its place: the purpose, the accepted input types, the failure condition, and the enumeration prohibition.

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

Completeness4/5

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

For a simple resolution tool with annotations covering safety and no output schema, the description covers what to pass and what happens on invalid input. It does not describe the return shape (e.g., what a resolved plan or mention looks like), but the context and failure semantics are sufficient for typical use, leaving only a minor gap.

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?

With a single query parameter and zero schema description coverage, the description carries the full burden. It specifies that the query must be an explicitly supplied lesgooo saved-plan link or exact ID, which is essential semantic information not present in the schema. It does not give format examples, but it compensates well for the coverage gap.

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 verb ('Resolve') and resource ('lesgooo saved-plan link or exact ID') and clarifies the context ('for the desktop mention picker'). It implicitly separates itself from general search or enumeration tools by stating that empty or general searches return no results and that it never enumerates plans. However, it does not name a sibling tool (e.g., get_plan) to explicitly differentiate itself, so a 4 is appropriate.

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

Usage Guidelines4/5

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

The description gives clear when-to-use guidance: only with an explicitly supplied link or exact ID. It also provides an explicit when-not-to-use condition: empty or general searches return no results and it never enumerates plans. No alternative tool is named, but the context is sufficiently clear for an agent to avoid misuse.

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

get_checklistRead the checklistB
Read-only
Inspect

Read the plan's shared checklist: open and done items, with item_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the useful detail of what is returned (open and done items, each with item_id), but says nothing about ordering, pagination, or authorization needs beyond what annotations provide.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler; the resource and returned payload are stated immediately.

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 single-parameter read tool with no output schema, the description supplies the return shape and annotations carry the safety profile, so an agent has enough to call it correctly. Usage routing to sibling checklist tools remains the only gap.

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

Parameters3/5

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

Schema description coverage is 100%, and the plan parameter's schema text is richer than the description (saved link vs 4-character id, local draft warning). The description adds no parameter-specific meaning, so the baseline 3 is appropriate.

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 verb (read) and resource (the plan's shared checklist) and scopes the output to open and done items with item_id. It is clearly distinct from the broader get_plan, though it doesn't explicitly name or contrast any sibling.

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 guidance on when to choose this over get_plan, check_item, or add_checklist_item. The read-only nature is implied, but no condition or exclusion is stated, leaving routing to inference.

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

get_expensesRead shared costsA
Read-only
Inspect

Read the plan's shared costs (Splitwise tab): expenses, each person's balance, and the suggested payments to settle up. Amounts are in the plan's currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint. Beyond those, the description usefully discloses the return contents and that amounts are denominated in the plan's currency, which is real behavioral context. It does not mention pagination or result size, keeping it short of 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.

Conciseness5/5

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

One tight sentence plus a short currency note, with the resource and returned data front-loaded and no filler. Every clause earns its place.

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

Completeness4/5

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

With no output schema, the description's enumeration of returned values is genuinely valuable, and annotations carry the safety profile. Missing only secondary details such as result volume or how settlement suggestions are computed.

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% and the single 'plan' parameter is thoroughly documented in the schema (link format, 4-char id, draft-link caveat). The description adds nothing about the parameter, 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 gives a specific verb and resource ('Read the plan's shared costs') and enumerates exactly what is returned (expenses, balances, settlement payments). It implicitly separates itself from the mutating siblings add_expense and record_payment, but never names an adjacent read tool such as get_plan, so differentiation 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 Guidelines2/5

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

There is no guidance on when to prefer this tool over get_plan or other read siblings, no prerequisites, and no stated exclusions. Usage is only implied by the phrase 'the plan's shared costs'.

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

get_planRead a plan
Read-only
Inspect

For a user-requested plan opening, read get_checklist and get_expenses too. Reply in the user's conversational language, 25–60 words total, at most four short bullets plus ONE contextual question about ONE action, not a menu. Summarize dates (actual counts/ties, not an agreed date), places, open tasks and balances; omit empty modules and completed-task lists. Reading requires no identity; never guess personal debts. After a write, briefly report that result and one next-step question instead of repeating the overview. Respect requests for no suggestions. Read the saved plan explicitly requested by the user. If the user's link is a bare /when, /where, /rsvp, /checklist or /splitwise URL, do NOT call this tool: explain it is a local draft and ask for its saved share link, even when a different plan was used earlier. Never replace a supplied link with the previous plan. Returns today's date in time_zone (UTC by default), title, event details, participants and their availability/RSVP, best dates, place votes and currency. Pass since (an earlier server_time) to also read changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
sinceNoOptional ISO timestamp (server_time from an earlier get_plan).
time_zoneNoUser's IANA time zone, e.g. Europe/Prague. Use when resolving tomorrow or other relative days; today defaults to UTC if omitted.
include_all_datesNoFor calendar UI: return all dates within the existing bounded read budget, instead of the concise first 60 per person.
join_planJoin a plan
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Join a plan as the user-specified person. Without participant credentials, selection=existing selects an existing person only; selection=new adds a distinct name only; default selection=auto reuses a unique matching name or adds it. Duplicate names require existing_participant_id, which selects the exact matching row without renaming. No account or organizer privilege is verified. With both participant_id and participant_token, the operation instead renames that same participant to name, preserving availability/RSVP/entries. That mode adds no participant and cannot switch to another matching name; collisions and invalid credentials are rejected. Returns participant_id and participant_token. Supports completing an unnamed organizer after their requested action. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe person's name as the group knows them (max 80 chars).
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
selectionNoWithout credentials: auto matches or adds; existing never adds; new never takes another person's matching name. Default auto.
participant_idNoFrom create_plan or join_plan.
participant_tokenNoFrom create_plan or join_plan.
existing_participant_idNoExact existing participant ID from get_plan or received user UI selection; requires selection=existing and matching name. No rename.
open_plannerOpen lesgooo planner
Read-only
Inspect

After completing and verifying the requested actions, keep the last requested action's module: availability=when, places/votes=where, RSVP/event details=rsvp, checklist=checklist, expenses/payments=splitwise. If CURRENT received user_planner_selection or actual host evidence confirms that SAME saved plan AND module are already open, DO NOT call open_planner again: saved changes appear through realtime subscriptions in the existing view, and opening again can create a duplicate tab/card. Report the verified result in chat. Historic UI context alone does not prove a view is still open. Call open_planner only when no matching current view is confirmed, the target plan/module differs, or the user explicitly requests another opening. When opening, pass the already selected participant_id and participant_token; never join again or guess identity merely for display. Verification reads, participant selection and completing missing new-plan name/title do not change the last requested action's module. For a user-requested plan opening, read get_checklist and get_expenses too. Reply in the user's conversational language, 25–60 words total, at most four short bullets plus ONE contextual question about ONE action, not a menu. Summarize dates (actual counts/ties, not an agreed date), places, open tasks and balances; omit empty modules and completed-task lists. Reading requires no identity; never guess personal debts. After a write, briefly report that result and one next-step question instead of repeating the overview. Respect requests for no suggestions. Open the interactive lesgooo planner. Optionally choose a saved plan link, module and previously selected participant credentials. Credentials preserve that person in the displayed view without another identity picker. Without a plan, show the same local draft as the web application; never save a shared plan automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
planNo
moduleNo
participant_idNoPreviously selected participant in this plan; requires participant_token.
participant_tokenNoToken returned by join_plan/create_plan for this participant and plan; requires participant_id.
open_preferencesDevice preferencesA
Read-only
Inspect

Open local widget preferences. Defaults and recent history stay on this device; does not change a shared plan.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine non-obvious context: data is device-local, includes defaults and recent history, and no shared plan is mutated — exactly the kind of scoping detail annotations cannot express.

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

Conciseness5/5

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

Two short sentences with zero filler, and the core action ('Open local widget preferences') is front-loaded ahead of the scoping caveat. Every clause earns its place.

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

Completeness4/5

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

For a zero-parameter, no-output-schema tool the description is nearly complete: it says what opens and that nothing shared is affected. It does not describe what the agent should expect to see afterward, but with annotations covering the read-only profile this is a minor gap.

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 coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter information is missing or contradictory.

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+resource ('Open local widget preferences') and the description clarifies scope ('on this device'), which separates it from the shared-plan siblings. It does not explicitly distinguish itself from read_plugin_settings/update_plugin_settings, and the mismatch between the title ('Device preferences') and the description ('widget preferences') leaves minor ambiguity about what is actually opened.

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 sentence 'does not change a shared plan' gives an implicit when-not boundary, useful against the plan-mutation siblings. However, no alternative is named and no condition for choosing this tool over read_plugin_settings is stated, so the 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.

read_plugin_settingsB
Read-only
Inspect

Read the plugin settings layout. There are no account settings; the action opens device-local preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
layoutNo
schemaYes
valuesYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that preferences are device-local rather than account-scoped, which is genuinely useful context, but it does not describe the read behavior itself or what 'layout' means, and 'the action opens ... preferences' is ambiguous for a read tool.

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?

Two short sentences with the purpose front-loaded and no filler. The second sentence earns its place only partially, since 'opens device-local preferences' muddies rather than sharpens the read semantics.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. What is missing is clarity on the core operation: 'settings layout' and the verb 'opens' leave ambiguity about whether this reads configuration data or launches a preferences surface.

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 schema takes zero parameters, so the baseline is 4. The description's note that there are no account settings adds scope meaning beyond the empty schema, though there is no parameter syntax to clarify.

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 verb+resource ('Read the plugin settings') and scopes it ('no account settings; device-local preferences'), which distinguishes it from the account-level siblings. However, 'settings layout' is vague, and it never names update_plugin_settings or open_preferences, so the boundary with those siblings is left implicit.

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?

It clarifies that there are no account settings, a negative scope statement, but gives no positive guidance on when to call this instead of update_plugin_settings, open_preferences, or open_planner. An agent gets no usage context or prerequisite information.

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

record_paymentRecord a paymentInspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Record that the person you act for paid someone back (settling up). amount defaults to what they owe that person according to get_expenses. Only after the money was actually sent. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
amountNoOptional; defaults to the suggested settle-up amount.
participant_idYesFrom create_plan or join_plan.
allow_duplicateNoOnly if the user confirms a second, identical payment within 10 minutes (otherwise it is treated as a retry).
participant_tokenYesFrom create_plan or join_plan.
to_participant_idYesWho received the money (participant_id, or their exact name).
remove_entryRemove something you added
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Delete an expense, payment, checklist item or place that the person you act for added (e.g. to fix a wrong amount: remove, then add again). Entries added by others can't be removed here. Requires an explicit request to delete this specific entry. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesexpense_id / payment_id (get_expenses), item_id (get_checklist) or place_id (get_plan). For items and places the exact text/name also works.
kindYes
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
participant_idYesFrom create_plan or join_plan.
participant_tokenYesFrom create_plan or join_plan.
set_availabilitySet available days
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Add, remove or replace one participant's available calendar dates (YYYY-MM-DD, today up to two years ahead). Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoreplace sets the entire list; add and remove change only the supplied dates. Default: replace.
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
datesYes
participant_idYesFrom create_plan or join_plan.
participant_tokenYesFrom create_plan or join_plan.
set_rsvpAnswer the RSVP
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Answer whether the person is coming: "yes", "no", or "clear" to remove the answer. For a repeating event the answer is for one occurrence: the next one by default, or pass occurrence_date (see get_plan event.upcoming). Changes only the participant bound to the supplied credentials. Current stored state is available through get_plan. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
statusYes
participant_idYesFrom create_plan or join_plan.
occurrence_dateNoRepeating events only: the date of the occurrence to answer for.
participant_tokenYesFrom create_plan or join_plan.
update_eventUpdate the event
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Change the shared event everyone sees on the RSVP page: title, date/time, place or description. Covers group-agreed details or the user's title for their just-created plan. Uses the existing plan and participant credentials; omitted fields are unchanged, and an empty string clears a field. Times are local (no time zone); an omitted start_time means all-day when a start_date is provided. Availability alone does not specify an agreed event date. Current stored state is available through get_plan. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
titleNoPlan / event name (max 120 chars).
end_dateNo
end_timeNo
locationNoPlace as plain text (max 500 chars).
start_dateNo
start_timeNoHH:MM, local time.
descriptionNoDetails for the group (max 4000 chars).
participant_idYesFrom create_plan or join_plan.
participant_tokenYesFrom create_plan or join_plan.
update_plugin_settingsC
Read-only
Inspect

No primitive account settings are available. An empty update is a no-op; device preferences are changed in the widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
setYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
valuesYes

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description genuinely adds beyond that by disclosing that an update is a no-op and that no settings are settable, which prevents a wasted or harmful call. It stops short of explaining why the tool is exposed at all.

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?

Three short sentences with the constraining fact front-loaded, which is efficient. Two of the sentences restate the same point (nothing is settable / empty update does nothing) and the widget reference sits last, so there is minor redundancy rather than tight single-purpose messaging.

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?

An output schema exists, so return values need not be described, and the description does cover the no-op nature of the tool. Given a required nested parameter, 0% schema coverage, and a name implying mutation, it still leaves unclear what an agent should do if it does call this tool and whether a non-empty 'set' is ever valid.

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

Parameters2/5

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

The single 'set' parameter has 0% schema description coverage, so the description must carry the load. It only obliquely explains the parameter via 'an empty update is a no-op', without saying that 'set' must be an empty object or listing any permitted keys, leaving the agent to reverse-engineer the schema's additionalProperties: false constraint.

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

Purpose2/5

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

The description defines the tool almost entirely by negation: it says no primitive account settings are available and that an empty update is a no-op, but never states what update_plugin_settings actually does or why it exists. The only positive information is a routing hint ('device preferences are changed in the widget'), which is more about a sibling than this tool.

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?

It implies the tool should effectively never be invoked ('an empty update is a no-op') and points to the widget for device preferences, which is a partial alternative-routing hint. However, there is no explicit 'use this when / do not use this when' statement, and the implied 'don't call me' guidance is left for the agent to infer.

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

vote_placeVote on a place
DestructiveIdempotent
Inspect

Keep the final reply in the user's conversational language, 2–4 short sentences (25–60 words): report the verified result and ask ONE relevant optional next-step question about ONE action, not a choice menu. Mandatory missing details take priority. Suggestions never perform actions automatically; respect requests for no suggestions. Saved links let friends join without accounts. If CURRENT received UI context or actual host evidence confirms the same saved plan and last-action module are already open, do not call open_planner again; realtime updates the existing view. Historic context is insufficient. Otherwise open the last-action module with the selected credentials, or honor an explicit opening request. Up-vote ("up"), down-vote ("down") or remove your vote ("clear") on a place, by place_id from get_plan. Changes only the participant bound to the supplied credentials. Current stored state is available through get_plan. Service use restrictions: plan creation, participation and edits for users known to be under 13 (or a higher local minimum) are prohibited, including under a nickname. Personal data about known underage children, sensitive medical records, intimate content, card details, government IDs, passwords and verification codes are prohibited planning input. This tool covers ordinary non-sensitive group planning only.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesSaved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.
voteYes
place_idYesFrom get_plan places[].place_id or add_place (the exact place name also works).
participant_idYesFrom create_plan or join_plan.
participant_tokenYesFrom create_plan or join_plan.
widget_lookupPlace and link lookupC
Read-only
Inspect

App-only Places search/details and link previews. The backend retains feature flags, monthly provider counters and timeouts. Never calls a paid API from the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYes
serviceYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: feature flags, monthly provider counters and timeouts live in the backend, implying quota/counter behavior worth knowing. It stops short of describing pagination, error behavior, or what the counters mean for the caller.

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?

Three short sentences, front-loaded with the capability statement. Every sentence carries some information, though the 'paid API from the browser' line is more about implementation posture than tool selection.

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

Completeness2/5

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

For a tool with a required, undocumented nested payload, four service modes and no output schema, the description is inadequate. It omits the per-service payload contract entirely, which is the single most important thing an agent needs to invoke this correctly.

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

Parameters2/5

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

Schema description coverage is 0% and the payload is an untyped nested object with no field documentation anywhere. The description's mention of search/details/link previews loosely maps to the service enum, but says nothing about the required 'payload' shape for each service, leaving the caller to guess.

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 names the concrete capabilities (Places search/details and link previews) that map onto the four enum service values, so the agent knows what the tool fetches. However, it never reconciles this with the tool's own name 'widget_lookup' and offers no explicit differentiation from siblings like add_place or find_plan_mentions.

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 statement of when to use this tool versus add_place, vote_place, or any other sibling. The only constraint offered ('Never calls a paid API from the browser') is an implementation note about the backend, not guidance on when an agent should select this tool.

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

widget_select_participantChoose your nameC
Read-only
Inspect

App-only identity picker. Bind the name explicitly selected in the shared web UI. Does not change schedule data.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes
participant_idYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is mostly covered. The description adds the useful scoping note that it does not touch schedule data, which reconciles the read-only hint with the verb "bind", but it says nothing about permissions, the open-world behavior it triggers, or persistence.

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

Conciseness4/5

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

Three short, front-loaded sentences with the key qualifier ("App-only") first and the negative constraint last. No filler, though it is arguably under-specified rather than maximally concise.

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

Completeness2/5

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

For a two-parameter tool with no output schema and no parameter docs, the description leaves major gaps: what plan is, what participant_id is, and what binding produces. The annotations carry safety but there is no return or behavior detail.

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

Parameters2/5

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

Schema description coverage is 0% and both required parameters (plan, participant_id) are undocumented in the schema. The description vaguely refers to "the name" but never explains what plan or participant_id are or how they relate to the selected name, so it fails to compensate for the coverage gap.

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 labels itself an "App-only identity picker" and says it binds the name selected in the shared web UI, which conveys the general intent. However, the operative verb is ambiguous ("bind") and it never states what resource is being set (a session identity? a plan participant?) in a way that clearly separates it from siblings like widget_lookup or join_plan.

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?

"App-only" and "explicitly selected in the shared web UI" imply the context in which this applies, and "Does not change schedule data" rules out one class of expectations. But no alternative tool is named and there is no explicit when-to-use/when-not statement.

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

widget_writeSave from the plannerC
Destructive
Inspect

App-only transport for explicit interactions with shared web components. Reuses the web write gateway, validation and budgets. Requires the selected participant token for saved-plan edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
planNo
payloadYes
operationYes
participant_idNo
participant_tokenNo
target_participant_idNo
target_participant_tokenNo

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already declare destructiveRewrite behavior (readOnlyHint=false, destructiveHint=true, openWorldHint=true). The description adds genuine context beyond these: it reuses the 'web write gateway, validation and budgets' (signalling validation/budget enforcement) and requires a participant token for auth. That is useful, but it stops short of stating what gets destroyed or what the return shape is.

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?

Three short sentences with no obvious padding, and the app-only/transport nature is front-loaded. However, the sentences are dense with internal jargon that reduces usable signal per sentence.

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

Completeness2/5

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

For a complex 7-parameter mutation tool with nested objects, no output schema and only partial annotation coverage, the description is far too thin. It omits operation semantics, payload structure, the ID-vs-token distinctions, and any result/error behavior an agent would need.

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

Parameters2/5

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

With 7 parameters and 0% schema description coverage, the description must carry the load, but it only gestures at participant_token and 'saved-plan' (plan). It never explains operation, payload, participant_id, target_participant_id, or target_participant_token, leaving most parameters undocumented in both schema and description.

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

Purpose2/5

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

The name 'widget_write' and title 'Save from the planner' suggest a write/save operation, but the description calls it an 'App-only transport for explicit interactions with shared web components', which is jargon that does not clearly state a verb+resource. It never says what is being written or saved, so an agent cannot confidently distinguish it from widget_lookup or widget_select_participant.

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 hint is 'Requires the selected participant token for saved-plan edits', which implies a prior widget_select_participant step and a saved-plan context, but there is no explicit when-to-use/when-not-to-use guidance or named alternative among the many siblings.

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. 1 tool update
    • Changedadd_checklist_item1 field changed
      • changedInput schema / properties / text / description
        Previous value: -"Item text (max 500 chars)."New value: +"One independently checkable item, single line, max 500 chars. Not a list of multiple tasks/ingredients."
  2. 1 tool update
    • Changedopen_planner2 fields changed
      • addedInput schema / properties / participant_id
        Added value: +{
        +  "description": "Previously selected participant in this plan; requires participant_token.",
        +  "type": "string"
        +}
      • addedInput schema / properties / participant_token
        Added value: +{
        +  "description": "Token returned by join_plan/create_plan for this participant and plan; requires participant_id.",
        +  "type": "string"
        +}
  3. 3 tool updates
    • Changedadd_place4 fields changed
      • addedInput schema / properties / google_place_id
        Added value: +{
        +  "description": "Exact place ID from returned Google candidates; official details are loaded server-side (max 160 chars).",
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Place name exactly as supplied, including accents (max 300 chars)."New value: +"Requested place name, including accents (max 300 chars). A selected Google result supplies its official name."
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Optional Google autocomplete query including the known city/address (max 160 chars); otherwise name/address are used.",
        +  "type": "string"
        +}
      • addedInput schema / properties / source
        Added value: +{
        +  "description": "Default auto uses Google first. Manual explicitly saves the supplied name/address/link without a paid lookup.",
        +  "enum": [
        +    "auto",
        +    "manual"
        +  ],
        +  "type": "string"
        +}
    • Changedcreate_plan4 fields changed
      • changedInput schema / properties / request_id / description
        Previous value: -"Optional UUID v4 for an atomic create with your_name. Keep the same UUID and fields on retry; never reuse it for a different plan."New value: +"Optional UUID v4 for atomic creation. An identical UUID and identical fields (including omissions) replay the same creation; a changed payload is rejected."
      • changedInput schema / properties / title / description
        Previous value: -"Short plan name, e.g. \"Weekend at the cabin\" (max 120 chars)."New value: +"User-supplied short plan name (max 120 chars). Omitted when unknown; temporary Event label until collected after the requested action."
      • changedInput schema / properties / your_name / description
        Previous value: -"Name of the person you act for; adds them as the first participant (max 80 chars)."New value: +"User-supplied participant name (max 80 chars). Omitted when unknown; temporary Organizer participant until their name is collected after the requested action."
      • changedInput schema / required
        Previous value: -[
        -  "title"
        -]New value: +[]
    • Changedjoin_plan4 fields changed
      • addedInput schema / properties / existing_participant_id
        Added value: +{
        +  "description": "Exact existing participant ID from get_plan or received user UI selection; requires selection=existing and matching name. No rename.",
        +  "type": "string"
        +}
      • addedInput schema / properties / participant_id
        Added value: +{
        +  "description": "From create_plan or join_plan.",
        +  "type": "string"
        +}
      • addedInput schema / properties / participant_token
        Added value: +{
        +  "description": "From create_plan or join_plan.",
        +  "type": "string"
        +}
      • addedInput schema / properties / selection
        Added value: +{
        +  "description": "Without credentials: auto matches or adds; existing never adds; new never takes another person's matching name. Default auto.",
        +  "enum": [
        +    "auto",
        +    "existing",
        +    "new"
        +  ],
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources