Model Context Protocol
Let your agent run the draw. It still won't know who got whom.
This is the live MCP server for Secret Santa Raffle. Connect an AI agent to create a draw, email the invitations and manage wishlists — while the pairings stay inside the server and reach people only by email or in the app.
https://mcp.secretsantaraffle.net/mcp
Tools
That is the whole list — seven tools, and none of them returns a pairing. get_my_draws answers with metadata only; get_wishlist never reaches another person's list. Matches travel by one route: the personal link in each invitation email, and the mobile app. The agent runs the draw and never learns its result, so the surprise is a property of the system rather than a promise the model has to keep.
Connect it
Claude has its own endpoint, https://mcp.secretsantaraffle.net/claude/mcp, with the three public tools (create_draw, send_invitations_email, get_group_share_message) and no sign-in. In claude.ai or Claude Desktop, add it as a custom connector; in Claude Code, run claude mcp add --transport http secret-santa https://mcp.secretsantaraffle.net/claude/mcp. Claude shows the draw, the invitations sent and the group message as cards (MCP Apps).
{ "mcpServers": { "secret-santa": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.secretsantaraffle.net/claude/mcp"] } } }
Other MCP clients use the endpoint at the top of this page, with all seven tools and sign-in for the private ones; its UI resources (ui://widgets/…) follow the ChatGPT Apps SDK format. The server picks the brand from the Accept-Language header or the locale argument every tool accepts, so invitations go out under Secret Santa, Amigo Invisible or Amigo Secreto in the right language.
Signing in
- Ask the agent for anything private — your draws, your wishlists. The tool answers
authentication_required, and the client starts the device flow to get a short user code. - Enter that code at mcp.secretsantaraffle.net/connect and confirm your email with a one-time password — the same passwordless login the app uses, so no password is ever stored. Standard OAuth 2.0 Device Authorization Grant, RFC 8628.
- From then on the server issues RS256 JWTs, verifiable against
/.well-known/jwks.json. Premium tools stay gated: without an ad-free plan they returnpremium_required, never a silent bypass.
Full documentation, by market