Moddable Games Tools
15 tools for chess variant analysis, hex map generation, and board game utilities
| Endpoint | https://tools.moddable.games/mcp (streamable-http) |
|---|---|
| Registry version | 1.1.0 |
| Now | 89 tools · grade D (62) · pin ts_71fd1087fac8a14e278c291df02338cb · protocol 2025-03-26 |
| First / last listed | 2026-11-14 01:17 UTC / 2026-11-14 01:17 UTC |
| Grade over time | 2026-11-14: D (62), 89 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: chess_generate_puzzle chess_list_puzzle_types chess_list_variants chess_get_legal_moves chess_analyze_position chess_make_move chess_validate_move chess_get_status chess_render_svg chess_make_moves chess_get_opening_book hex_list_games hex_generate_map hex_export_svg hex_get_info hex_compute_fov hex_pathfind play_list_families play_list_variants play_get_definition play_create_game play_get_moves play_apply_move play_check_status play_suggest_move play_render_board play_export_fen play_load_fen play_validate_move play_make_moves rules_list_games rules_get_game rules_get_game_meta rules_get_page rules_get_variant_list rules_get_diagram rules_get_variant rules_search rules_random board_gallery_search board_gallery_get tile_gallery_search tile_gallery_get tile_gallery_stats board_gallery_stats piece_gallery_search piece_gallery_get_set piece_gallery_stats oracle_list_games rpg_chargen oracle_roll oracle_list_tables oracle_ask oracle_scene rpg_search_entities rpg_get_entity rpg_random_encounter rpg_browse_category rpg_loot oracle_list_recipes oracle_interpret oracle_table_view oracle_encounter rpg_list_categories rpg_random ti4_random_factions ti4_draft_factions ti4_list_factions ti4_draw_objectives ti4_draw_agendas nukes_setup_generator game_nukes_combat colony_dice_odds game_deck_create game_deck_list_types game_deck_deal game_score_tracker talisman_draw_characters talisman_draw_encounter jam_status jam_timer jam_vote dice_roll coin_flip team_split random_player_order timer_suggest game_jam_theme dice_odds
chess_generate_puzzle | 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. params: variant, difficulty, theme |
chess_list_puzzle_types | List available puzzle variants, themes, and per-variant counts from the puzzle pool params: none |
chess_list_variants | [DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0. params: group |
chess_get_legal_moves | [DEPRECATED — use play_create_game + play_get_moves] Get legal moves for a chess position. Removal: v1.0.0. params: variant |
chess_analyze_position | [DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0. params: variant, depth |
chess_make_move | [DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0. params: move*, variant |
chess_validate_move | [DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0. params: move*, variant |
chess_get_status | [DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0. params: variant |
chess_render_svg | [DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0. params: variant, fen, highlights |
chess_make_moves | [DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0. params: moves*, variant |
chess_get_opening_book | [REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement. params: variant |
hex_list_games | List all available hex map game types with configuration options params: none |
hex_generate_map | Generate a hex map for a specific game and player count params: game*, players, size, seed |
hex_export_svg | Generate a hex map and export as SVG params: game*, players, size, seed, style, hexSize |
hex_get_info | Get info about a specific hex coordinate (terrain, neighbours, distance) params: q*, r*, game, seed |
hex_compute_fov | Compute field of view from a hex position params: q*, r*, range*, game, seed |
hex_pathfind | Find shortest path between two hex coordinates params: startQ*, startR*, endQ*, endR*, game, seed |
play_list_families | 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) params: none |
play_list_variants | 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". params: family* |
play_get_definition | 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. params: family*, variant |
play_create_game | 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". params: family*, variant, rngSeed |
play_get_moves | Get all legal moves for the current position. Requires state from play_create_game or play_apply_move. params: state* |
play_apply_move | 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"}). params: state*, move* |
play_check_status | Check the current game status: whose turn it is, whether the game is over, and who won. params: state* |
play_suggest_move | Use AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 30 playable families. params: state*, difficulty |
play_render_board | 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). params: state*, highlights, size |
play_export_fen | 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. params: state* |
play_load_fen | Create a game from a FEN-style setup string, as returned by play_export_fen. Pass the same variant the position was exported from. params: family*, fen*, variant |
play_validate_move | 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. params: state*, move* |
play_make_moves | 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. params: state*, moves* |
rules_list_games | List all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics. params: category, complexity, mechanic, status |
rules_get_game | Get full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead. params: game* |
rules_get_game_meta | 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. params: game* |
rules_get_page | 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. params: game*, section, page* |
rules_get_variant_list | List all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook. params: game*, playable, topology |
rules_get_diagram | Get board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata. params: game*, variant |
rules_get_variant | Get rules for a specific game variant params: game*, variant* |
rules_search | Full-text search across all published rulebooks. Returns section-typed results with deep-link anchors. params: query*, game, sectionType, limit |
rules_random | Get a random game suggestion from the library params: players, maxDuration |
board_gallery_search | Search the board gallery (335 rendered board layouts across 34 game families) params: query, limit |
board_gallery_get | Get details of a specific board layout by ID params: board* |
tile_gallery_search | Search hex tile sets by name, game, or terrain type params: query |
tile_gallery_get | Get details of a specific tile set with all tile types params: set* |
tile_gallery_stats | Get statistics about available tile sets params: none |
board_gallery_stats | Get statistics about the board gallery (total boards, families, topologies) params: none |
piece_gallery_search | Search the piece set gallery by name, style, or game type params: query*, family, limit |
piece_gallery_get_set | Get full details and piece list for a specific set params: set* |
piece_gallery_stats | Get statistics about the piece gallery (total sets, styles, authors, game families) params: none |
oracle_list_games | List all supported RPG systems with oracle tables and entity data availability params: none |
rpg_chargen | Generate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc) params: system*, level, class |
oracle_roll | Roll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc) params: system*, table |
oracle_list_tables | List available oracle tables for a system params: system* |
oracle_ask | Ask the oracle a yes/no question with likelihood modifier params: question*, likelihood |
oracle_scene | 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. params: system, recipe, region, type |
rpg_search_entities | Search RPG entities (spells, monsters, classes, items) across all systems params: query*, system, game, category, limit |
rpg_get_entity | Get full details of a specific RPG entity by name params: name*, system, game, category |
rpg_random_encounter | Generate a random encounter for a system and difficulty level params: system, difficulty, type |
rpg_browse_category | Browse entities by category with pagination params: system*, game, category*, page, pageSize |
rpg_loot | Generate random loot/treasure for a system and tier params: system, tier, count |
oracle_list_recipes | List all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts params: game |
oracle_interpret | Resolve oracle cross-references. Given a result like "Action + Theme", follows references and returns expanded results params: result*, source_table, game |
oracle_table_view | View the complete contents of an oracle table — all entries with roll ranges params: table*, game |
oracle_encounter | Generate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e) params: system, party_level, party_size, difficulty, monster_type, terrain |
rpg_list_categories | List entity categories for an RPG system (spells, monsters, classes, equipment, etc) params: game, system |
rpg_random | Get random entities from an RPG system for inspiration or encounter prep params: game*, system, category, count |
ti4_random_factions | Generate random faction assignments for Twilight Imperium 4th Edition params: players*, expansions |
ti4_draft_factions | Milty-style TI4 draft with pick pools per player params: players, choices, expansions |
ti4_list_factions | List all TI4 factions with colors, flags, and expansion info params: expansions |
ti4_draw_objectives | Draw random public objectives for TI4 params: stage, count, expansions |
ti4_draw_agendas | Draw random agenda cards for TI4 political phase params: count, type, expansions |
nukes_setup_generator | Generate random territory/resource setup for a Nukes game params: players |
game_nukes_combat | Resolve a Nukes combat encounter between units params: attacker*, defender*, terrain |
colony_dice_odds | Calculate settlement dice probability for Colony/Catan-style resource numbers params: numbers* |
game_deck_create | Create, shuffle, and optionally draw/deal from a card deck params: type, draw, hands, per_hand |
game_deck_list_types | List all available deck types with metadata params: none |
game_deck_deal | Shuffle and deal a custom deck of arbitrary named cards params: cards*, hands, per_hand, draw |
game_score_tracker | Track scores for players in any game params: players*, scores, game |
talisman_draw_characters | Draw random characters from the Talisman 4e (revised) base set for a character lottery params: count |
talisman_draw_encounter | Draw a random encounter for a Talisman ring (outer, middle, inner, crown) params: ring |
jam_status | Get the current Mod Jam status (active jam, deadline, submissions) params: none |
jam_timer | Get time remaining in the current Mod Jam params: none |
jam_vote | Get voting status for the current Mod Jam params: none |
dice_roll | Roll dice using standard notation (e.g. 2d6+3, 4d8, d20). Supports comma-separated pools and keep-high/low (4d6kh3). params: notation, expression, count |
coin_flip | Flip one or more coins, or pick from a list of choices params: count, choices |
team_split | Randomly divide players into teams params: players*, members, count, teams |
random_player_order | Randomise turn order for a list of players params: players* |
timer_suggest | Suggest time controls for a game based on player count and complexity params: game*, players |
game_jam_theme | Generate a random game jam theme combining mechanics and themes params: count |
dice_odds | Calculate probability of meeting a target with a dice expression. Supports keep-high/low (4d6kh3). params: expression*, target*, comparison |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.