DrawKind Secret Santa
Draw names for Secret Santa without sign-ups or email addresses.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"gift-exchange": {
"url": "https://gift-exchange.zovo.one/mcp"
}
}
}원격 엔드포인트
https://gift-exchange.zovo.one/mcpstreamable-http할 수 있는 일
도구 목록
도구 (2)
🟢plan_gift_exchange(participants, households, exclusions, no_two_person_loops, budget, ...)
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",
"properties": {
"participants": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"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."
},
"households": {
"description": "Couples or households whose members must not draw each other (both directions), e.g. [[\"Ana\",\"Bo\"],[\"Cy\",\"Dee\",\"Eli\"]].",
"maxItems": 30,
"type": "array",
"items": {
"maxItems": 60,
"type": "array",
"items": {
"type": "string",
"maxLength": 120,
"description": "A participant's name exactly as listed in participants, e.g. Ana."
}
}
},
"exclusions": {
"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.",
"maxItems": 400,
"type": "array",
"items": {
"type": "object",
"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."
}
},
"required": [
"giver",
"cannot_draw"
]
}
},
"no_two_person_loops": {
"description": "true = never let two people draw each other (no A gives to B while B gives to A). Default false.",
"type": "boolean"
},
"budget": {
"description": "Gift budget as the group says it, e.g. $30, 25 EUR, or £20-£25.",
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "number"
}
]
},
"exchange_date": {
"description": "Gift exchange date as YYYY-MM-DD, e.g. 2026-12-18.",
"type": "string",
"maxLength": 40
},
"event_name": {
"description": "Name of the exchange shown on every link, e.g. Office Holiday Party 2026.",
"type": "string",
"maxLength": 120
},
"wish_lists": {
"description": "Optional wish lists. Each one is shown only to the person who draws that participant.",
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"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."
}
},
"required": [
"name",
"wishes"
]
}
},
"organizer_note": {
"description": "Optional note shown on every reveal page, e.g. Wrap gifts and bring them to the kitchen by 3 pm.",
"type": "string",
"maxLength": 400
},
"language": {
"description": "Language of the reveal pages and share messages: en, es, fr, de, pl, pt, or ja (e.g. pl). Default en.",
"type": "string",
"maxLength": 20
},
"include_organizer_list": {
"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": "boolean"
}
},
"required": [
"participants"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"mode": {
"type": "string"
},
"event_name": {
"type": [
"string",
"null"
]
},
"draw_code": {
"type": "string"
},
"participants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"link": {
"type": "string"
},
"has_wish_list": {
"type": "boolean"
}
},
"required": [
"name",
"link",
"has_wish_list"
],
"additionalProperties": false
}
},
"households": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"exclusions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"giver": {
"type": "string"
},
"cannot_draw": {
"type": "string"
}
},
"required": [
"giver",
"cannot_draw"
],
"additionalProperties": false
}
},
"rules": {
"type": "array",
"items": {
"type": "string"
}
},
"budget": {
"type": [
"string",
"null"
]
},
"exchange_date": {
"type": [
"string",
"null"
]
},
"exchange_date_label": {
"type": [
"string",
"null"
]
},
"language": {
"type": "string"
},
"valid_arrangements": {
"type": "object",
"properties": {
"exact": {
"type": "boolean"
},
"count": {
"type": [
"number",
"null"
]
},
"label": {
"type": "string"
}
},
"required": [
"exact",
"count",
"label"
],
"additionalProperties": false
},
"sampling": {
"type": "string"
},
"message_template": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"organizer_list": {
"type": "string"
}
},
"additionalProperties": false
}
},
"required": [
"mode",
"event_name",
"draw_code",
"participants",
"households",
"exclusions",
"rules",
"budget",
"exchange_date",
"exchange_date_label",
"language",
"valid_arrangements",
"sampling",
"message_template",
"warnings",
"downloads"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢plan_white_elephant(participants, steal_limit, max_steals_per_turn, first_player_final_swap, no_immediate_steal_back, ...)
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",
"properties": {
"participants": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"description": "Everyone playing (3 to 60 people), e.g. [\"Ana\",\"Bo\",\"Cy\",\"Dee\",\"Eli\",\"Fay\",\"Gus\",\"Hal\"]. Names must be unique."
},
"steal_limit": {
"description": "How many times one gift can be stolen before it is frozen, e.g. 3 (default). 0 turns stealing off.",
"type": "integer",
"minimum": 0,
"maximum": 5
},
"max_steals_per_turn": {
"description": "Optional cap on steals in one turn's chain, e.g. 2. Omit for no cap.",
"type": "integer",
"minimum": 1,
"maximum": 10
},
"first_player_final_swap": {
"description": "true (default) = player 1 gets a final turn to swap with any unfrozen gift, since they never had a chance to steal.",
"type": "boolean"
},
"no_immediate_steal_back": {
"description": "true (default) = you cannot steal back the gift that was just taken from you.",
"type": "boolean"
},
"budget": {
"description": "Gift budget, e.g. $25.",
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "number"
}
]
},
"party_date": {
"description": "Party date as YYYY-MM-DD, e.g. 2026-12-12.",
"type": "string",
"maxLength": 40
},
"event_name": {
"description": "Name printed on the rules sheet, e.g. Team White Elephant 2026.",
"type": "string",
"maxLength": 120
},
"paper": {
"description": "PDF paper size: letter (default) or a4, e.g. a4.",
"type": "string",
"maxLength": 10
}
},
"required": [
"participants"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"mode": {
"type": "string"
},
"event_name": {
"type": [
"string",
"null"
]
},
"turn_order": {
"type": "array",
"items": {
"type": "string"
}
},
"rules": {
"type": "array",
"items": {
"type": "string"
}
},
"steal_limit": {
"type": "number"
},
"max_steals_per_turn": {
"type": [
"number",
"null"
]
},
"first_player_final_swap": {
"type": "boolean"
},
"no_immediate_steal_back": {
"type": "boolean"
},
"budget": {
"type": [
"string",
"null"
]
},
"party_date": {
"type": [
"string",
"null"
]
},
"party_date_label": {
"type": [
"string",
"null"
]
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"pdf": {
"type": "string"
},
"page": {
"type": "string"
}
},
"required": [
"pdf",
"page"
],
"additionalProperties": false
}
},
"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"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}커뮤니티
증거