Skip to main content
Glama
chrischall

signupgenius-mcp

by chrischall

signupgenius-mcp

CI npm license

MCP server for SignUpGenius. 15 read tools and 4 write across profile, groups, sign-ups, reports, public sign-up metadata, slot listings, RSVPs, and slot claim/release.

Reading a sign-up needs no credentials at all: signupgenius_get_public_signup (title, description, organizer, required questions) and signupgenius_list_slots (dates, times, locations, capacity, who has signed up and how many spots each entry takes) work on any public sheet, including ones you did not create. The two slot writes — signupgenius_claim_slot and signupgenius_release_slot — need a signed-in session and, like signupgenius_rsvp and signupgenius_add_group_member, never write on the first call: a client that supports MCP elicitation gets a confirmation prompt (unless MCP_CONFIRM_ELICITATION=off); otherwise the first call returns a preview and a single-use confirmToken bound to that exact write, and only a repeat call with the same arguments plus the token submits. MCP_CONFIRM_MODE (ask-user default, auto, refuse) tunes this. Set MCP_CONFIRM_ELICITATION=off for a client that says it supports elicitation but never shows the prompt (the write hangs — opencode 2.0.x); every client then gets the preview-and-token flow. Any other value stays on, with a warning on stderr.

signupgenius_claim_slot and signupgenius_rsvp sign up as the signed-in account by default: leave firstname, lastname and email out and they are read from your profile (the same call signupgenius_get_profile makes). Pass them only to sign up someone else, such as a family member. That is allowed, but the preview then carries identityDiffersFromAccount: true and an identityNote naming both identities, because the entry is still tied to your account. Every preview shows the identity under identity, with source set to account, supplied or mixed. The confirm token is bound to the resolved identity, so a preview approved for one person can't submit as another.

Three auth modes (tried in this priority order — first match wins):

  1. Pro key mode. Uses the documented Pro API key. Required only for the slot REPORT tools (filled/available/all-participants). Pro subscription needed.

  2. Session mode. Logs in with your normal email/password to call the same web API the signupgenius.com dashboard uses. Free accounts work. No SSO/2FA.

  3. fetchproxy fallback (no env vars needed). When no env vars are set, the server reads accessToken / cfid / cftoken cookies once at startup from your already-signed-in signupgenius.com tab via the ContextMint Bridge browser extension (built on fetchproxy). After that one read, all SignUpGenius API calls go directly from Node — the extension is not in the request hot path. Install the extension once (see fetchproxy fallback below), sign into SignUpGenius, and the MCP just works.

Set SIGNUPGENIUS_DISABLE_FETCHPROXY=1 to opt out of the fallback (turns missing credentials into a hard error — useful in headless CI).

Tools

Domain

Tools

Mode

Profile

signupgenius_get_profile

both

Groups

signupgenius_list_groups, signupgenius_list_group_members, signupgenius_get_group_member, signupgenius_add_group_member (write)

both

Sign-ups

signupgenius_list_created_active, _expired, _all, signupgenius_list_invited, signupgenius_list_signedupfor

both

Sign-ups (extras)

signupgenius_legacy_get_my_signups

session only

Reports

signupgenius_report_all, signupgenius_report_filled, signupgenius_report_available

key only

Notes on session-mode sign-up listings: the v3 endpoints signups/created, signups/invited, and signups/signedupfor return the full list in one paginated call (no separate active/expired URLs). The three signupgenius_list_created_* tools all map to the same endpoint in session mode; filter by enddate client-side. The bonus signupgenius_legacy_get_my_signups calls the same backend the SignUpGenius wizard itself uses and sometimes returns fuller data.

Reports outside key mode fail fast with a KeyModeRequiredError naming the tool, the mode required and the mode in effect, telling the user to set SIGNUPGENIUS_USER_KEY — and pointing at signupgenius_list_slots, which answers slot availability for any sheet with no auth at all.

Related MCP server: whmcs-mcp-server

Configuration

SIGNUPGENIUS_EMAIL=you@example.com
SIGNUPGENIUS_PASSWORD=your-password
SIGNUPGENIUS_NAME=Family               # optional, log label only

The server logs into signupgenius.com on first request, caches the JWT and session cookies, and silently re-logs in on a 401. Treat .env like a password file — it's gitignored here, do not commit.

Direct email/password accounts only. Won't work with Google/Apple/Facebook/Microsoft SSO or 2FA, same caveat as similar sibling MCPs.

Key mode (Pro only)

SIGNUPGENIUS_USER_KEY=your-api-key
SIGNUPGENIUS_NAME=PTA Org              # optional

Find the user key in SignUpGenius under Pro Tools → API Management.

fetchproxy fallback (no env vars)

Install the ContextMint Bridge browser extension from its releases page (Chrome: download the chrome zip, unzip it and load it unpacked at chrome://extensions with Developer mode on. Safari isn't available yet — it will ship inside the ContextMint app, which has no public download — so use Chrome for now), sign into signupgenius.com, and remove the env block from your MCP config. The MCP reads accessToken / cfid / cftoken cookies once at startup and uses them like a session-mode login. No password copy-paste required.

ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).

The slot REPORT tools still require Pro key mode — SIGNUPGENIUS_USER_KEY is the only path that hits the documented v2/k Pro API. They are also owner-scoped, so they only answer for sheets the key holder created; for availability and participants on anyone's sheet use signupgenius_list_slots, which needs no auth.

Both at once

Set both Pro key and email/password. Key mode wins. Useful if you have Pro for some accounts and want reports while still using your normal login elsewhere.

Advanced overrides

Env var

Default

Purpose

SIGNUPGENIUS_BASE_URL

key: https://api.signupgenius.com/v2/ksession: https://api.signupgenius.com/v3

Override the JSON API base.

SIGNUPGENIUS_LEGACY_BASE_URL

https://www.signupgenius.com

Override the host for /SUGboxAPI.cfm?go=… legacy calls.

SIGNUPGENIUS_LOGIN_URL

https://www.signupgenius.com

Override the login form host.

SIGNUPGENIUS_DISABLE_FETCHPROXY

unset

Set to 1 to skip the fetchproxy fallback (missing creds become a hard error).

ToS caveat

SignUpGenius's terms generally prohibit scripted/automated access. Session mode is "your own account, your own risk" — fine for personal automation but not something you should run at scale or on accounts you don't own.

Local dev

npm install
npm run build
npm test

Point an MCP host at dist/bundle.js with the env vars above, or run npm run dev after creating a .env.

Tests: vitest, 100% line/branch/function coverage. End-to-end tests against the SignUpGenius API are not in CI by design — running them requires real credentials.

Notes

  • The Pro v2/k API authenticates via a user_key query param. The session API uses a JWT Bearer + session cookie. The client picks the right one based on which env vars you set.

  • All response envelopes are normalized to { data, message, success } (lowercase) regardless of which surface served the request — the legacy SUGboxAPI dispatcher's uppercase envelope is rewritten internally.

  • signupgenius_healthcheck reports the credential in use as credential.source, one of api key, email/password session, fetchproxy session, or <mode> (auth not configured) (e.g. session (auth not configured)) when auth setup was deferred. Changed in 2.1.9: an email/password login used to report fetchproxy session, and a deferred config used to report fetchproxy session or api key. Update anything that matches on the old strings.

  • For testing the Pro v2/k surface without an account, SignUpGenius publishes a frozen demo key: V0FzMkxZcmVOZlVnclZMVEl6dGhWQT09.

Developed and maintained by AI (Claude). Use at your own discretion.

Acknowledgement of Terms

By using this MCP server, you acknowledge and agree to the following:

1. This server accesses your own SignUpGenius account. Auth happens via your own credentials. It does not — and cannot — access anyone else's account or signups.

2. SignUpGenius's Terms of Service govern your use of this server, just as they govern your direct use of signupgenius.com. The clauses most relevant here:

Users may not bypass any robot exclusion headers or other measures we take to restrict access to the Services or use any software, technology, or device to scrape, spider, or crawl the Services.

And: "You are responsible for maintaining the confidentiality of your account user name and password… You agree to accept responsibility for any and all activities or actions that occur in connection with your User Credentials."

You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server. Notably, SignUpGenius does offer an official API for paid plans; where possible, prefer the official API over the endpoints this MCP exercises.

3. Personal, organizer/participant use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with SignUpGenius, Inc. It is a personal automation tool for an authenticated user to manage their own signups and groups. Do not use it to scrape other organizers' signups, spam participants, or bulk-add fake group members.

4. Stability is not guaranteed. This server may call internal endpoints that SignUpGenius can change without notice. If a tool here breaks, the canonical fix is to use the official API where available.

5. You accept full responsibility for any consequences of using this server in connection with your SignUpGenius account — rate limiting, account warnings, suspension, or any enforcement action. Per the ToS, everything done under your credentials is attributed to you. If SignUpGenius objects to your use, stop using this server.

This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede SignUpGenius's actual ToS.

Available Tools

20 tools
signupgenius_add_group_memberA
Destructive

Add a person to one of your SignUpGenius groups by email address (first/last name optional). WRITES DATA: the person may start receiving the group's sign-up invitations, so it asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call sends nothing and returns the preview (group, email, name) and a confirmToken, and only a repeat call with the same arguments plus that token adds them — show the preview to the user and get their approval first (MCP_CONFIRM_MODE).

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYes
lastnameNo
firstnameNo
confirmTokenNoONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.
emailaddressYesEmail of the member to add to the group.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only flag the operation as a destructive, non-idempotent write; the description adds substantial non-structured context: the real-world consequence (the person may start receiving invitations), the two-phase confirmation protocol, the phase-1 no-op preview + confirmToken, and the MCP_CONFIRM_MODE fallback. This is exactly the behavioral value a description should add beyond annotations.

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

Conciseness4/5

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

Purpose is front-loaded before the confirmation detail, and the content largely earns its place. The second sentence is a long multi-clause run-on and the '(MCP_CONFIRM_MODE)' tag is terse, costing a point on structure despite overall efficiency.

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 non-idempotent write tool with 5 params, no output schema, and a two-step confirmation protocol, the description covers the critical path: side effects, the preview return shape, and the fallback token flow. An agent has enough to call it correctly, and the phase-1 return is described in lieu of an 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 40% (<50%), so the description carries weight: it establishes email as the required key and first/last as optional, and explains the confirmToken contract (same arguments, only after approval). Only groupId is left semantically undocumented, which is the sole 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 ('Add a person to ... groups') plus the keying mechanism (by email address, first/last optional). This clearly distinguishes it from read-oriented siblings like signupgenius_get_group_member and signupgenius_list_group_members without the agent needing to open 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 Guidelines4/5

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

Gives clear operational context (adding a member, first/last optional) and an explicit pre-condition flow for confirmation. It does not name exclusions or route to sibling alternatives (e.g. removing releasing a slot), so it stops short of a 5, but the when-to-use context is unambiguous.

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

signupgenius_claim_slotA
Destructive

Claim (sign up for) a slot on a slot-based SignUpGenius sheet. WRITES DATA the organizer sees, so it asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call writes nothing and returns the preview (sheet, slot, identity) and a confirmToken, and only a repeat call with the same arguments plus that token submits — show the preview to the user and get their approval first (MCP_CONFIRM_MODE). Signs up as the signed-in account by default: omit firstname/lastname/email unless the user is signing up someone else (e.g. a family member). A supplied identity that differs from the account is allowed but flagged in the preview (identityDiffersFromAccount) — point it out to the user. For Yes/No/Maybe headcount sheets use signupgenius_rsvp instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSign-up URL or slug.
emailNoOptional. Defaults to the signed-in account's email.
commentNoOptional comment shown to the organizer.
lastnameNoOptional. Defaults to the signed-in account's last name.
quantityNoSpots to take. Default 1.
firstnameNoOptional. Defaults to the signed-in account's first name. Supply it only to sign up someone else (e.g. a family member); the preview then flags identityDiffersFromAccount.
slotitemidYesThe slot to claim. Get this from signupgenius_list_slots.
confirmTokenNoONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.
customFieldsNoAnswers to the sheet's required custom questions. Read the required set from signupgenius_get_public_signup.customFields — omitting a required field makes the server reject the claim.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (destructiveHint=true, openWorldHint=true). The description goes far beyond them, disclosing the two-phase confirmation flow, that the first call writes nothing and returns a preview+confirmToken, the MCP_CONFIRM_MODE behavior, and the identityDiffersFromAccount flag the agent must surface to the user.

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 the action, then the confirmation protocol, then identity defaults, then the alternative tool. Every sentence carries load, though the confirmation-negotiation passage is dense enough that a tighter phrasing could lose no 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 9-parameter destructive write tool with no output schema, the description supplies exactly the missing pieces: the preview/confirmToken return shape, the confirm-before-write contract, identity defaults, and the routing rule to the sibling.

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 semantics: firstname/lastname/email default to the signed-in account and should be omitted unless signing up someone else, confirmToken is strictly for the no-elicitation fallback and must not be invented or reused, and customFields must include the sheet's required questions.

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 precise verb+resource+scope ('Claim (sign up for) a slot on a slot-based SignUpGenius sheet') and explicitly names the sibling it is not for Yes/No/Maybe sheets (signupgenius_rsvp). An agent can route correctly 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 Guidelines5/5

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

States when to use it, the sibling alternative (signupgenius_rsvp) for headcount sheets, and prerequisites (slotitemid from list_slots, required customFields from get_public_signup) plus the identity-default rule. Covers when-to-use, when-not, and where inputs come from.

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

signupgenius_get_group_memberB
Read-only

Get detailed info for a group member (address, phone, email) when the member has provided it via a sign-up.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYes
memberIdYescommunitymemberid returned by signupgenius_list_group_members.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data scope are covered. The description adds one genuinely non-redundant behavioral fact: the contact fields are only present if the member supplied them during a sign-up, i.e. results can be partially empty. It says nothing about error behavior for invalid IDs or rate limits.

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?

A single sentence with the verb, resource, and returned fields front-loaded, followed by the availability caveat. Nothing is redundant, though the trailing 'when the member has provided it via a sign-up' clause is slightly loose phrasing that could be tightened.

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?

With no output schema, the description usefully names the three fields returned, which partly compensates. It leaves the groupId parameter unexplained and gives no guidance on what happens when a member has not provided contact info (empty fields vs. error), which an agent needs for a lookup tool.

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 50%: memberId is documented in the schema as the 'communitymemberid returned by signupgenius_list_group_members', but groupId has no schema description and the tool description does not explain it either. The description adds no format, type, or sourcing information beyond what the schema already carries.

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 ('Get detailed info for a group member') and even enumerates the returned fields (address, phone, email), so the agent knows exactly what this returns. It does not name or contrast itself with the closest sibling, signupgenius_list_group_members, which is the natural disambiguation partner.

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 phrase 'when the member has provided it via a sign-up' implies a usage condition (fields may be empty if the member never supplied them), which is a useful implicit guideline. However, it never states when to call this versus signupgenius_list_group_members or signupgenius_add_group_member, so routing 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.

signupgenius_get_profileA
Read-only

Get the SignUpGenius profile of the authenticated user (name, email, member ID, subscription level). Useful as a first call to confirm credentials. Key mode hits /v2/k/user/profile; session mode hits /v3/member/profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag readOnlyHint and openWorldHint, so the safety profile is covered. The description adds non-obvious behavioral context by disclosing that key mode routes to /v2/k/user/profile while session mode routes to /v3/member/profile, which is genuinely useful for understanding mode-dependent 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?

Front-loaded with the core action and returned fields, followed by a usage hint and endpoint detail. All three sentences earn their place, though the endpoint path detail is somewhat technical and could be trimmed for pure invocation purposes.

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 compensates by listing the profile fields returned and noting the mode-specific endpoints. Combined with readOnly annotations, an agent has everything needed to call this correctly.

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 there is no parameter semantics to document; baseline is 4. The description correctly implies no input is required by framing it as a profile lookup of the authenticated user.

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 (Get) and resource (the SignUpGenius profile of the authenticated user), and enumerates the returned fields (name, email, member ID, subscription level). This clearly distinguishes it from sibling list/get tools that operate on groups, members, or slots.

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 a concrete usage cue: 'Useful as a first call to confirm credentials,' which tells the agent when this tool is appropriate. It stops short of naming alternatives or exclusions, but the intent is clear.

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

signupgenius_get_public_signupA
Read-only

Look up a SignUpGenius sign-up by its public URL or slug (e.g. https://www.signupgenius.com/go/<urlid>-<signupid>-<vanity>). Returns the real sheet metadata: title, description, organization, category, creator + contact email, timezone, created/modified dates, whether it is an RSVP or slot-based sheet, and which custom fields a participant must supply to sign up. Requires NO SignUpGenius auth and works for sheets the user did not create. Use signupgenius_list_slots for the actual dates/times and availability — this tool returns metadata only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesEither a full SignUpGenius sign-up URL (e.g. https://www.signupgenius.com/go/<slug>) or just the slug. The slug looks like `<hex>-<signupid>[-<vanity>]`.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, and the description adds meaningful behavioral context beyond that: no SignUpGenius auth is required, it works on public sheets not created by the user, and it returns only metadata rather than slots. It does not contradict the annotations, though it could mention error cases or rate limits to reach 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?

The description is compact and front-loaded: first sentence states the action and URL format, second summarizes the return payload and auth context, third routes to the sibling tool. Every sentence contributes essential information with no wasted words.

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

Completeness5/5

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

For a single-parameter read-only lookup with rich schema coverage cherry-picked details, this description is complete. It lists the returned metadata categories, clarifies authentication requirements, and points to the sibling for slot data, so an agent can invoke it correctly without additional information.

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 parameter description already explains the URL and slug format thoroughly. The tool description reinforces this with an example URL pattern, but it adds little semantic value beyond the schema, so a baseline 3 is appropriate.

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

Purpose5/5

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

Description starts with a specific verb and resource: 'Look up a SignUpGenius sign-up by its public URL or slug' and enumerates what metadata is returned. It also explicitly distinguishes itself from siblings by stating it returns metadata only and pointing to signupgenius_list_slots for dates/times.

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

Usage Guidelines5/5

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

The description gives clear when-to-use context: no auth needed and works for sheets the user did not create. It explicitly names the sibling alternative, signupgenius_list_slots, for date/time availability, which removes ambiguity about which tool an agent should select.

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

signupgenius_healthcheckVerify credentials and upstream reachabilityA
Read-onlyIdempotent

Resolves the credential the way real tools do, then makes one authenticated request to api.signupgenius.com. Reports which source supplied the credential, whether api.signupgenius.com accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a api.signupgenius.com-side problem'. Read-only; never returns the credential itself. Call this when a real tool fails and you want to know which hop broke.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description's 'Read-only' statement adds little beyond that. However, it goes further by disclosing it never returns the credential itself, explains the diagnostic outputs (source, acceptance, round-trip time, plain-English hint), and the nature of the single authenticated request. This adds meaningful behavioral detail beyond the annotations, though it doesn't cover every edge case like rate limits or exact response format. With annotations present, this is solidly above baseline.

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

Conciseness5/5

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

The description is four sentences long, each adding distinct value: purpose, output details, read-only safety, and usage trigger. It's front-loaded with the core action, and there is no fluff or redundancy. Every sentence earns its place, making it an exemplar of concise, structured writing.

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 zero-parameter, no-output-schema health-check tool, the description covers all essential aspects: what it does, what it reports, when to use it, and a safety guarantee. It doesn't leave an agent guessing about the tool's scope or limitations. The description is complete for its purpose, especially given the rich annotations that already convey read-only and idempotent behavior.

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 has zero parameters, so the schema covers everything (100% coverage trivially). The description correctly avoids discussing parameters since none exist. According to the rubric, 0 params gives a baseline of 4, and the description doesn't need to add anything. It appropriately focuses on behavior and output.

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

Purpose5/5

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

The description clearly states the tool's purpose: it resolves the credential and makes an authenticated request to api.signupgenius.com, then reports diagnostics. It names the specific resource and action, and distinguishes itself from sibling tools by indicating it's for diagnosing failures ('Call this when a real tool fails'). This is explicit and unambiguous.

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

Usage Guidelines4/5

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

The description gives a clear when-to-use: 'Call this when a real tool fails and you want to know which hop broke.' This is explicit context but doesn't name alternatives or explicitly state when not to use it. However, the condition is clear enough that an agent can infer it's not for normal operations. It stops short of naming sibling tools as alternatives, so it earns a 4 rather than a 5.

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

signupgenius_legacy_get_my_signupsA
Read-only

Session mode only. Returns the same sign-up listing the SignUpGenius wizard sees (via /SUGboxAPI.cfm?go=t.getMySignups). Use when you want fuller data than signupgenius_list_created_* provides.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a real constraint ('Session mode only') and discloses the underlying endpoint, but does not explain what session mode means or what the wizard listing contains, leaving meaningful behavioral gaps for a legacy endpoint.

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 front-loaded sentences with the constraint first and the sibling comparison second; no filler. The raw API endpoint is arguably noise for an agent but conveys legacy provenance cheaply.

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 read tool with no output schema, this covers purpose, a sibling alternative, and an access constraint. It stops short of clarifying the 'session mode' prerequisite or the shape of the returned listing, which is the main remaining ambiguity.

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 no parameters, so there is nothing for the description to document; the 4 baseline applies. No parameter-related information is missing.

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 clear verb ('Returns') and resource ('the same sign-up listing the SignUpGenius wizard sees'), and differentiates from siblings by citing 'fuller data than signupgenius_list_created_* provides'. The reference to the internal API endpoint adds specificity, though 'the same listing the wizard sees' is somewhat indirect as a description of the data.

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 a clear usage condition ('Use when you want fuller data than signupgenius_list_created_* provides') and names the alternative tools, which is exactly the sibling-routing an agent needs. The precondition 'Session mode only' is stated but never explained, so the agent cannot fully judge when this tool is actually available.

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

signupgenius_list_created_activeA
Read-only

List sign-ups created by the authenticated user. In session mode this returns the full list (active + expired) — filter on enddate client-side if you need only active.

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 cover read-only and open-world characteristics, so the bar is lower, and the description adds genuinely new behavior: in session mode the result includes both active and expired entries, requiring client-side enddate filtering. This is exactly the kind of trait 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 tight sentences, front-loaded with what the tool returns, followed by the one non-obvious behavioral caveat. No filler.

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 params, no output schema, and annotations covering safety, the description supplies the one thing an agent could not infer: that the 'active' name is misleading in session mode. It could be more complete by naming the sibling tools that return expired/all lists.

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 schema coverage is 100%, so the baseline of 4 applies. There is no parameter detail the description needs to add.

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 ('List sign-ups created by the authenticated user') with a clear owner scope. It does not explicitly differentiate itself from the closely related siblings list_created_expired and list_created_all, though the 'active' framing and the enddate note hint at the distinction.

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 gives a conditional ('if you need only active') but as a client-side workaround rather than routing the agent to the sibling tools (list_created_all, list_created_expired). Usage is implied rather than made explicit against alternatives.

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

signupgenius_list_created_allA
Read-only

List ALL sign-ups created by the authenticated user (active and expired).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and reach profile is covered. The description adds the useful scope facts that results span active and expired sign-ups and are limited to the authenticated user's own creations, but says nothing about volume, ordering, or pagination for a potentially large 'ALL' listing.

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 sentence, no filler, with the scope qualifier and the active/expired distinction front-loaded. Every word earns its place.

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

Completeness4/5

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

For a zero-parameter, read-only listing tool whose annotations carry the safety profile, the definition covers who, what, and scope. The only minor omission is any hint about result volume/ordering, which matters somewhat for an 'ALL' query with no output schema to describe the return shape.

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 per the rubric the baseline is 4 and there is nothing for the description to disambiguate. Schema coverage is 100% (empty object), so no gap exists to compensate for.

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), resource (sign-ups), scope (ALL created by the authenticated user) and explicitly covers both states (active and expired). This cleanly distinguishes it from the sibling subset tools signupgenius_list_created_active and signupgenius_list_created_expired without needing to name them.

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 parenthetical '(active and expired)' signals the superset nature, which implicitly routes the agent away from the active-only and expired-only siblings. However, it never explicitly names those alternatives or states when to prefer the narrow variants, so the routing is inferable rather than stated.

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

signupgenius_list_created_expiredA
Read-only

Alias of signupgenius_list_created_active in session mode (v3 returns active + expired together). Filter on enddate client-side.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered. Beyond that, the description discloses a genuinely non-obvious behavioral trait: that in v3 the endpoint returns active and expired records together, so the result set is broader than the name implies. It stops short of covering pagination or result size, but the surprise disclosure is real added value.

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 clauses, front-loaded with the alias relationship and followed by the client-side filtering instruction. Nothing is wasted, though the parenthetical reference to 'session mode' and 'v3' assumes context the agent may not have.

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?

For a zero-parameter read-only list tool with no output schema, the description covers the essential caveat and the client-side filter. It leaves open what happens outside 'session mode' (the description implies the behavior is conditional), and says nothing about pagination or result volume, which matters for a list tool that can return both active and expired records.

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 with 100% schema coverage, so there is nothing for the description to explain and the baseline of 4 applies. The description correctly adds no redundant parameter talk.

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 resource (created signups) and explicitly frames this as an alias of signupgenius_list_created_active, which lets an agent place it against the sibling tools list_created_active and list_created_all. However, calling it an 'expired' tool while stating it actually returns active + expired together creates mild ambiguity about what the tool itself does versus what the caller must do.

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 gives one concrete usage instruction ('Filter on enddate client-side'), which tells the agent how to obtain expired entries from this call. It does not state when to prefer this over signupgenius_list_created_all or signupgenius_list_created_active, leaving the choice among the three near-identical siblings largely to inference.

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

signupgenius_list_group_membersB
Read-only

List members of a SignUpGenius group (basic info: name, email, memberid).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
groupIdYesGroup ID returned by signupgenius_list_groups.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-access profile are covered. The description adds the useful detail of what is returned (name, email, memberid), but says nothing about pagination, ordering, or authorization scope.

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?

A single front-loaded sentence with the resource first and the return payload parenthetically appended. Every clause earns its place; no filler.

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?

For a 2-param read-only list tool whose annotations carry the safety profile and which has no output schema, the description does convey the return fields. However, it omits any mention of result ordering or the meaning of the sort parameter, leaving an agent under-informed about output shape.

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 coverage is only 50%: groupId is documented in the schema ('Group ID returned by signupgenius_list_groups'), but the sort enum has no description in either the schema or the tool description. The description contributes nothing about parameters, 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.

Purpose4/5

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

States a specific verb and resource ('List members of a SignUpGenius group') and names the returned fields, which separates it from siblings like get_group_member (singular) and add_group_member. It is clear and specific though it does not explicitly name the alternative listing tools.

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

Usage Guidelines3/5

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

The action 'list members of a group' implies when to use it, but there is no explicit when/when-not guidance nor any reference to the sibling get_group_member for a single member or list_groups for the group list. Usage 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.

signupgenius_list_groupsA
Read-only

List groups created by the authenticated user. Returns groupid, title, and member count for each group.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order for group results.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context by enumerating the returned fields (groupid, title, member count), which matters because no output schema exists. It omits pagination or auth details, keeping it from 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?

Two sentences, zero filler, with the scope constraint and the return shape front-loaded. 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 simple read-only list tool with one optional parameter and no output schema, the description covers both purpose and return fields adequately. The only real gap is the absence of routing guidance against the numerous sibling list tools.

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 'sort' parameter is already documented with an enum in the schema. The description adds no syntax or meaning beyond that, so the baseline of 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?

States a specific verb ('List') and resource ('groups') with a clear scope qualifier ('created by the authenticated user'), so an agent knows exactly what set is returned. It does not explicitly differentiate itself from similarly named siblings such as list_created_active/expired/all, which keeps it short of a 5.

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 description implies usage ('list groups created by the authenticated user') but never states when to choose this tool over alternatives like list_group_members or the various list_created_* siblings, and gives no exclusions or prerequisites. An agent must infer the boundary itself.

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

signupgenius_list_invitedB
Read-only

List sign-ups the user has been invited to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With annotations declaring readOnlyHint=true and openWorldHint=true, the safety profile is covered. However, the description adds no behavioral context beyond the basic purpose—no information about authentication, pagination, return format, or rate limits. It does not contradict the annotations, but it also adds little beyond them.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant or filler content. Every word earns its place for a simple listing tool.

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

Completeness3/5

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

Given the low complexity (no parameters, no output schema) and annotations covering safety, the description is minimally adequate. It misses explicit guidance on how this tool relates to similar sibling list tools, which could affect selection. The return values are implied but not stated.

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 has zero parameters, so the baseline is 4. The empty input schema and 100% schema coverage mean there are no parameter semantics to describe, and the description appropriately does not invent any.

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 ('List') and a specific resource ('sign-ups the user has been invited to'). This distinguishes it from siblings like list_signedupfor or list_created_*, but it does not explicitly name or contrast with those alternatives, keeping it at 4 rather than 5.

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 description offers no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or exclusions (e.g., 'use this instead of list_signedupfor when you only want invitations'). Usage is only implied by the tool name and description.

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

signupgenius_list_signedupforB
Read-only

List sign-ups the user has personally signed up for.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 and openWorldHint=true, so the safety profile is covered by structured data. The description adds one useful scoping nuance — that these are sign-ups the user personally joined, not ones they created or were invited to — but says nothing about return shape, pagination, or volume.

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 no filler. For a zero-parameter listing tool the scope qualifier is the one piece of information that matters, and it is stated immediately.

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?

With no output schema and a trivial input, the description's main remaining duty is disambiguation from near-identical siblings like legacy_get_my_signups and list_invited, which it does not address. It is adequate but leaves the agent guessing among overlapping list tools.

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, so there is nothing for the description to document; baseline 4 applies. No misleading parameter claims are made.

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 ("List") and a clearly scoped resource ("sign-ups the user has personally signed up for"), which distinguishes it from the created/invited variants by ownership. However, it does not name or distinguish itself from the close sibling signupgenius_legacy_get_my_signups, which sounds like it may return the same thing.

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 the many sibling list tools (list_invited, list_created_all, legacy_get_my_signups). The agent must infer selection purely from the phrase "personally signed up for," with no explicit alternative routing.

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

signupgenius_list_slotsA
Read-only

List every SLOT on a SignUpGenius sign-up — date, day of week, start/end time, title, location, capacity, how many spots are filled vs still available, and who has already signed up (with the quantity each entry consumes). Accepts a sign-up URL, slug, or numeric id. Requires NO auth and works for sheets the user did NOT create, which is exactly the case the Pro signupgenius_report_* tools cannot serve (they are key-only AND owner-scoped). This is the right tool for "what is still open?".

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesA SignUpGenius sign-up URL, its slug (`<urlid>-<signupid>[-<vanity>]`), or just the numeric sign-up id.
onlyAvailableNoReturn only slots that still have room. Default false (return all).
includeParticipantsNoFetch the name + quantity of everyone already signed up (default true). Costs one extra request per slot row; set false for a fast availability-only view.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description rightly focuses on added context: requiring NO auth, working on sheets the user did NOT create, and returning participant entries with quantity consumed. It also surfaces the per-slot request cost in the includeParticipants parameter, which helps agents plan calls. No mention of rate limits, but the disclosures go beyond the structured hints.

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

Conciseness5/5

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

Three sentences with no filler: the first enumerates the rich output, the second covers accepted inputs and the no-auth/public property, and the third gives the use case. Important differentiators are front-loaded, and every sentence adds decision-relevant 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 read-only, public data-listing tool with three well-documented params and no output schema, the description is complete: it enumerates all output fields, states the input formats, clarifies auth/ownership constraints, and distinguishes from sibling tools. An agent has everything needed to invoke it correctly and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents url, onlyAvailable, and includeParticipants, including the request-cost tradeoff. The description restates the accepted input formats (URL, slug, numeric id) but adds little beyond what the schema provides. The baseline 3 is appropriate because the schema carries the parameter documentation burden.

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 SLOT'), then enumerates exactly what each slot contains, including date, times, title, location, capacity, availability counts, and participant details. It also differentiates itself from the owner-scoped Pro signupgenius_report_* tools by stating it works without auth and on sign-ups the user did not create.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: for public sign-ups the user did not create, and specifically for answering 'what is still open?'. It also names the alternatives it is not, the Pro report tools, and explains their limitation (key-only AND owner-scoped), giving the agent a clear decision rule.

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

signupgenius_release_slotA
Destructive

Withdraw (give up) a slot the user previously signed up for. WRITES DATA — this removes a real sign-up, so it asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call removes nothing and returns the preview (sheet, slot, whose entry) and a confirmToken, and only a repeat call with the same arguments plus that token withdraws — show the preview to the user and get their approval first (MCP_CONFIRM_MODE).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSign-up URL or slug.
memberIdNoOptional. The signed-in member id is resolved automatically; supplying a DIFFERENT one is rejected, because this tool only withdraws the current user's own sign-up.
slotitemidYesThe slot the entry sits in (`slotitemid` from the same signupgenius_list_slots row). Used to verify afterwards that the entry actually disappeared.
confirmTokenNoONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.
itemMemberIdYesThe sign-up entry to withdraw — `participants[].item_member_id` from signupgenius_list_slots. This is the wizard's `imid`.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation by disclosing the full two-phase confirmation protocol: the client-side prompt when elicitation is supported, the fallback where the first call is a no-op returning a preview plus confirmToken, and the requirement to echo the token with identical arguments. This is exactly the kind of behavior an agent must know before invoking a destructive write.

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 purpose is front-loaded in the first sentence and the destructive warning follows immediately; every clause carries information. It is dense and somewhat run-on, but no sentence is filler.

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 destructive, no-output-schema mutation with a non-trivial confirmation handshake, the description supplies the missing pieces: the confirm-first requirement, the preview contents, and the token round-trip. Nothing an agent needs in order to call it safely is absent.

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 already 100%, so the baseline is 3, but the description adds real meaning: it explains what the preview exposes (sheet, slot, whose entry) and the lifecycle rules for confirmToken (never on first call, never invented, never reused, ignored under elicitation), which the schema alone does not convey.

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 ('Withdraw/give up') and resource ('a slot the user previously signed up for'), which cleanly distinguishes it from the inverse sibling signupgenius_claim_slot 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 Guidelines4/5

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

The when-to-use is clear (undo a prior sign-up) and it adds a real exclusion: only the current user's own entry can be withdrawn, a different memberId is rejected. It never names an explicit alternative sibling, so it stops short of 5.

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

signupgenius_report_allA
Read-only

Full report for a sign-up: every slot plus the participant who claimed it (with custom-question answers when present). Requires SIGNUPGENIUS_USER_KEY (Pro subscription) — session mode is not supported for reports — AND only covers sheets the key-holder created. For slot dates, times and availability on ANY sign-up (including sheets the user did not create) prefer signupgenius_list_slots, which needs no auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
signupIdYesSign-up ID (signupid).

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial context beyond them: the required credential and subscription tier, that session-based auth will fail, and that results are scoped to sheets created by the key-holder. It also discloses the return content shape (slot + participant + custom answers).

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, front-loaded with what the tool returns, then the auth/scope caveats, then the alternative. No filler and 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 single-parameter, read-only reporting tool with no output schema, the description covers all the decision-relevant facts: what is returned, what auth and subscription are required, which sheets are in scope, and which sibling to use instead. Nothing needed to call it correctly 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?

There is a single parameter and schema description coverage is 100%, with signupId fully documented in the schema (type, bounds, meaning). The description adds no format or identifier guidance beyond what the schema already states, so this sits at the baseline for a well-covered single-param tool.

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 and resource: a full report per sign-up containing every slot, its claiming participant, and custom-question answers when present. It clearly separates itself from signupgenius_list_slots, but does not articulate how it differs from its close siblings signupgenius_report_filled and signupgenius_report_available.

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

Usage Guidelines5/5

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

It gives explicit prerequisites (SIGNUPGENIUS_USER_KEY with a Pro subscription), an exclusion (session mode is not supported), a scope limitation (only sheets the key-holder created), and names a preferred alternative (signupgenius_list_slots) with the exact condition that selects it — getting slot dates/times on any sign-up without auth.

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

signupgenius_report_availableA
Read-only

Report for a sign-up restricted to slots that are still open/empty. Requires SIGNUPGENIUS_USER_KEY (Pro subscription) — session mode is not supported for reports — AND only covers sheets the key-holder created. For slot dates, times and availability on ANY sign-up (including sheets the user did not create) prefer signupgenius_list_slots, which needs no auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
signupIdYesSign-up ID (signupid).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply readOnlyHint/openWorldHint; the description goes well beyond them by disclosing auth prerequisites (Pro key), a hard scope limit (creator-owned sheets only), and unsupported session mode — all material facts an agent cannot infer from the annotation set.

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

Conciseness5/5

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

Two sentences, zero filler, and the most decision-relevant constraint (what the report contains) is front-loaded before the auth caveats and the alternative recommendation.

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

Completeness4/5

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

Covers auth, scope, and sibling routing thoroughly for a one-parameter report tool. The only omission is what the returned report actually looks like — no output schema exists here, so a brief note on the return shape would have closed the last 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?

There is a single parameter (signupId) and the schema already documents it at 100% coverage with type and constraints, so the description adds nothing parameter-specific. Baseline 3 is appropriate when the schema fully carries the load.

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 combination ('report for a sign-up') with an explicit scope ('restricted to slots that are still open/empty'), which cleanly separates it from the sibling report_all and report_filled variants without opening their schemas.

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 explicit when-to-use conditions: requires SIGNUPGENIUS_USER_KEY with a Pro subscription, session mode is unsupported, and only sheets the key-holder created are covered. It also names an alternative (signupgenius_list_slots) with the precise condition that selects it and notes that it needs no auth.

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

signupgenius_report_filledA
Read-only

Report for a sign-up restricted to slots that have already been filled. Requires SIGNUPGENIUS_USER_KEY (Pro subscription) — session mode is not supported for reports — AND only covers sheets the key-holder created. For slot dates, times and availability on ANY sign-up (including sheets the user did not create) prefer signupgenius_list_slots, which needs no auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
signupIdYesSign-up ID (signupid).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint, so the description carries the operational burden — and it does: it discloses the SIGNUPGENIUS_USER_KEY / Pro-subscription requirement, that session mode is unsupported for reports, and that results are limited to sheets created by the key-holder. These are exactly the auth and scope constraints an agent must know before invoking.

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?

Purpose is front-loaded in the opening clause, followed by prerequisites and then the routing alternative. Every clause carries a distinct constraint (auth, session-mode exclusion, scope, sibling preference) with no filler.

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 read-only report with one parameter, the definition covers auth, scope, and sibling routing thoroughly. The only minor gap is that it never hints at what the report contains (fields, pagination, volume), and with no output schema present the description is the only place that could say so.

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?

There is a single parameter with 100% schema description coverage, so the schema already documents signupId fully. The description adds no syntax, format, or ID-sourcing detail beyond what the schema provides, which is the baseline 3 for a fully-covered 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 first sentence names a specific artifact (a report for a sign-up) and a precise scope (slots that have already been filled), which cleanly separates it from the sibling signupgenius_report_available. An agent can tell exactly what this returns 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 Guidelines5/5

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

It explicitly names the alternative (signupgenius_list_slots) and the condition that selects it (slot dates/times/availability on ANY sign-up, no auth needed). It also states the auth prerequisite and the scope limit (only sheets the key-holder created), so the agent knows when this tool is and is not usable.

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

signupgenius_rsvpA
Destructive

RSVP to a SignUpGenius sign-up (the Yes/No/Maybe-style sheets, including invitations from family/friends). WRITES DATA the organizer sees, so it asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call sends nothing and returns the preview (sheet, response, head counts, identity) and a confirmToken, and only a repeat call with the same arguments plus that token submits — show the preview to the user and get their approval first (MCP_CONFIRM_MODE). Responds as the signed-in account by default: omit firstname/lastname/email unless the user is responding for someone else. A supplied identity that differs from the account is allowed but flagged in the preview (identityDiffersFromAccount) — point it out to the user. Refuses when the signed-in member already has a response on the sheet (it can only ADD a response, so a second one would double-count) — change an existing answer in the SignUpGenius web UI. Slot-based sign-ups (e.g. "claim the 3pm slot") are NOT handled here — use signupgenius_claim_slot for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSignUpGenius sign-up URL (https://www.signupgenius.com/go/<slug>) or just the slug.
emailNoOptional. Defaults to the signed-in account's email.
adultsNoAdult guest count. Defaults to 1 for yes/maybe, 0 for no.
commentNoOptional comment shown to the sign-up owner.
childrenNoChild guest count. Defaults to 0.
lastnameNoOptional. Defaults to the signed-in account's last name.
responseYesRSVP response. Maps to the wizard's Yes / No / Maybe buttons.
firstnameNoOptional. Defaults to the signed-in account's first name. Supply it only to respond for someone else (e.g. a family member); the preview then flags identityDiffersFromAccount.
confirmTokenNoONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare destructive=true, idempotent=false, openWorld=true, and the description goes well beyond them: it discloses that data is written and visible to the organizer, the elicitation vs. two-step confirmToken fallback, the refusal on duplicate responses, and the identityDiffersFromAccount flag. The main remaining gap is that it does not state what a successful submission returns beyond the phase-1 preview, though no output schema exists to cover it.

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 purpose and write-semantics are front-loaded, and the dense sentences carry distinct constraints rather than repeating themselves. It is long, but nearly every clause adds a routing or safety fact; a little more white space around the two-step fallback would aid scanning.

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 compensates by enumerating the preview contents (sheet, response, head counts, identity, confirmToken) and the exact two-phase call sequence. Combined with the annotations, an agent has everything needed to invoke this correctly, including the confirmation requirement.

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 genuine meaning: it explains that firstname/lastname/email default to the signed-in account and should be omitted unless responding for someone else, and it details the confirmToken's exact lifecycle (same arguments, only after approval, never invented or reused). This goes beyond the schema text.

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 (RSVP) and resource (SignUpGenius sign-up) and immediately scopes it to the Yes/No/Maybe-style sheets rather than slot claims. It names the sibling it is not (signupgenius_claim_slot), so an agent can route between them 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 Guidelines5/5

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

Gives explicit when-to-use (RSVP sheets), when-not-to-use (slot-based sign-ups → signupgenius_claim_slot), a refusal condition (existing response → edit in web UI), and the confirmation protocol. Alternatives and exclusions are all named.

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. 3 tool updatesv2.1.11
    • Changedsignupgenius_add_group_member1 field changed
      • addedInput schema / properties / confirmToken
        Added value: +{
        +  "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.",
        +  "type": "string"
        +}
    • Changedsignupgenius_claim_slot4 fields changed
      • addedInput schema / properties / email / description
        Added value: +"Optional. Defaults to the signed-in account's email."
      • addedInput schema / properties / firstname / description
        Added value: +"Optional. Defaults to the signed-in account's first name. Supply it only to sign up someone else (e.g. a family member); the preview then flags identityDiffersFromAccount."
      • addedInput schema / properties / lastname / description
        Added value: +"Optional. Defaults to the signed-in account's last name."
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "slotitemid",
        -  "firstname",
        -  "lastname",
        -  "email"
        -]New value: +[
        +  "url",
        +  "slotitemid"
        +]
    • Changedsignupgenius_rsvp4 fields changed
      • addedInput schema / properties / email / description
        Added value: +"Optional. Defaults to the signed-in account's email."
      • addedInput schema / properties / firstname / description
        Added value: +"Optional. Defaults to the signed-in account's first name. Supply it only to respond for someone else (e.g. a family member); the preview then flags identityDiffersFromAccount."
      • addedInput schema / properties / lastname / description
        Added value: +"Optional. Defaults to the signed-in account's last name."
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "response",
        -  "firstname",
        -  "lastname",
        -  "email"
        -]New value: +[
        +  "url",
        +  "response"
        +]
  2. 3 tool updatesv2.1.4
    • Changedsignupgenius_claim_slot2 fields changed
      • removedInput schema / properties / confirm
        Removed value: -{
        -  "description": "Must be true to actually submit. Omit (or false) to get a dry-run preview of exactly what would be sent, including the identity and the slot.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / confirmToken
        Added value: +{
        +  "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.",
        +  "type": "string"
        +}
    • Changedsignupgenius_release_slot2 fields changed
      • removedInput schema / properties / confirm
        Removed value: -{
        -  "description": "Must be true to actually withdraw.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / confirmToken
        Added value: +{
        +  "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.",
        +  "type": "string"
        +}
    • Changedsignupgenius_rsvp2 fields changed
      • removedInput schema / properties / confirm
        Removed value: -{
        -  "description": "Must be true to actually submit. Omit (or false) to get a dry-run preview of the sign-up, response, head counts and identity — nothing is sent to the organizer.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / confirmToken
        Added value: +{
        +  "description": "ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 \"confirmation-required\" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.",
        +  "type": "string"
        +}
  3. 1 tool updatev2.1.3
    • Changedsignupgenius_rsvp1 field changed
      • addedInput schema / properties / confirm
        Added value: +{
        +  "description": "Must be true to actually submit. Omit (or false) to get a dry-run preview of the sign-up, response, head counts and identity — nothing is sent to the organizer.",
        +  "type": "boolean"
        +}
  4. 13 tool updatesv2.0.0
    • Changedsignupgenius_add_group_member1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_claim_slot1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_get_group_member1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_get_public_signup1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_healthcheck1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_list_group_members1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_list_groups1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_list_slots1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_release_slot1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_report_all1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_report_available1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_report_filled1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsignupgenius_rsvp1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  5. 3 tool updatesv1.8.1
    • Changedsignupgenius_add_group_member1 field changed
      • changedInput schema / properties / emailaddress / pattern
        Previous value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    • Changedsignupgenius_claim_slot1 field changed
      • changedInput schema / properties / email / pattern
        Previous value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    • Changedsignupgenius_rsvp1 field changed
      • changedInput schema / properties / email / pattern
        Previous value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
  6. 1 tool updatev1.8.0
    • Addedsignupgenius_healthcheck
  7. 4 tool updatesv1.6.0
    • Addedsignupgenius_claim_slot
    • Removedsignupgenius_get_signup_slots
    • Addedsignupgenius_list_slots
    • Addedsignupgenius_release_slot
  8. 17 tool updatesv1.3.0
    • First observedsignupgenius_add_group_member
    • First observedsignupgenius_get_group_member
    • First observedsignupgenius_get_profile
    • First observedsignupgenius_get_public_signup
    • First observedsignupgenius_get_signup_slots
    • First observedsignupgenius_legacy_get_my_signups
    • First observedsignupgenius_list_created_active
    • First observedsignupgenius_list_created_all
    • First observedsignupgenius_list_created_expired
    • First observedsignupgenius_list_group_members
    • First observedsignupgenius_list_groups
    • First observedsignupgenius_list_invited
    • First observedsignupgenius_list_signedupfor
    • First observedsignupgenius_report_all
    • First observedsignupgenius_report_available
    • First observedsignupgenius_report_filled
    • First observedsignupgenius_rsvp

TDQS

A3.6/5.0

Scored across 20 tools

Disambiguation3/5

Most tools have distinct purposes, but signupgenius_list_created_active, signupgenius_list_created_expired, and signupgenius_list_created_all are nearly identical in session mode (expired is an alias of active), causing real confusion about which to call. The three report_* tools overlap but are differentiated by filters, and list_slots vs report_available is clarified in descriptions, but the created-list redundancy drags the score down.

Naming Consistency4/5

Nearly all tools use a consistent snake_case verb_noun pattern with the same signupgenius_ prefix. Minor deviations exist, such as signupgenius_legacy_get_my_signups (legacy prefix, 'my' instead of 'created') and signupgenius_healthcheck (noun-only), but the overall pattern is predictable and readable.

Tool Count3/5

20 tools is on the heavy side for this domain, and several tools are redundant aliases or near-duplicates (three list_created_* variants plus a legacy alternative). While a few extra tools for different auth modes and report filters are justified, the set feels inflated rather than tightly scoped.

Completeness4/5

The surface covers core lifecycle operations: viewing sign-ups, slots, groups, and reports; claiming/releasing slots; RSVPing; and adding group members. Gaps like removing a group member, updating an RSVP, or creating a sign-up exist, but the most common agent workflows are supported, and some limitations are explicitly documented.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers