
Moddable Games Tools
Fifteen tools wrapping three open-source board game engines: Moddable Chess (70+ variants), Moddable Hexmaps, and utilities for Twilight Imperium and Talisman. You get chess position validation, variant rule lookups, hex coordinate math, map generation, dice rolling, and faction randomizers. The tools run on a Cloudflare Worker at tools.moddable.games with REST and SSE transports, plus OpenAPI docs. Useful if you're building game analysis features, procedural content for tabletop mods, or need structured board game logic without writing spatial math from scratch. The puzzle generation uses a pre-computed pool to stay inside free-tier limits.
- tools
- 80
- transport
- HTTP
- last updated
- Jun 10, 2026
Install
From registry metadata$ npx add-mcp https://tools.moddable.games/mcp --name moddable-games-toolsRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http moddable-games-tools https://tools.moddable.games/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 80 toolsVerified live against the running server on Nov 6, 2026.
chess_generate_puzzleGet 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.3 params
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.
difficultystringeasy · medium · hardthemestringvariantstringchess_list_puzzle_typesList available puzzle variants, themes, and per-variant counts from the puzzle pool
List available puzzle variants, themes, and per-variant counts from the puzzle pool
No parameters. Call it with no arguments.
chess_list_variants[DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0.1 params
[DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0.
groupstringchess_get_legal_moves[DEPRECATED — use play_create_game + play_get_moves] Get legal moves for a chess position. Removal: v1.0.0.1 params
[DEPRECATED — use play_create_game + play_get_moves] Get legal moves for a chess position. Removal: v1.0.0.
variantstringchess_analyze_position[DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0.2 params
[DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0.
depthnumbervariantstringchess_make_move[DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0.2 params
[DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0.
move*objectvariantstringchess_validate_move[DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0.2 params
[DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0.
move*objectvariantstringchess_get_status[DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0.1 params
[DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0.
variantstringchess_render_svg[DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0.3 params
[DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0.
fenstringhighlightsarrayvariantstringchess_make_moves[DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0.2 params
[DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0.
moves*arrayvariantstringchess_get_opening_book[REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement.1 params
[REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement.
variantstringhex_list_gamesList all available hex map game types with configuration options
List all available hex map game types with configuration options
No parameters. Call it with no arguments.
hex_generate_mapGenerate a hex map for a specific game and player count4 params
Generate a hex map for a specific game and player count
game*stringplayersnumberseedstringsizenumberhex_export_svgGenerate a hex map and export as SVG6 params
Generate a hex map and export as SVG
game*stringhexSizenumberplayersnumberseedstringsizenumberstylestringhex_get_infoGet info about a specific hex coordinate (terrain, neighbours, distance)4 params
Get info about a specific hex coordinate (terrain, neighbours, distance)
gamestringq*numberr*numberseedstringhex_compute_fovCompute field of view from a hex position5 params
Compute field of view from a hex position
gamestringq*numberr*numberrange*numberseedstringhex_pathfindFind shortest path between two hex coordinates6 params
Find shortest path between two hex coordinates
endQ*numberendR*numbergamestringseedstringstartQ*numberstartR*numberplay_list_familiesList 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, fanoro...
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, fanoro...
No parameters. Call it with no arguments.
play_list_variantsList 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".1 params
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".
family*stringplay_get_definitionGet 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.2 params
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.
family*stringvariantstringplay_create_gameCreate 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".3 params
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".
family*stringrngSeednumbervariantstringplay_get_movesGet all legal moves for the current position. Requires state from play_create_game or play_apply_move.1 params
Get all legal moves for the current position. Requires state from play_create_game or play_apply_move.
state*objectplay_apply_moveApply 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"}).2 params
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"}).
move*objectstate*objectplay_check_statusCheck the current game status: whose turn it is, whether the game is over, and who won.1 params
Check the current game status: whose turn it is, whether the game is over, and who won.
state*objectplay_suggest_moveUse AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 30 playable families.2 params
Use AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 30 playable families.
difficultystringbeginner · easy · medium · hard · expertstate*objectplay_render_boardRender 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-q...3 params
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-q...
highlightsarraysizeintegerstate*objectplay_export_fenExport 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.1 params
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.
state*objectplay_load_fenCreate a game from a FEN-style setup string, as returned by play_export_fen. Pass the same variant the position was exported from.3 params
Create a game from a FEN-style setup string, as returned by play_export_fen. Pass the same variant the position was exported from.
family*stringfen*stringvariantstringplay_validate_moveCheck 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.2 params
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.
move*objectstate*objectplay_make_movesApply 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.2 params
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.
moves*arraystate*objectrules_list_gamesList all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics.4 params
List all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics.
categorystringcomplexitystringsimple · moderate · complexmechanicstringstatusstringlive · alpha · playtestrules_get_gameGet full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead.1 params
Get full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead.
game*stringrules_get_game_metaGet 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.1 params
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.
game*stringrules_get_pageGet a specific page/section from a game rulebook (e.g. character creation, combat rules, marketplace). Use rules_get_game_meta to see available pages.3 params
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.
game*stringpage*stringsectionstringrules_get_variant_listList all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook.3 params
List all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook.
game*stringplayablebooleantopologystringrules_get_diagramGet board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata.2 params
Get board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata.
game*stringvariantstringrules_get_variantGet rules for a specific game variant2 params
Get rules for a specific game variant
game*stringvariant*stringrules_searchFull-text search across all published rulebooks. Returns section-typed results with deep-link anchors.4 params
Full-text search across all published rulebooks. Returns section-typed results with deep-link anchors.
gamestringlimitnumberquery*stringsectionTypestringrules_randomGet a random game suggestion from the library2 params
Get a random game suggestion from the library
maxDurationnumberplayersnumberboard_gallery_searchSearch the board gallery (335 rendered board layouts across 34 game families)2 params
Search the board gallery (335 rendered board layouts across 34 game families)
limitnumberquerystringboard_gallery_getGet details of a specific board layout by ID1 params
Get details of a specific board layout by ID
board*stringtile_gallery_searchSearch hex tile sets by name, game, or terrain type1 params
Search hex tile sets by name, game, or terrain type
querystringtile_gallery_getGet details of a specific tile set with all tile types1 params
Get details of a specific tile set with all tile types
set*stringtile_gallery_statsGet statistics about available tile sets
Get statistics about available tile sets
No parameters. Call it with no arguments.
board_gallery_statsGet statistics about the board gallery (total boards, families, topologies)
Get statistics about the board gallery (total boards, families, topologies)
No parameters. Call it with no arguments.
piece_gallery_searchSearch the piece set gallery by name, style, or game type3 params
Search the piece set gallery by name, style, or game type
familystringlimitnumberquery*stringpiece_gallery_get_setGet full details and piece list for a specific set1 params
Get full details and piece list for a specific set
set*stringpiece_gallery_statsGet statistics about the piece gallery (total sets, styles, authors, game families)
Get statistics about the piece gallery (total sets, styles, authors, game families)
No parameters. Call it with no arguments.
oracle_list_gamesList all supported RPG systems with oracle tables and entity data availability
List all supported RPG systems with oracle tables and entity data availability
No parameters. Call it with no arguments.
rpg_chargenGenerate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)3 params
Generate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)
classstringlevelnumbersystem*stringoracle_rollRoll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)2 params
Roll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)
system*stringtablestringoracle_list_tablesList available oracle tables for a system1 params
List available oracle tables for a system
system*stringoracle_askAsk the oracle a yes/no question with likelihood modifier2 params
Ask the oracle a yes/no question with likelihood modifier
likelihoodstringcertain · likely · even · unlikely · impossiblequestion*stringoracle_sceneGenerate 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.4 params
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.
recipestringregionstringterminus · outlands · expansesystemstringtypestringlocation · npc · event · combatrpg_search_entitiesSearch RPG entities (spells, monsters, classes, items) across all systems5 params
Search RPG entities (spells, monsters, classes, items) across all systems
categorystringgamestringlimitnumberquery*stringsystemstringrpg_get_entityGet full details of a specific RPG entity by name4 params
Get full details of a specific RPG entity by name
categorystringgamestringname*stringsystemstringrpg_random_encounterGenerate a random encounter for a system and difficulty level3 params
Generate a random encounter for a system and difficulty level
difficultystringeasy · medium · hard · deadlysystemstringtypestringrpg_browse_categoryBrowse entities by category with pagination5 params
Browse entities by category with pagination
category*stringgamestringpagenumberpageSizenumbersystem*stringrpg_lootGenerate random loot/treasure for a system and tier3 params
Generate random loot/treasure for a system and tier
countnumbersystemstringtierstringminor · major · legendaryoracle_list_recipesList all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts1 params
List all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts
gamestringoracle_interpretResolve oracle cross-references. Given a result like "Action + Theme", follows references and returns expanded results3 params
Resolve oracle cross-references. Given a result like "Action + Theme", follows references and returns expanded results
gamestringresult*stringsource_tablestringoracle_table_viewView the complete contents of an oracle table — all entries with roll ranges2 params
View the complete contents of an oracle table — all entries with roll ranges
gamestringtable*stringoracle_encounterGenerate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)6 params
Generate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)
difficultystringeasy · medium · hard · deadlymonster_typestringparty_levelnumberparty_sizenumbersystemstringdnd-5e · pathfinder-1eterrainstringrpg_list_categoriesList entity categories for an RPG system (spells, monsters, classes, equipment, etc)2 params
List entity categories for an RPG system (spells, monsters, classes, equipment, etc)
gamestringsystemstringrpg_randomGet random entities from an RPG system for inspiration or encounter prep4 params
Get random entities from an RPG system for inspiration or encounter prep
categorystringcountnumbergame*stringsystemstringti4_random_factionsGenerate random faction assignments for Twilight Imperium 4th Edition2 params
Generate random faction assignments for Twilight Imperium 4th Edition
expansionsarrayplayers*numberti4_draft_factionsMilty-style TI4 draft with pick pools per player3 params
Milty-style TI4 draft with pick pools per player
choicesnumberexpansionsarrayplayersnumberti4_list_factionsList all TI4 factions with colors, flags, and expansion info1 params
List all TI4 factions with colors, flags, and expansion info
expansionsarrayti4_draw_objectivesDraw random public objectives for TI43 params
Draw random public objectives for TI4
countnumberexpansionsarraystagenumber1 · 2ti4_draw_agendasDraw random agenda cards for TI4 political phase3 params
Draw random agenda cards for TI4 political phase
countnumberexpansionsarraytypestringlaw · directivenukes_setup_generatorGenerate random territory/resource setup for a Nukes game1 params
Generate random territory/resource setup for a Nukes game
playersnumbergame_nukes_combatResolve a Nukes combat encounter between units3 params
Resolve a Nukes combat encounter between units
attacker*stringdefender*stringterrainstringcolony_dice_oddsCalculate settlement dice probability for Colony/Catan-style resource numbers1 params
Calculate settlement dice probability for Colony/Catan-style resource numbers
numbers*stringgame_deck_createCreate, shuffle, and optionally draw/deal from a card deck4 params
Create, shuffle, and optionally draw/deal from a card deck
drawnumberhandsnumberper_handnumbertypestringstandard-52 · bavarian-32 · hanafuda-48 · mahjong-136 · dominoes-28 · standard-dicegame_deck_list_typesList all available deck types with metadata
List all available deck types with metadata
No parameters. Call it with no arguments.
game_deck_dealShuffle and deal a custom deck of arbitrary named cards4 params
Shuffle and deal a custom deck of arbitrary named cards
cards*arraydrawnumberhandsnumberper_handnumbergame_score_trackerTrack scores for players in any game3 params
Track scores for players in any game
gamestringplayers*arrayscoresarraytalisman_draw_charactersDraw random characters from the Talisman 4e (revised) base set for a character lottery1 params
Draw random characters from the Talisman 4e (revised) base set for a character lottery
countnumbertalisman_draw_encounterDraw a random encounter for a Talisman ring (outer, middle, inner, crown)1 params
Draw a random encounter for a Talisman ring (outer, middle, inner, crown)
ringstringouter · middle · inner · crownjam_statusGet the current Mod Jam status (active jam, deadline, submissions)
Get the current Mod Jam status (active jam, deadline, submissions)
No parameters. Call it with no arguments.
Sponsors
Readme
Moddable.Games
Creating games you already own.
A multi-page marketing site and tools platform for an open-source board game modding workshop. Ten mods. Three original games. Two open-source engines. One Discord.
Stack
HTML + Vanilla JS + Zero dependencies + Zero build step
Modular JS architecture: one loader (js/mg-loader.js) loads 12 shared modules + page-specific scripts. Zero inline scripts or styles.
Routes
Details
- Repository
- github.com/moddable-games/moddable-website
- Category
- Design & Creative
- Transport
- HTTP
- Registry
- MCP registry, active
- Resources
- 4
- Prompts
- 3
- Tools verified
- Nov 6, 2026