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
HTTP POST · JSON-RPC 2.0 Protocol 2025-06-18 OAuth 2.0 device flow ChatGPT Apps SDK widgets
tools/list
create_draw Creates a draw from three people or more, with a date, an optional budget and per-person exclusions. public
send_invitations_email Emails every participant a personal link to their own match. Once per draw. share_code
get_group_share_message Writes the message to paste into WhatsApp or Telegram. public
get_my_draws Lists the signed-in user's active draws: name, date, budget, how many people, their role. oauth
get_wishlist Returns the signed-in user's wishlists. oauth
add_to_wishlist Adds an item to a wishlist the user already owns, created in the app. oauth
resend_invitation Resends one participant's invitation, at most once every 24 hours. oauth + premium

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.

claude_desktop_config.json
{
  "mcpServers": {
    "secret-santa": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.secretsantaraffle.net/mcp"]
    }
  }
}

The server also exposes UI resources (ui://widgets/…), so clients that render MCP Apps show the draw, the invitations and your wishlists as cards instead of plain text. Clients with native remote MCP support — ChatGPT connectors, Claude web and mobile, Smithery — only need the URL above. 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.

  1. 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.
  2. 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.
  3. From then on the server issues RS256 JWTs, verifiable against /.well-known/jwks.json. Premium tools stay gated: without an ad-free plan they return premium_required, never a silent bypass.