MODDABLE.GAMES

Tools API

56 AI-callable tools for chess variant analysis, piece gallery search, hex map generation, and board game utilities. Connect from any MCP client or call via REST.

claude mcp add --transport http moddable-tools https://tools.moddable.games/mcp
56
tools
3
engines
<10ms
response
$0
cost
ENDPOINTS

Connect however you want

POST /mcp/messageMCP protocol (JSON-RPC)
GET /mcpMCP server-sent events (SSE)
POST /api/callREST API — {"tool": "name", "args": {...}}
GET /api/toolsList all tools with input schemas
GET /llms.txtAI-readable discovery file
GET /openapi.jsonOpenAPI 3.1 specification
QUICK START
curl -X POST https://tools.moddable.games/api/call \
  -H "Content-Type: application/json" \
  -d '{"tool": "chess_list_variants", "args": {"group": "Tactical"}}'
CHESS · 9 TOOLS

Variant analysis

chess_list_variantsList all available chess variants with their descriptions, board sizes, and rules.
chess_get_legal_movesGet all legal moves for the current position. Returns moves in algebraic notation with annotations (capture, promotion, castling, etc).
chess_analyze_positionEvaluate a chess position using the engine. Returns a score (centipawns from the side to move), best move, and the principal variation.
chess_validate_moveCheck whether a specific move is legal in the current position. Returns legal/illegal with explanation.
chess_make_movesPlay a sequence of moves from a position and return the resulting FEN, game status, and move list.
chess_get_opening_bookLook up opening book moves for a position. Returns known good continuations from the variant opening book.
chess_render_svgRender a board position as a self-contained SVG string. No DOM or browser APIs required. Works in Cloudflare Workers.
chess_generate_puzzleServe a random chess puzzle from a pool of 1,557 pre-generated puzzles across 66 variants (plus standard). Returns position, solution, metadata, and an SVG board image. Use chess_list_puzzle_types to discover available variant:type combinations.
chess_list_puzzle_typesList all available puzzle types in the pool with counts. Returns variant:type keys, total puzzles per key, and rating ranges. Use this to discover what puzzles are available before calling chess_generate_puzzle.
HEXMAPS · 6 TOOLS

Map generation

hex_list_gamesList all available hex map games with their map types, layouts, sizes, and style options.
hex_generate_mapGenerate a hex map for a given game. Returns the full hex grid with terrain types, coordinates, and metadata.
hex_get_infoGet detailed information about a specific hex coordinate on a generated map: terrain type, neighbors, and distances to other hexes.
hex_compute_fovCompute field-of-view from a hex position: all hexes visible within a given range, respecting line-of-sight through the grid.
hex_export_svgExport a generated hex map as an SVG string for rendering or embedding.
hex_pathfindFind the shortest path between two hexes on a generated map using breadth-first search. Optionally specify impassable terrain types.
PIECE GALLERY · 3 TOOLS

Piece set discovery

piece_gallery_searchSearch and filter piece sets from the Moddable Chess piece gallery (96 sets, 2,550 SVGs across 19 game families). Filter by family, license, author, or search by name. Returns metadata for matching sets with preview URLs.
piece_gallery_get_setGet full details for a specific piece set including manifest, piece file list, direct SVG URLs, and a preview image URL. Use piece_gallery_search to find set IDs first.
piece_gallery_statsGet aggregate statistics for the piece gallery: total sets, SVG count, breakdown by family, license distribution, author list, and playable/recolorable counts.
UTILITIES · 38 TOOLS

Board game utilities

rules_list_gamesList all game families in the Moddable Games rules library. Returns titles, player counts, variant counts, and URLs.
rules_get_gameGet full metadata and variant list for a specific game family. Returns players, duration, tagline, variant names, and rules URL.
rules_get_variantGet rules content for a specific variant within a game family. Returns headings, rules text, and direct URL.
rules_searchSearch the entire rules library by keyword. Returns matching entries ranked by relevance across all games and variants.
rules_randomPick a random game or variant from the library. Optionally constrain to a specific game family for a random variant within it.
ti4_draw_objectivesDraw random public objectives for a Twilight Imperium 4e game round. Supports expansion filtering.
ti4_draw_agendasDraw random agenda cards for a Twilight Imperium 4e agenda phase. Returns for/against text.
ti4_draft_factionsRun a Milty-style faction draft: deal N factions per player to choose from. Supports ban lists.
nukes_setup_generatorGenerate random starting positions for a Nukes game. Assigns territories to players on a generated hex map.
colony_dice_oddsCalculate probability of each resource number being rolled on 2d6. Returns the odds table and expected output for a given board position.
mancala_simulate_moveSimulate a mancala move: sow seeds from a pit and return the resulting board state. Supports Oware and Kalah rules.
mancala_legal_movesList legal moves for the current player in a mancala position.
morris_legal_movesList legal moves in a Nine Men's Morris position. Handles placement, sliding, and flying phases.
morris_detect_millCheck if a placement/move forms a mill (three in a row) in Nine Men's Morris.
ur_roll_diceRoll the four tetrahedral dice for the Royal Game of Ur. Each die has 2 marked corners (50% chance). Sum is 0-4.
ur_legal_movesList legal moves for a Royal Game of Ur position given a dice roll.
pachisi_roll_cowriesRoll cowrie shells for Pachisi/Chaupar. 6 shells, count faces up. Special values: 0 faces = 25 (grace), 1 face = 10 (grace).
oracle_list_gamesList all supported RPG game systems with their available features (tables, entities). Returns game IDs for use in other tools.
oracle_list_tablesList all available oracle/random tables for a game system, optionally filtered by category. Returns table IDs, names, and roll types.
oracle_rollRoll on a specific oracle/random table. Returns the dice roll and result text. Use oracle_list_tables to discover table IDs.
oracle_askAsk the Oracle a yes/no question with a likelihood modifier. Implements the Ironsworn/Starforged mechanic with match detection.
oracle_sceneGenerate a narrative seed by rolling on multiple oracle tables. Use a named recipe or provide a custom array of table IDs. Auto-resolves cross-references.
oracle_list_recipesList all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts.
oracle_interpretResolve oracle cross-references. Given a result like "Action + Theme" or "Roll twice", follows the reference and returns expanded results.
oracle_table_viewView the complete contents of an oracle table — all entries with roll ranges and results.
oracle_encounterGenerate a tabletop RPG encounter (D&D 5e or Pathfinder 1e). Selects CR-appropriate monsters, picks terrain, and rolls loot.
rpg_list_categoriesList entity categories for an RPG system (or all systems). Shows browseable content: spells, monsters, classes, equipment, skills, bestiary, etc.
rpg_searchSearch RPG entities across games and categories. Full-text search over names, descriptions, and metadata.
rpg_browseBrowse entities in a category with pagination. Good for exploring what is available in a game system.
rpg_get_entityGet full details of a specific RPG entity by name. Supports exact and fuzzy (partial) matching.
rpg_randomGet random entities from an RPG system. Great for inspiration, encounter prep, or NPC generation.
dice_rollRoll dice using standard notation (e.g. "2d6+3", "4d8-1", "d20"). Supports any combination of dice, modifiers, and multiple pools.
ti4_random_factionsGenerate random faction assignments for a Twilight Imperium 4e game. Supports base game and Prophecy of Kings expansion.
coin_flipFlip a coin or pick randomly from a list of options. Use for quick binary decisions or random selection.
team_splitRandomly split a list of players into balanced teams. Handles odd numbers gracefully.
jam_statusGet the current Mod Jam status: active/inactive, theme, base game, time remaining, and submission count.
jam_timerGet the countdown timer for the current Mod Jam phase (voting, building, or judging).
jam_voteGet current vote standings for the active Mod Jam vote. Returns anonymised tallies per option.