{"openapi":"3.1.0","info":{"title":"Deckhand API","version":"0.1.0","description":"A fully local, hand-curated reference for 20 classic trick-taking and rummy-family card games played with a standard 52-card deck or a historical variant of it, each with an original how-to-play summary, a scoring explanation, deal/deck math by player count, and a shared card-game glossary. Not poker or casino games.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://deckhand.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/deckhand/docs"},"termsOfService":"https://connectorbay.com/deckhand/terms"},"servers":[{"url":"https://deckhand.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/deckhand/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/game_rules":{"post":{"operationId":"game_rules","summary":"Full detail for one card game: type, deck used, player range, an original step-by-step","description":"Full detail for one card game: type, deck used, player range, an original step-by-step\n    how-to-play summary, a scoring explanation, and a qualitative origin note. Use for \"how do you\n    play Euchre\", \"what are the rules of Canasta\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["Euchre","Gin Rummy","500"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"game_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/scoring_summary":{"post":{"operationId":"scoring_summary","summary":"Just the scoring explanation for one game — how points, tricks or melds translate into a","description":"Just the scoring explanation for one game — how points, tricks or melds translate into a\n    score. Use for \"how is Cribbage scored\", \"how does scoring work in Hearts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game's name or alias.","examples":["Bridge","Cribbage","Hearts"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"scoring_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/game_search":{"post":{"operationId":"game_search","summary":"Keyword search across every game's name, aliases, type, summary and objective. Use for","description":"Keyword search across every game's name, aliases, type, summary and objective. Use for\n    \"games with melding\", \"trick games for a big group\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for.","minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"game_searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/games_by_type":{"post":{"operationId":"games_by_type","summary":"Every game of one kind — Trick-Taking, Point-Trick, Rummy or Other. Use category_list to see","description":"Every game of one kind — Trick-Taking, Point-Trick, Rummy or Other. Use category_list to see\n    all four kinds with counts. Use for \"list all rummy games\", \"what point-trick games do you have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"game_type":{"description":"A game category.","examples":["Trick-Taking","Rummy","Point-Trick","Other"],"title":"Game Type","type":"string"}},"required":["game_type"],"title":"games_by_typeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/games_by_player_count":{"post":{"operationId":"games_by_player_count","summary":"Every game playable with an exact number of players, based on each game's supported player","description":"Every game playable with an exact number of players, based on each game's supported player\n    range. Use for \"what card games work for 5 people\", \"two-player card games\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"description":"Exact number of players at the table.","examples":[2,4,6],"maximum":12,"minimum":1,"title":"Count","type":"integer"}},"required":["count"],"title":"games_by_player_countArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/deal_calculator":{"post":{"operationId":"deal_calculator","summary":"How many cards are dealt to each player, the deck size used, and what happens to any leftover","description":"How many cards are dealt to each player, the deck size used, and what happens to any leftover\n    cards (a widow, kitty, skat, crib share or draw stock) for one game at one exact player count.\n    Use for \"how many cards do you deal in Euchre for 4 players\", \"what's the widow size in 500\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"game":{"description":"A game's name or alias.","examples":["Skat","Rummy 500"],"minLength":1,"title":"Game","type":"string"},"player_count":{"description":"Number of players at the table.","examples":[3,4],"maximum":12,"minimum":1,"title":"Player Count","type":"integer"}},"required":["game","player_count"],"title":"deal_calculatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/find_game_for_group":{"post":{"operationId":"find_game_for_group","summary":"Suggests up to 6 games for a group, given how many players there are and/or how much time is","description":"Suggests up to 6 games for a group, given how many players there are and/or how much time is\n    available. At least one of player_count or duration_minutes should be given. Use for \"we have 4\n    people and 45 minutes, what should we play\", \"card game for 6 players\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"player_count":{"anyOf":[{"maximum":12,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of players in the group.","examples":[4],"title":"Player Count"},"duration_minutes":{"anyOf":[{"maximum":240,"minimum":5,"type":"integer"},{"type":"null"}],"default":null,"description":"Time available to play, in minutes.","examples":[45],"title":"Duration Minutes"}},"title":"find_game_for_groupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/category_list":{"post":{"operationId":"category_list","summary":"Every game category (Trick-Taking, Point-Trick, Rummy, Other) with how many games are in it.","description":"Every game category (Trick-Taking, Point-Trick, Rummy, Other) with how many games are in it.\n    Use for \"what kinds of card games do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"category_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of common card-game terms — trick, trump, meld, widow, deadwood, going alone,","description":"Definitions of common card-game terms — trick, trump, meld, widow, deadwood, going alone,\n    shoot the moon, undercut, pegging, misère, and more. Use for \"what's a meld\", \"what does\n    'shoot the moon' mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"term_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}