{"count":89,"tools":[{"name":"chess_generate_puzzle","description":"Get a random chess puzzle. Filter by variant or difficulty. Variant puzzles have no themes and max rating 1400 — theme and hard difficulty filters only apply to standard puzzles.","inputSchema":{"type":"object","properties":{"variant":{"type":"string","description":"Chess variant slug, camelCase or kebab-case (e.g. antichess, almost-chess, atomic, chess960, standard). Returns only puzzles for this variant."},"difficulty":{"type":"string","enum":["easy","medium","hard"],"description":"Puzzle difficulty (variant puzzles max at 1400, so hard returns nothing for variants)"},"theme":{"type":"string","description":"Puzzle theme (fork, pin, skewer, mateIn2, etc). Only standard puzzles carry themes."}}},"namespace":"chess"},{"name":"chess_list_puzzle_types","description":"List available puzzle variants, themes, and per-variant counts from the puzzle pool","inputSchema":{"type":"object","properties":{}},"namespace":"chess"},{"name":"chess_list_variants","description":"[DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0.","inputSchema":{"type":"object","properties":{"group":{"type":"string"}}},"namespace":"chess"},{"name":"chess_get_legal_moves","description":"[DEPRECATED — use play_create_game + play_get_moves] Get legal moves for a chess position. Removal: v1.0.0.","inputSchema":{"type":"object","properties":{"variant":{"type":"string"}}},"namespace":"chess"},{"name":"chess_analyze_position","description":"[DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0.","inputSchema":{"type":"object","properties":{"variant":{"type":"string"},"depth":{"type":"number"}}},"namespace":"chess"},{"name":"chess_make_move","description":"[DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0.","inputSchema":{"type":"object","required":["move"],"properties":{"move":{"type":"object"},"variant":{"type":"string"}}},"namespace":"chess"},{"name":"chess_validate_move","description":"[DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0.","inputSchema":{"type":"object","required":["move"],"properties":{"move":{"type":"object"},"variant":{"type":"string"}}},"namespace":"chess"},{"name":"chess_get_status","description":"[DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0.","inputSchema":{"type":"object","properties":{"variant":{"type":"string"}}},"namespace":"chess"},{"name":"chess_render_svg","description":"[DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0.","inputSchema":{"type":"object","properties":{"variant":{"type":"string"},"fen":{"type":"string","description":"FEN position string"},"highlights":{"type":"array","items":{"type":"string"},"description":"Squares to highlight (e.g. [\"e2\",\"e4\"])"}}},"namespace":"chess"},{"name":"chess_make_moves","description":"[DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0.","inputSchema":{"type":"object","required":["moves"],"properties":{"moves":{"type":"array","items":{"type":"object"}},"variant":{"type":"string"}}},"namespace":"chess"},{"name":"chess_get_opening_book","description":"[REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement.","inputSchema":{"type":"object","properties":{"variant":{"type":"string"}}},"namespace":"chess"},{"name":"hex_list_games","description":"List all available hex map game types with configuration options","inputSchema":{"type":"object","properties":{}},"namespace":"hex"},{"name":"hex_generate_map","description":"Generate a hex map for a specific game and player count","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game type (nukes, colony, catan, age-of-steam, eclipse, twilight-imperium)"},"players":{"type":"number","description":"Number of players (default: 2)"},"size":{"type":"number","description":"Map size (default: game default)"},"seed":{"type":"string","description":"Random seed for reproducibility"}}},"namespace":"hex"},{"name":"hex_export_svg","description":"Generate a hex map and export as SVG","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game type"},"players":{"type":"number","description":"Number of players"},"size":{"type":"number","description":"Map size"},"seed":{"type":"string","description":"Random seed"},"style":{"type":"string","description":"Visual style"},"hexSize":{"type":"number","description":"Hex size in pixels (default: 30)"}}},"namespace":"hex"},{"name":"hex_get_info","description":"Get info about a specific hex coordinate (terrain, neighbours, distance)","inputSchema":{"type":"object","required":["q","r"],"properties":{"q":{"type":"number","description":"Hex Q coordinate (column)"},"r":{"type":"number","description":"Hex R coordinate (row)"},"game":{"type":"string","description":"Game context for terrain lookup"},"seed":{"type":"string","description":"Map seed (to look up terrain from a generated map)"}}},"namespace":"hex"},{"name":"hex_compute_fov","description":"Compute field of view from a hex position","inputSchema":{"type":"object","required":["q","r","range"],"properties":{"q":{"type":"number","description":"Origin Q coordinate"},"r":{"type":"number","description":"Origin R coordinate"},"range":{"type":"number","description":"Vision range in hexes"},"game":{"type":"string","description":"Game context for obstacle lookup"},"seed":{"type":"string","description":"Map seed"}}},"namespace":"hex"},{"name":"hex_pathfind","description":"Find shortest path between two hex coordinates","inputSchema":{"type":"object","required":["startQ","startR","endQ","endR"],"properties":{"startQ":{"type":"number","description":"Start Q"},"startR":{"type":"number","description":"Start R"},"endQ":{"type":"number","description":"End Q"},"endR":{"type":"number","description":"End R"},"game":{"type":"string","description":"Game context for movement costs"},"seed":{"type":"string","description":"Map seed"}}},"namespace":"hex"},{"name":"play_list_families","description":"List all playable game families supported by the engine (chess, draughts, go, reversi, shogi, xiangqi)","inputSchema":{"type":"object","properties":{}},"namespace":"play"},{"name":"play_list_variants","description":"List available variants for a game family. Each variant can be passed to play_create_game. Variants with flags (e.g. +random) can be requested as \"slug+flag\".","inputSchema":{"type":"object","required":["family"],"properties":{"family":{"type":"string","description":"Game family (chess, draughts, go, reversi, shogi, xiangqi)"}}},"namespace":"play"},{"name":"play_get_definition","description":"Get the full engine definition (topology, render config, pieces, setup FEN) for a game variant. Returns the resolved frontmatter used to render and play the game.","inputSchema":{"type":"object","required":["family"],"properties":{"family":{"type":"string","description":"Game family (chess, draughts, go, reversi, shogi, xiangqi)"},"variant":{"type":"string","description":"Variant slug (default: standard)"}}},"namespace":"play"},{"name":"play_create_game","description":"Create a new game instance for a given family. Returns initial state to pass to subsequent calls. Variant can include flags like \"grand+random\" or \"standard+drops\".","inputSchema":{"type":"object","required":["family"],"properties":{"family":{"type":"string","description":"Game family name (chess, draughts, go, reversi, shogi, xiangqi)"},"variant":{"type":"string","description":"Variant slug, optionally with flags (e.g. \"grand\", \"grand+random\", \"standard+drops\")"},"rngSeed":{"type":"number","description":"Optional RNG seed for deterministic games"}}},"namespace":"play"},{"name":"play_get_moves","description":"Get all legal moves for the current position. Requires state from play_create_game or play_apply_move.","inputSchema":{"type":"object","required":["state"],"properties":{"state":{"type":"object","description":"Game state object returned by play_create_game or play_apply_move"}}},"namespace":"play"},{"name":"play_apply_move","description":"Apply a move to the game and return the new state. Pass the move object exactly as returned by play_get_moves (format varies by family: chess uses {from,to}, go uses {coord} or {action:\"pass\"}).","inputSchema":{"type":"object","required":["state","move"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or a previous play_apply_move"},"move":{"type":"object","description":"Move object from play_get_moves (e.g. {from:\"e2\",to:\"e4\"} for chess, {coord:40} for go, {action:\"pass\"})"}}},"namespace":"play"},{"name":"play_check_status","description":"Check the current game status: whose turn it is, whether the game is over, and who won.","inputSchema":{"type":"object","required":["state"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or play_apply_move"}}},"namespace":"play"},{"name":"play_suggest_move","description":"Use AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 6 playable families.","inputSchema":{"type":"object","required":["state"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or play_apply_move"},"difficulty":{"type":"string","enum":["beginner","easy","medium","hard","expert"],"description":"AI difficulty level (default: medium)"}}},"namespace":"play"},{"name":"play_render_board","description":"Render the current board position as SVG for any playable family (chess, draughts, go, reversi, shogi, xiangqi).","inputSchema":{"type":"object","required":["state"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or play_apply_move"},"highlights":{"type":"array","items":{"type":"object","properties":{"key":{"type":"integer"},"color":{"type":"string"}}},"description":"Optional cells to highlight (e.g. [{key: 52, color: \"#ff0\"}])"},"size":{"type":"integer","description":"Board width in pixels for PNG output (default: 480, max: 2048)"}}},"namespace":"play"},{"name":"play_export_fen","description":"Export the current board position as a FEN-style notation string. Works for all 6 families (chess, draughts, go, reversi, shogi, xiangqi).","inputSchema":{"type":"object","required":["state"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or play_apply_move"}}},"namespace":"play"},{"name":"play_load_fen","description":"Create a game state from a FEN-style position string. Works for all 6 families.","inputSchema":{"type":"object","required":["family","fen"],"properties":{"family":{"type":"string","description":"Game family (chess, draughts, go, reversi, shogi, xiangqi)"},"fen":{"type":"string","description":"Position string in FEN-style notation for the family"},"variant":{"type":"string","description":"Optional variant slug"}}},"namespace":"play"},{"name":"play_validate_move","description":"Check whether a move is legal in the current position without applying it. Pass the move object in the same format as play_get_moves returns.","inputSchema":{"type":"object","required":["state","move"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or play_apply_move"},"move":{"type":"object","description":"Move object to validate (same format as play_get_moves output)"}}},"namespace":"play"},{"name":"play_make_moves","description":"Apply a sequence of moves to a game and return the final state. Stops at the first illegal move. Move objects must match play_get_moves format.","inputSchema":{"type":"object","required":["state","moves"],"properties":{"state":{"type":"object","description":"Game state object from play_create_game or play_apply_move"},"moves":{"type":"array","items":{"type":"object"},"description":"Array of move objects in the format returned by play_get_moves"}}},"namespace":"play"},{"name":"rules_list_games","description":"List all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics.","inputSchema":{"type":"object","properties":{"category":{"type":"string","description":"Filter by type (standalone, hub, classic, rpg, component, platform, mod, game)"},"complexity":{"type":"string","enum":["simple","moderate","complex"],"description":"Filter by complexity level"},"mechanic":{"type":"string","description":"Filter by mechanic (e.g. dice, capture, hex, oracle, narrative)"},"status":{"type":"string","enum":["live","alpha","playtest"],"description":"Filter by status (default: all)"}}},"namespace":"rules"},{"name":"rules_get_game","description":"Get full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead.","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game slug (e.g. chess, dnd-5e, catan)"}}},"namespace":"rules"},{"name":"rules_get_game_meta","description":"Get structured metadata for a game: players, duration, complexity, mechanics, how_to_play, variant list, page list, related games. Lightweight alternative to fetching the full rulebook.","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game slug (e.g. chess, backgammon, cairn)"}}},"namespace":"rules"},{"name":"rules_get_page","description":"Get a specific page/section from a game rulebook (e.g. character creation, combat rules, marketplace). Use rules_get_game_meta to see available pages.","inputSchema":{"type":"object","required":["game","page"],"properties":{"game":{"type":"string","description":"Game slug (e.g. cairn, dnd-5e)"},"section":{"type":"string","description":"Section name (e.g. rules, classes, spells). Default: rules"},"page":{"type":"string","description":"Page slug (e.g. character-creation, combat-and-difficulty)"}}},"namespace":"rules"},{"name":"rules_get_variant_list","description":"List all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook.","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game slug (e.g. chess, backgammon, draughts)"},"playable":{"type":"boolean","description":"Filter to only engine-playable variants"},"topology":{"type":"string","description":"Filter by board topology (grid, hex, track, graph, tableau)"}}},"namespace":"rules"},{"name":"rules_get_diagram","description":"Get board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata.","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game family slug (e.g. chess, go, agon)"},"variant":{"type":"string","description":"Variant slug (default: standard)"}}},"namespace":"rules"},{"name":"rules_get_variant","description":"Get rules for a specific game variant","inputSchema":{"type":"object","required":["game","variant"],"properties":{"game":{"type":"string","description":"Game slug"},"variant":{"type":"string","description":"Variant slug"}}},"namespace":"rules"},{"name":"rules_search","description":"Full-text search across all published rulebooks. Returns section-typed results with deep-link anchors.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search query"},"game":{"type":"string","description":"Limit to specific game slug"},"sectionType":{"type":"string","description":"Filter by section type (general, board, pieces, setup, movement, capture, winning, special, variants)"},"limit":{"type":"number","description":"Max results (default 10)"}}},"namespace":"rules"},{"name":"rules_random","description":"Get a random game suggestion from the library","inputSchema":{"type":"object","properties":{"players":{"type":"number","description":"Number of players available"},"maxDuration":{"type":"number","description":"Maximum game duration in minutes"}}},"namespace":"rules"},{"name":"board_gallery_search","description":"Search the board gallery (333 rendered board layouts across 33 game families)","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search term (e.g. \"8x8\", \"hex\", \"shogi\")"},"limit":{"type":"number","description":"Max results (default 10)"}}},"namespace":"gallery"},{"name":"board_gallery_get","description":"Get details of a specific board layout by ID","inputSchema":{"type":"object","required":["board"],"properties":{"board":{"type":"string","description":"Board ID or name"}}},"namespace":"gallery"},{"name":"tile_gallery_search","description":"Search hex tile sets by name, game, or terrain type","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search term (omit to list all)"}}},"namespace":"gallery"},{"name":"tile_gallery_get","description":"Get details of a specific tile set with all tile types","inputSchema":{"type":"object","required":["set"],"properties":{"set":{"type":"string","description":"Tile set ID or name"}}},"namespace":"gallery"},{"name":"tile_gallery_stats","description":"Get statistics about available tile sets","inputSchema":{"type":"object","properties":{}},"namespace":"gallery"},{"name":"board_gallery_stats","description":"Get statistics about the board gallery (total boards, families, topologies)","inputSchema":{"type":"object","properties":{}},"namespace":"gallery"},{"name":"piece_gallery_search","description":"Search the piece set gallery by name, style, or game type","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search term (e.g. \"staunton\", \"pixel\", \"shogi\")"},"family":{"type":"string","description":"Filter by game family (chess, shogi, xiangqi, draughts, go, etc)"},"limit":{"type":"number","description":"Max results (default 10)"}}},"namespace":"gallery"},{"name":"piece_gallery_get_set","description":"Get full details and piece list for a specific set","inputSchema":{"type":"object","required":["set"],"properties":{"set":{"type":"string","description":"Set name or ID"}}},"namespace":"gallery"},{"name":"piece_gallery_stats","description":"Get statistics about the piece gallery (total sets, styles, authors, game families)","inputSchema":{"type":"object","properties":{}},"namespace":"gallery"},{"name":"oracle_list_games","description":"List all supported RPG systems with oracle tables and entity data availability","inputSchema":{"type":"object","properties":{}},"namespace":"oracles"},{"name":"rpg_chargen","description":"Generate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)","inputSchema":{"type":"object","required":["system"],"properties":{"system":{"type":"string","description":"RPG system (dnd-5e, pathfinder-1e, ironsworn, starforged, cairn, knave, maze-rats, dungeon-world)"},"level":{"type":"number","description":"Character level (default: 1)"},"class":{"type":"string","description":"Class preference (omit for random)"}}},"namespace":"oracles"},{"name":"oracle_roll","description":"Roll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)","inputSchema":{"type":"object","required":["system"],"properties":{"system":{"type":"string","description":"RPG system slug (ironsworn, starforged, maze-rats, cairn, knave, fate-core)"},"table":{"type":"string","description":"Specific table name (omit for random)"}}},"namespace":"oracles"},{"name":"oracle_list_tables","description":"List available oracle tables for a system","inputSchema":{"type":"object","required":["system"],"properties":{"system":{"type":"string","description":"RPG system slug"}}},"namespace":"oracles"},{"name":"oracle_ask","description":"Ask the oracle a yes/no question with likelihood modifier","inputSchema":{"type":"object","required":["question"],"properties":{"question":{"type":"string","description":"Yes/no question"},"likelihood":{"type":"string","enum":["certain","likely","even","unlikely","impossible"],"description":"How likely is yes? (default: even)"}}},"namespace":"oracles"},{"name":"oracle_scene","description":"Generate a scene using oracle tables. With a recipe, rolls each table in the recipe, resolves cross-references, and composes a narrative sentence. Without, picks random tables.","inputSchema":{"type":"object","properties":{"system":{"type":"string","description":"RPG system slug (default: ironsworn)"},"recipe":{"type":"string","description":"Recipe ID (from oracle_list_recipes) — rolls each table in the recipe"},"region":{"type":"string","enum":["terminus","outlands","expanse"],"description":"Region for Starforged region-aware recipes"},"type":{"type":"string","enum":["location","npc","event","combat"],"description":"Scene type for random mode (default: event)"}}},"namespace":"oracles"},{"name":"rpg_search_entities","description":"Search RPG entities (spells, monsters, classes, items) across all systems","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Search term"},"system":{"type":"string","description":"Limit to system (dnd-5e, pathfinder-1e, etc)"},"game":{"type":"string","description":"Alias for system"},"category":{"type":"string","description":"Entity category (spell, monster, class, item)"},"limit":{"type":"number","description":"Max results (default 10)"}}},"namespace":"oracles"},{"name":"rpg_get_entity","description":"Get full details of a specific RPG entity by name","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Entity name"},"system":{"type":"string","description":"System slug"},"game":{"type":"string","description":"Alias for system"},"category":{"type":"string","description":"Category filter (spells, monsters, classes, etc)"}}},"namespace":"oracles"},{"name":"rpg_random_encounter","description":"Generate a random encounter for a system and difficulty level","inputSchema":{"type":"object","properties":{"system":{"type":"string","description":"System slug (default: dnd-5e)"},"difficulty":{"type":"string","enum":["easy","medium","hard","deadly"],"description":"Encounter difficulty"},"type":{"type":"string","description":"Monster type filter (beast, undead, fiend, dragon, etc)"}}},"namespace":"oracles"},{"name":"rpg_browse_category","description":"Browse entities by category with pagination","inputSchema":{"type":"object","required":["system","category"],"properties":{"system":{"type":"string","description":"System slug"},"game":{"type":"string","description":"Alias for system"},"category":{"type":"string","description":"Category (spell, monster, class, item, feat, etc)"},"page":{"type":"number","description":"Page number (default 1)"},"pageSize":{"type":"number","description":"Items per page (default 20)"}}},"namespace":"oracles"},{"name":"rpg_loot","description":"Generate random loot/treasure for a system and tier","inputSchema":{"type":"object","properties":{"system":{"type":"string","description":"System slug (default: dnd-5e)"},"tier":{"type":"string","enum":["minor","major","legendary"],"description":"Loot tier (default: minor)"},"count":{"type":"number","description":"Number of items (default 3)"}}},"namespace":"oracles"},{"name":"oracle_list_recipes","description":"List all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts","inputSchema":{"type":"object","properties":{"game":{"type":"string","description":"Filter by game system (omit for all)"}}},"namespace":"oracles"},{"name":"oracle_interpret","description":"Resolve oracle cross-references. Given a result like \"Action + Theme\", follows references and returns expanded results","inputSchema":{"type":"object","required":["result"],"properties":{"result":{"type":"string","description":"Oracle result text to interpret"},"source_table":{"type":"string","description":"Table ID the result came from"},"game":{"type":"string","description":"Game system (default: starforged)"}}},"namespace":"oracles"},{"name":"oracle_table_view","description":"View the complete contents of an oracle table — all entries with roll ranges","inputSchema":{"type":"object","required":["table"],"properties":{"table":{"type":"string","description":"Table ID to view"},"game":{"type":"string","description":"Game system (default: starforged)"}}},"namespace":"oracles"},{"name":"oracle_encounter","description":"Generate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)","inputSchema":{"type":"object","properties":{"system":{"type":"string","enum":["dnd-5e","pathfinder-1e"],"description":"Game system (default: dnd-5e)"},"party_level":{"type":"number","description":"Average party level 1-20 (default: 5)"},"party_size":{"type":"number","description":"Number of players 1-10 (default: 4)"},"difficulty":{"type":"string","enum":["easy","medium","hard","deadly"],"description":"Encounter difficulty (default: medium)"},"monster_type":{"type":"string","description":"Filter by type (undead, dragon, beast, etc)"},"terrain":{"type":"string","description":"Terrain type (omit for random)"}}},"namespace":"oracles"},{"name":"rpg_list_categories","description":"List entity categories for an RPG system (spells, monsters, classes, equipment, etc)","inputSchema":{"type":"object","properties":{"game":{"type":"string","description":"Game system slug (omit for all systems)"},"system":{"type":"string","description":"Alias for game"}}},"namespace":"oracles"},{"name":"rpg_random","description":"Get random entities from an RPG system for inspiration or encounter prep","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game system slug"},"system":{"type":"string","description":"Alias for game"},"category":{"type":"string","description":"Category to draw from (omit for any)"},"count":{"type":"number","description":"Number of random picks 1-10 (default: 1)"}}},"namespace":"oracles"},{"name":"ti4_random_factions","description":"Generate random faction assignments for Twilight Imperium 4th Edition","inputSchema":{"type":"object","required":["players"],"properties":{"players":{"type":"number","description":"Number of players (3-8)"},"expansions":{"type":"array","items":{"type":"string"},"description":"Expansion filter (e.g. [\"base\",\"pok\"]). Default: all"}}},"namespace":"games"},{"name":"ti4_draft_factions","description":"Milty-style TI4 draft with pick pools per player","inputSchema":{"type":"object","properties":{"players":{"type":"number","description":"Number of players (3-8, default: 6)"},"choices":{"type":"number","description":"Factions per player to choose from (default: 3)"},"expansions":{"type":"array","items":{"type":"string"},"description":"Expansion filter (e.g. [\"base\",\"pok\"]). Default: all"}}},"namespace":"games"},{"name":"ti4_list_factions","description":"List all TI4 factions with colors, flags, and expansion info","inputSchema":{"type":"object","properties":{"expansions":{"type":"array","items":{"type":"string"},"description":"Filter by expansion (e.g. [\"base\",\"pok\"]). Default: all"}}},"namespace":"games"},{"name":"ti4_draw_objectives","description":"Draw random public objectives for TI4","inputSchema":{"type":"object","properties":{"stage":{"type":"number","enum":[1,2],"description":"Stage 1 or 2 (default: both)"},"count":{"type":"number","description":"Number to draw (default: 5)"},"expansions":{"type":"array","items":{"type":"string"},"description":"Expansion filter"}}},"namespace":"games"},{"name":"ti4_draw_agendas","description":"Draw random agenda cards for TI4 political phase","inputSchema":{"type":"object","properties":{"count":{"type":"number","description":"Number to draw (default: 2)"},"type":{"type":"string","enum":["law","directive"],"description":"Filter by type"},"expansions":{"type":"array","items":{"type":"string"},"description":"Expansion filter"}}},"namespace":"games"},{"name":"nukes_setup_generator","description":"Generate random territory/resource setup for a Nukes game","inputSchema":{"type":"object","properties":{"players":{"type":"number","description":"Number of players (2-6, default: 2)"}}},"namespace":"games"},{"name":"game_nukes_combat","description":"Resolve a Nukes combat encounter between units","inputSchema":{"type":"object","required":["attacker","defender"],"properties":{"attacker":{"type":"string","description":"Attacking unit type"},"defender":{"type":"string","description":"Defending unit type"},"terrain":{"type":"string","description":"Terrain type (plains, forest, mountain, urban)"}}},"namespace":"games"},{"name":"colony_dice_odds","description":"Calculate settlement dice probability for Colony/Catan-style resource numbers","inputSchema":{"type":"object","required":["numbers"],"properties":{"numbers":{"type":"string","description":"Settlement numbers, comma-separated (e.g. \"5,6,8,9\")"}}},"namespace":"games"},{"name":"game_deck_create","description":"Create, shuffle, and optionally draw/deal from a card deck","inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["standard-52","bavarian-32","hanafuda-48","mahjong-136","dominoes-28","standard-dice"],"description":"Deck type (default: standard-52)"},"draw":{"type":"number","description":"Number of cards to draw"},"hands":{"type":"number","description":"Deal into N hands"},"per_hand":{"type":"number","description":"Cards per hand (default: 5)"}}},"namespace":"games"},{"name":"game_deck_list_types","description":"List all available deck types with metadata","inputSchema":{"type":"object","properties":{}},"namespace":"games"},{"name":"game_deck_deal","description":"Shuffle and deal a custom deck of arbitrary named cards","inputSchema":{"type":"object","required":["cards"],"properties":{"cards":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"number","default":1}},"required":["name"]},"description":"Cards in the deck (name + optional quantity)"},"hands":{"type":"number","description":"Deal into N hands (default: 1 = draw pile only)"},"per_hand":{"type":"number","description":"Cards per hand (default: 5)"},"draw":{"type":"number","description":"Draw N cards from the top instead of dealing hands"}}},"namespace":"games"},{"name":"game_score_tracker","description":"Track scores for players in any game","inputSchema":{"type":"object","required":["players"],"properties":{"players":{"type":"array","items":{"type":"string"},"description":"Player names"},"scores":{"type":"array","items":{"type":"number"},"description":"Scores (default: all 0)"},"game":{"type":"string","description":"Game name"}}},"namespace":"games"},{"name":"talisman_draw_characters","description":"Draw random characters from the Talisman 4e (revised) base set for a character lottery","inputSchema":{"type":"object","properties":{"count":{"type":"number","description":"Number of characters to draw (2-6, default: 4)"}}},"namespace":"games"},{"name":"talisman_draw_encounter","description":"Draw a random encounter for a Talisman ring (outer, middle, inner, crown)","inputSchema":{"type":"object","properties":{"ring":{"type":"string","enum":["outer","middle","inner","crown"],"description":"Ring to draw from (default: outer)"}}},"namespace":"games"},{"name":"jam_status","description":"Get the current Mod Jam status (active jam, deadline, submissions)","inputSchema":{"type":"object","properties":{}},"namespace":"games"},{"name":"jam_timer","description":"Get time remaining in the current Mod Jam","inputSchema":{"type":"object","properties":{}},"namespace":"games"},{"name":"jam_vote","description":"Get voting status for the current Mod Jam","inputSchema":{"type":"object","properties":{}},"namespace":"games"},{"name":"dice_roll","description":"Roll dice using standard notation (e.g. 2d6+3, 4d8, d20). Supports comma-separated pools and keep-high/low (4d6kh3).","inputSchema":{"type":"object","properties":{"notation":{"type":"string","description":"Dice notation (e.g. 2d6+3, 4d6kh3, 3d8,1d12+2)"},"expression":{"type":"string","description":"Alias for notation"},"count":{"type":"number","description":"Number of times to roll (default 1)"}}},"namespace":"utilities"},{"name":"coin_flip","description":"Flip one or more coins, or pick from a list of choices","inputSchema":{"type":"object","properties":{"count":{"type":"number","description":"Number of coins (default 1)"},"choices":{"type":"string","description":"Comma-separated options to pick from (overrides coin flip)"}}},"namespace":"utilities"},{"name":"team_split","description":"Randomly divide players into teams","inputSchema":{"type":"object","required":["players"],"properties":{"players":{"type":"array","items":{"type":"string"},"description":"Player names"},"members":{"type":"string","description":"Comma-separated names (alternative to array)"},"count":{"type":"number","description":"Number of teams (default 2)"},"teams":{"type":"number","description":"Alias for count"}}},"namespace":"utilities"},{"name":"random_player_order","description":"Randomise turn order for a list of players","inputSchema":{"type":"object","required":["players"],"properties":{"players":{"type":"array","items":{"type":"string"},"description":"Player names"}}},"namespace":"utilities"},{"name":"timer_suggest","description":"Suggest time controls for a game based on player count and complexity","inputSchema":{"type":"object","required":["game"],"properties":{"game":{"type":"string","description":"Game name"},"players":{"type":"number","description":"Number of players"}}},"namespace":"utilities"},{"name":"game_jam_theme","description":"Generate a random game jam theme combining mechanics and themes","inputSchema":{"type":"object","properties":{"count":{"type":"number","description":"Number of themes to generate (default 3)"}}},"namespace":"utilities"},{"name":"dice_odds","description":"Calculate probability of meeting a target with a dice expression. Supports keep-high/low (4d6kh3).","inputSchema":{"type":"object","required":["expression","target"],"properties":{"expression":{"type":"string","description":"Dice expression (e.g. 2d6, 4d6kh3)"},"target":{"type":"number","description":"Target number to meet or exceed"},"comparison":{"type":"string","enum":[">=",">","<=","<","="],"description":"Comparison (default >=)"}}},"namespace":"utilities"}]}