signupgenius-mcp
signupgenius-mcp is an MCP server for SignUpGenius that lets you read your own profile, groups, sign-ups, reports and any public sheet's metadata/slots, and perform a few confirmed writes (group member add, RSVP, slot claim/release).
Profile: get the authenticated user's name, email, member ID and subscription level; also a
healthcheckthat verifies which credential source was used and whether api.signupgenius.com accepted it.Groups: list your groups, list a group's members, fetch a member's detailed info (address/phone/email when provided), and add a member by email (write).
Your sign-ups: list created sign-ups (active / expired / all aliases), invitations you received, sign-ups you personally joined, plus a session-only legacy wizard listing for fuller data. In session mode the created-* tools all hit one endpoint, so filter by
enddateclient-side.Reports (Pro key only, owner-scoped): full report, filled-only, available-only for sheets the key holder created; these fail fast with
KeyModeRequiredErroroutside key mode.Public sheets (no auth, any sheet): fetch public sign-up metadata (title, description, organizer, required custom questions) and list every slot with dates, times, location, capacity, filled/available counts and who signed up (optionally only-available or participant-free).
RSVP (write): respond yes/no/maybe with head counts and a comment to RSVP-style sheets; refuses if you already have a response.
Slot claim (write): claim spots on a slot-based sheet with quantity and required custom-field answers.
Slot release (write, destructive): withdraw your own sign-up entry (only your own — a different member ID is rejected).
Write safety: every write needs confirmation — MCP elicitation prompt where supported, otherwise a preview plus a single-use
confirmTokenbound to the exact arguments, tuned byMCP_CONFIRM_MODE.Auth modes (priority order): Pro key, session email/password, or the fetchproxy/ContextMint Bridge cookie fallback;
SIGNUPGENIUS_DISABLE_FETCHPROXY=1turns missing credentials into a hard error.Caveat: SignUpGenius ToS discourages scripted access; intended for your own account and personal organizer/participant use.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@signupgenius-mcp What are my upcoming sign-ups?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
signupgenius-mcp
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):
Pro key mode. Uses the documented Pro API key. Required only for the slot REPORT tools (filled/available/all-participants). Pro subscription needed.
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.
fetchproxy fallback (no env vars needed). When no env vars are set, the server reads
accessToken/cfid/cftokencookies once at startup from your already-signed-insignupgenius.comtab 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 |
| both |
Groups |
| both |
Sign-ups |
| both |
Sign-ups (extras) |
| session only |
Reports |
| 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
Session mode (recommended)
SIGNUPGENIUS_EMAIL=you@example.com
SIGNUPGENIUS_PASSWORD=your-password
SIGNUPGENIUS_NAME=Family # optional, log label onlyThe 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 # optionalFind 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 |
| key: | Override the JSON API base. |
|
| Override the host for |
|
| Override the login form host. |
| unset | Set to |
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 testPoint 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_keyquery 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_healthcheckreports the credential in use ascredential.source, one ofapi 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 reportfetchproxy session, and a deferred config used to reportfetchproxy sessionorapi 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 toolssignupgenius_add_group_memberADestructive
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).
Inputs: groupId (required), emailaddress (required), lastname, firstname, +1 more.
signupgenius_claim_slotADestructive
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.
Inputs: url (required), slotitemid (required), email, comment, +5 more.
signupgenius_get_group_memberBRead-only
Get detailed info for a group member (address, phone, email) when the member has provided it via a sign-up.
Inputs: groupId (required), memberId (required).
signupgenius_get_profileARead-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.
Inputs: no named parameters.
signupgenius_get_public_signupARead-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.
Inputs: url (required).
signupgenius_healthcheckVerify credentials and upstream reachabilityARead-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.
Inputs: no named parameters.
signupgenius_legacy_get_my_signupsARead-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.
Inputs: no named parameters.
signupgenius_list_created_activeARead-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.
Inputs: no named parameters.
signupgenius_list_created_allARead-only
List ALL sign-ups created by the authenticated user (active and expired).
Inputs: no named parameters.
signupgenius_list_created_expiredARead-only
Alias of signupgenius_list_created_active in session mode (v3 returns active + expired together). Filter on enddate client-side.
Inputs: no named parameters.
signupgenius_list_group_membersBRead-only
List members of a SignUpGenius group (basic info: name, email, memberid).
Inputs: groupId (required), sort.
signupgenius_list_groupsARead-only
List groups created by the authenticated user. Returns groupid, title, and member count for each group.
Inputs: sort.
signupgenius_list_invitedBRead-only
List sign-ups the user has been invited to. view: "brief" answers one line per sign-up (title — date — status).
Inputs: view.
signupgenius_list_signedupforBRead-only
List sign-ups the user has personally signed up for. view: "brief" answers one line per sign-up (title — date — status).
Inputs: view.
signupgenius_list_slotsARead-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?".
Inputs: url (required), onlyAvailable, includeParticipants.
signupgenius_release_slotADestructive
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).
Inputs: url (required), slotitemid (required), itemMemberId (required), memberId, +1 more.
signupgenius_report_allARead-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.
Inputs: signupId (required).
signupgenius_report_availableARead-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.
Inputs: signupId (required).
signupgenius_report_filledARead-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.
Inputs: signupId (required).
signupgenius_rsvpADestructive
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.
Inputs: url (required), response (required), email, adults, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Most tools are clearly delineated — claim_slot vs rsvp, report_* vs list_slots, and private vs public data are all spelled out in descriptions. However the created-signup family overlaps badly: list_created_active, list_created_expired (self-described as an 'alias' that returns the same data in session mode), list_created_all, and legacy_get_my_signups all return largely the same listing. An agent has little basis beyond prose to choose among these four.
Consistent signupgenius_ prefix and snake_case verb_noun patterns (list_*, get_*, report_*, claim_*, add_*, release_*) throughout. Minor deviations: signupgenius_rsvp has no verb, and signupgenius_legacy_get_my_signups mixes a 'legacy_' namespace with a first-person 'my' that no other tool uses.
20 tools is at the heavy end for this domain, and a meaningful share are redundant (three created-listing variants plus a legacy duplicate, three report variants). The core read/write surface could be 12-14 tools without losing capability, making the set feel padded.
The participant lifecycle is well covered: discover public sheets, list slots, claim, RSVP, and release, each with a confirmation flow, plus group and profile reads. Gaps exist for the organizer side — no tool to create a sign-up sheet or slots, and no way to change or remove an RSVP response (the description itself punts to the web UI) or remove a group member.
Maintenance
Related MCP Connectors
TheSignup MCP server — read and manage signups, participants, webhooks, and analytics.
The official Planning Center MCP server for interacting with your ministry's data.
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP Server for use with msgraph calls to mail, calendar, and files16MIT
- AlicenseBqualityCmaintenanceMCP server to help manage a WHMCS installation.6266 npm24MIT
- AlicenseBqualityAmaintenanceMCP server for Canvas LMS enabling parent observers and students to access courses, assignments, grades, and more. Supports multiple authentication methods including token, OAuth, and a convenient fetchproxy fallback.191,244 npm1MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for the Teamup Calendar API, enabling event management, calendar listing, and available slot search.-