DrawKind Secret Santa MCP
DrawKind Secret Santa facilitates private gift exchanges and White Elephant parties via chat. It generates fair, encrypted reveal links for participants, manages exclusions for couples or households, and supports budget and wish list integration without requiring user sign-ups or email addresses.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://gift-exchange.zovo.one/mcpWhat you can do with it
- Draw names for Secret Santa with exclusions and budget constraints
- Generate private reveal links for gift recipients
- Create White Elephant turn orders with steal limits
- Print rules and gift tracker sheets for parties
Source and maintenance
Protocol and capabilities
- Server
- gift-exchange 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 2 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
plan_gift_exchange — Plan Secret Santa draw
Use this when the user wants to draw names for a Secret Santa or gift exchange (secret santa generator, name draw, no email needed), including exclusions such as couples, households, "Ana can't draw Bo", or last year's pairs, an optional no 2-person loops rule, a budget, an exchange date, wish lists, and an organizer note. Returns one private reveal link per participant plus copy-ready messages; each pairing is encrypted inside the link, so the result never shows who drew whom. Explains exactly why when no valid draw exists. Handles 3 to 60 people. Does not send emails or texts and does not store anything. Do not use for White Elephant or Yankee Swap games (use plan_white_elephant) or for picking one random winner.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"participants"
],
"properties": {
"budget": {
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "number"
}
],
"description": "Gift budget as the group says it, e.g. $30, 25 EUR, or £20-£25."
},
"language": {
"type": "string",
"maxLength": 20,
"description": "Language of the reveal pages and share messages: en, es, fr, de, pl, pt, or ja (e.g. pl). Default en."
},
"event_name": {
"type": "string",
"maxLength": 120,
"description": "Name of the exchange shown on every link, e.g. Office Holiday Party 2026."
},
"exclusions": {
"type": "array",
"items": {
"type": "object",
"required": [
"giver",
"cannot_draw"
],
"properties": {
"giver": {
"type": "string",
"maxLength": 120,
"description": "Who must not draw the other person, e.g. Ana."
},
"cannot_draw": {
"type": "string",
"maxLength": 120,
"description": "Whom the giver must not draw, e.g. Cy."
}
}
},
"maxItems": 400,
"description": "One-way rules such as \"Ana can't draw Cy\" or last year's pairs, e.g. [{\"giver\":\"Ana\",\"cannot_draw\":\"Cy\"}]. Cy may still draw Ana unless a second rule says otherwise."
},
"households": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"description": "A participant's name exactly as listed in participants, e.g. Ana."
},
"maxItems": 60
},
"maxItems": 30,
"description": "Couples or households whose members must not draw each other (both directions), e.g. [[\"Ana\",\"Bo\"],[\"Cy\",\"Dee\",\"Eli\"]]."
},
"wish_lists": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"wishes"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"description": "A participant's name exactly as listed in participants, e.g. Ana."
},
"wishes": {
"type": "string",
"maxLength": 400,
"description": "Gift ideas shown to whoever draws this person, e.g. Board games, dark chocolate, no candles."
}
}
},
"maxItems": 60,
"description": "Optional wish lists. Each one is shown only to the person who draws that participant."
},
"participants": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 200,
"minItems": 1,
"description": "Everyone taking part (3 to 60 people), e.g. [\"Ana\",\"Bo\",\"Cy\",\"Dee\",\"Eli\",\"Fay\"]. Names must be unique; add a last initial to tell two people with the same name apart. Any language or script works."
},
"exchange_date": {
"type": "string",
"maxLength": 40,
"description": "Gift exchange date as YYYY-MM-DD, e.g. 2026-12-18."
},
"organizer_note": {
"type": "string",
"maxLength": 400,
"description": "Optional note shown on every reveal page, e.g. Wrap gifts and bring them to the kitchen by 3 pm."
},
"no_two_person_loops": {
"type": "boolean",
"description": "true = never let two people draw each other (no A gives to B while B gives to A). Default false."
},
"include_organizer_list": {
"type": "boolean",
"description": "true only when the organizer explicitly asks to see every pairing; adds a link to the full list, which spoils the surprise for them. Default false."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mode",
"event_name",
"draw_code",
"participants",
"households",
"exclusions",
"rules",
"budget",
"exchange_date",
"exchange_date_label",
"language",
"valid_arrangements",
"sampling",
"message_template",
"warnings",
"downloads"
],
"properties": {
"mode": {
"type": "string"
},
"rules": {
"type": "array",
"items": {
"type": "string"
}
},
"budget": {
"type": [
"string",
"null"
]
},
"language": {
"type": "string"
},
"sampling": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"organizer_list": {
"type": "string"
}
},
"additionalProperties": false
},
"draw_code": {
"type": "string"
},
"event_name": {
"type": [
"string",
"null"
]
},
"exclusions": {
"type": "array",
"items": {
"type": "object",
"required": [
"giver",
"cannot_draw"
],
"properties": {
"giver": {
"type": "string"
},
"cannot_draw": {
"type": "string"
}
},
"additionalProperties": false
}
},
"households": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"participants": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"link",
"has_wish_list"
],
"properties": {
"link": {
"type": "string"
},
"name": {
"type": "string"
},
"has_wish_list": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"exchange_date": {
"type": [
"string",
"null"
]
},
"message_template": {
"type": "string"
},
"valid_arrangements": {
"type": "object",
"required": [
"exact",
"count",
"label"
],
"properties": {
"count": {
"type": [
"number",
"null"
]
},
"exact": {
"type": "boolean"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"exchange_date_label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Plan Secret Santa draw",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}plan_white_elephant — Plan White Elephant game
Use this when the user wants to run a White Elephant, Yankee Swap, or Dirty Santa gift game: shuffles a fair random turn order for 3 to 60 players and writes the rules (steal limit per gift, optional cap on steals per turn, no immediate steal-backs, player 1's final swap), with a printable PDF (Letter or A4) that includes a gift tracker and a printable web page. Does not run the game live or track steals. Do not use for Secret Santa name draws (use plan_gift_exchange).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"participants"
],
"properties": {
"paper": {
"type": "string",
"maxLength": 10,
"description": "PDF paper size: letter (default) or a4, e.g. a4."
},
"budget": {
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "number"
}
],
"description": "Gift budget, e.g. $25."
},
"event_name": {
"type": "string",
"maxLength": 120,
"description": "Name printed on the rules sheet, e.g. Team White Elephant 2026."
},
"party_date": {
"type": "string",
"maxLength": 40,
"description": "Party date as YYYY-MM-DD, e.g. 2026-12-12."
},
"steal_limit": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "How many times one gift can be stolen before it is frozen, e.g. 3 (default). 0 turns stealing off."
},
"participants": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 200,
"minItems": 1,
"description": "Everyone playing (3 to 60 people), e.g. [\"Ana\",\"Bo\",\"Cy\",\"Dee\",\"Eli\",\"Fay\",\"Gus\",\"Hal\"]. Names must be unique."
},
"max_steals_per_turn": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Optional cap on steals in one turn's chain, e.g. 2. Omit for no cap."
},
"first_player_final_swap": {
"type": "boolean",
"description": "true (default) = player 1 gets a final turn to swap with any unfrozen gift, since they never had a chance to steal."
},
"no_immediate_steal_back": {
"type": "boolean",
"description": "true (default) = you cannot steal back the gift that was just taken from you."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"mode",
"event_name",
"turn_order",
"rules",
"steal_limit",
"max_steals_per_turn",
"first_player_final_swap",
"no_immediate_steal_back",
"budget",
"party_date",
"party_date_label",
"warnings",
"downloads"
],
"properties": {
"mode": {
"type": "string"
},
"rules": {
"type": "array",
"items": {
"type": "string"
}
},
"budget": {
"type": [
"string",
"null"
]
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"pdf",
"page"
],
"properties": {
"pdf": {
"type": "string"
},
"page": {
"type": "string"
}
},
"additionalProperties": false
},
"event_name": {
"type": [
"string",
"null"
]
},
"party_date": {
"type": [
"string",
"null"
]
},
"turn_order": {
"type": "array",
"items": {
"type": "string"
}
},
"steal_limit": {
"type": "number"
},
"party_date_label": {
"type": [
"string",
"null"
]
},
"max_steals_per_turn": {
"type": [
"number",
"null"
]
},
"first_player_final_swap": {
"type": "boolean"
},
"no_immediate_steal_back": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"title": "Plan White Elephant game",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
gift-exchange-widget — DrawKind Secret Santa view
Interactive view for DrawKind Secret Santa.
ui://widget/gift-exchange-v2-1.0.0-1f64a46849ece9d3faf016c7874d27f074b6a60500784432f50ccb487673a47c.htmlgift-exchange-widget-legacy — DrawKind Secret Santa view (previous versions)
ui://widget/gift-exchange-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 629 ms
- 95th percentile latency
- 629 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 629 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http drawkind-secret-santa-mcp https://gift-exchange.zovo.one/mcpCodex
codex mcp add drawkind-secret-santa-mcp --url https://gift-exchange.zovo.one/mcpCursor
{
"mcpServers": {
"drawkind-secret-santa-mcp": {
"url": "https://gift-exchange.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"drawkind-secret-santa-mcp": {
"type": "streamableHttp",
"url": "https://gift-exchange.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"drawkind-secret-santa-mcp": {
"type": "http",
"url": "https://gift-exchange.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http drawkind-secret-santa-mcp https://gift-exchange.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"drawkind-secret-santa-mcp": {
"url": "https://gift-exchange.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"drawkind-secret-santa-mcp": {
"serverUrl": "https://gift-exchange.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like DrawKind Secret Santa MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.