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