Skip to content

Moddable Games Tools

by tools.moddable.games · remote · no sign-in to list tools · v1.1.0 · published by games.moddable.tools

15 tools for chess variant analysis, hex map generation, and board game utilities

Changes · 39

89 tools: 39 change things and 50 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http moddable-games-tools https://tools.moddable.games/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

89 tools

Changes things 39Claude Code: ask
  • chess_generate_puzzleGet a random chess puzzle.No findings

    Why it is in this group

    • The name "chess_generate_puzzle" says "generate": a word for a change.
    Description, as the server wrote it
    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.
  • chess_make_move[DEPRECATED — use play_apply_move] Apply a move to a chess game.No findings

    Why it is in this group

    • The name "chess_make_move" says "move": a word for a change.
    Description, as the server wrote it
    [DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0.
  • chess_make_moves[DEPRECATED — use play_make_moves] Apply a sequence of chess moves.No findings

    Why it is in this group

    • The name "chess_make_moves" says "move": a word for a change.
    Description, as the server wrote it
    [DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0.
  • chess_render_svg[DEPRECATED — use play_render_board] Render a chess position as SVG.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0.
  • coin_flipFlip one or more coins, or pick from a list of choicesNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Flip one or more coins, or pick from a list of choices
  • colony_dice_oddsCalculate settlement dice probability for Colony/Catan-style resource numbersNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Calculate settlement dice probability for Colony/Catan-style resource numbers
  • dice_oddsCalculate probability of meeting a target with a dice expression.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Calculate probability of meeting a target with a dice expression. Supports keep-high/low (4d6kh3).
  • dice_rollRoll dice using standard notation (e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Roll dice using standard notation (e.g. 2d6+3, 4d8, d20). Supports comma-separated pools and keep-high/low (4d6kh3).
  • game_deck_createCreate, shuffle, and optionally draw/deal from a card deckNo findings

    Why it is in this group

    • The name "game_deck_create" says "create": a word for a change.
    Description, as the server wrote it
    Create, shuffle, and optionally draw/deal from a card deck
  • game_deck_dealShuffle and deal a custom deck of arbitrary named cardsNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Shuffle and deal a custom deck of arbitrary named cards
  • game_jam_themeGenerate a random game jam theme combining mechanics and themesNo findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate a random game jam theme combining mechanics and themes
  • game_score_trackerTrack scores for players in any gameNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Track scores for players in any game
  • hex_compute_fovCompute field of view from a hex positionNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Compute field of view from a hex position
  • hex_export_svgGenerate a hex map and export as SVGNo findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate a hex map and export as SVG
  • hex_generate_mapGenerate a hex map for a specific game and player countNo findings

    Why it is in this group

    • The name "hex_generate_map" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a hex map for a specific game and player count
  • nukes_setup_generatorGenerate random territory/resource setup for a Nukes gameNo findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate random territory/resource setup for a Nukes game
  • oracle_askAsk the oracle a yes/no question with likelihood modifierNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Ask the oracle a yes/no question with likelihood modifier
  • oracle_encounterGenerate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)No findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)
  • oracle_rollRoll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Roll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)
  • oracle_sceneGenerate a scene using oracle tables.No findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    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.
  • play_apply_moveApply a move to the game and return the new state.No findings

    Why it is in this group

    • The name "play_apply_move" says "apply": a word for a change.
    Description, as the server wrote it
    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"}).
  • play_create_gameCreate a new game instance for a given family.No findings

    Why it is in this group

    • The name "play_create_game" says "create": a word for a change.
    Description, as the server wrote it
    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".
  • play_export_fenExport the current board position as a FEN-style setup string, in the form the variant's own frontmatter declares its starting position.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • play_load_fenCreate a game from a FEN-style setup string, as returned by play_export_fen.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create a game from a FEN-style setup string, as returned by play_export_fen. Pass the same variant the position was exported from.
  • play_make_movesApply a sequence of moves to a game and return the final state.No findings

    Why it is in this group

    • The name "play_make_moves" says "move": a word for a change.
    Description, as the server wrote it
    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.
  • play_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, bavar…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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).
  • play_suggest_moveUse AI to analyse the position and suggest the best move.No findings

    Why it is in this group

    • The name "play_suggest_move" says "move": a word for a change.
    Description, as the server wrote it
    Use AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 30 playable families.
  • random_player_orderRandomise turn order for a list of playersNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Randomise turn order for a list of players
  • rpg_chargenGenerate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)No findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)
  • rpg_lootGenerate random loot/treasure for a system and tierNo findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate random loot/treasure for a system and tier
  • rpg_random_encounterGenerate a random encounter for a system and difficulty levelNo findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate a random encounter for a system and difficulty level
  • talisman_draw_charactersDraw random characters from the Talisman 4e (revised) base set for a character lotteryNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Draw random characters from the Talisman 4e (revised) base set for a character lottery
  • talisman_draw_encounterDraw a random encounter for a Talisman ring (outer, middle, inner, crown)No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Draw a random encounter for a Talisman ring (outer, middle, inner, crown)
  • team_splitRandomly divide players into teamsNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Randomly divide players into teams
  • ti4_draft_factionsMilty-style TI4 draft with pick pools per playerNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Milty-style TI4 draft with pick pools per player
  • ti4_draw_agendasDraw random agenda cards for TI4 political phaseNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Draw random agenda cards for TI4 political phase
  • ti4_draw_objectivesDraw random public objectives for TI4No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Draw random public objectives for TI4
  • ti4_random_factionsGenerate random faction assignments for Twilight Imperium 4th EditionNo findings

    Why it is in this group

    • The description's first verb is "generate": a word for a change.
    Description, as the server wrote it
    Generate random faction assignments for Twilight Imperium 4th Edition
  • timer_suggestSuggest time controls for a game based on player count and complexityNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Suggest time controls for a game based on player count and complexity
Only reads 50Claude Code: allow
  • chess_analyze_position[DEPRECATED — use play_suggest_move] Analyse a chess position.No findings

    Why it is in this group

    • The name "chess_analyze_position" says "analyze": a word for reading.
    Description, as the server wrote it
    [DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0.
  • chess_get_opening_book[REMOVED — engine#98] Opening book resolution is broken in Worker context.No findings

    Why it is in this group

    • The name "chess_get_opening_book" says "get": a word for reading.
    Description, as the server wrote it
    [REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement.
  • chess_get_status[DEPRECATED — use play_check_status] Get chess game status.No findings

    Why it is in this group

    • The name "chess_get_status" says "get": a word for reading.
    Description, as the server wrote it
    [DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0.
  • chess_list_puzzle_typesList available puzzle variants, themes, and per-variant counts from the puzzle poolNo findings

    Why it is in this group

    • The name "chess_list_puzzle_types" says "list": a word for reading.
    Description, as the server wrote it
    List available puzzle variants, themes, and per-variant counts from the puzzle pool
  • chess_list_variants[DEPRECATED — use play_list_variants] List chess variants.No findings

    Why it is in this group

    • The name "chess_list_variants" says "list": a word for reading.
    Description, as the server wrote it
    [DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0.
  • chess_validate_move[DEPRECATED — use play_validate_move] Check if a chess move is legal.No findings

    Why it is in this group

    • The name "chess_validate_move" says "validate": a word for reading.
    Description, as the server wrote it
    [DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0.
  • game_deck_list_typesList all available deck types with metadataNo findings

    Why it is in this group

    • The name "game_deck_list_types" says "list": a word for reading.
    Description, as the server wrote it
    List all available deck types with metadata
  • game_nukes_combatResolve a Nukes combat encounter between unitsNo findings

    Why it is in this group

    • The description's first verb is "resolve": a word for reading.
    Description, as the server wrote it
    Resolve a Nukes combat encounter between units
  • hex_get_infoGet info about a specific hex coordinate (terrain, neighbours, distance)No findings

    Why it is in this group

    • The name "hex_get_info" says "get": a word for reading.
    Description, as the server wrote it
    Get info about a specific hex coordinate (terrain, neighbours, distance)
  • hex_list_gamesList all available hex map game types with configuration optionsNo findings

    Why it is in this group

    • The name "hex_list_games" says "list": a word for reading.
    Description, as the server wrote it
    List all available hex map game types with configuration options
  • hex_pathfindFind shortest path between two hex coordinatesNo findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find shortest path between two hex coordinates
  • jam_statusGet the current Mod Jam status (active jam, deadline, submissions)No findings

    Why it is in this group

    • The name "jam_status" says "status": a word for reading.
    Description, as the server wrote it
    Get the current Mod Jam status (active jam, deadline, submissions)
  • jam_timerGet time remaining in the current Mod JamNo findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get time remaining in the current Mod Jam
  • jam_voteGet voting status for the current Mod JamNo findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get voting status for the current Mod Jam
  • oracle_interpretResolve oracle cross-references.Reads private dataNo findings

    Why it is in this group

    • The description's first verb is "resolve": a word for reading.

    What it can reach

    • private-dataThe input names a table (input.source_table), and the tool reads: it reads databases.
    Description, as the server wrote it
    Resolve oracle cross-references. Given a result like "Action + Theme", follows references and returns expanded results
  • oracle_list_gamesList all supported RPG systems with oracle tables and entity data availabilityReads private dataNo findings

    Why it is in this group

    • The name "oracle_list_games" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "table": it reads databases.
    Description, as the server wrote it
    List all supported RPG systems with oracle tables and entity data availability
  • oracle_list_recipesList all predefined scene recipes — curated multi-table compositions that produce coherent narrative promptsReads private dataNo findings

    Why it is in this group

    • The name "oracle_list_recipes" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "table": it reads databases.
    Description, as the server wrote it
    List all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts
  • oracle_list_tablesList available oracle tables for a systemReads private dataNo findings

    Why it is in this group

    • The name "oracle_list_tables" says "list": a word for reading.

    What it can reach

    • private-dataThe name "oracle_list_tables" says "list" and "table": it reads databases.
    • private-dataThe description's first sentence says "list" and "table": it reads databases.
    Description, as the server wrote it
    List available oracle tables for a system
  • oracle_table_viewView the complete contents of an oracle table — all entries with roll rangesReads private dataNo findings

    Why it is in this group

    • The name "oracle_table_view" says "view": a word for reading.

    What it can reach

    • private-dataThe name "oracle_table_view" says "view" and "table": it reads databases.
    • private-dataThe description's first sentence says "view" and "table": it reads databases.
    • private-dataThe input names a table (input.table), and the tool reads: it reads databases.
    Description, as the server wrote it
    View the complete contents of an oracle table — all entries with roll ranges
  • play_check_statusCheck the current game status: whose turn it is, whether the game is over, and who won.No findings

    Why it is in this group

    • The name "play_check_status" says "status": a word for reading.
    Description, as the server wrote it
    Check the current game status: whose turn it is, whether the game is over, and who won.
  • play_get_definitionGet the full engine definition (topology, render config, pieces, setup FEN) for a game variant.No findings

    Why it is in this group

    • The name "play_get_definition" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • play_get_movesGet all legal moves for the current position.No findings

    Why it is in this group

    • The name "play_get_moves" says "get": a word for reading.
    Description, as the server wrote it
    Get all legal moves for the current position. Requires state from play_create_game or play_apply_move.
  • play_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, f…No findings

    Why it is in this group

    • The name "play_list_families" says "list": a word for reading.
    Description, as the server wrote it
    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)
  • play_list_variantsList available variants for a game family.No findings

    Why it is in this group

    • The name "play_list_variants" says "list": a word for reading.
    Description, as the server wrote it
    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".
  • play_validate_moveCheck whether a move is legal in the current position without applying it.No findings

    Why it is in this group

    • The name "play_validate_move" says "validate": a word for reading.
    Description, as the server wrote it
    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.
  • rpg_browse_categoryBrowse entities by category with paginationReads text others writeNo findings

    Why it is in this group

    • The name "rpg_browse_category" says "browse": a word for reading.

    What it can reach

    • untrusted-inputThe name "rpg_browse_category" says "browse": it reads web pages, which anyone can write.
    • untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Browse entities by category with pagination
  • rpg_get_entityGet full details of a specific RPG entity by nameNo findings

    Why it is in this group

    • The name "rpg_get_entity" says "get": a word for reading.
    Description, as the server wrote it
    Get full details of a specific RPG entity by name
  • rpg_list_categoriesList entity categories for an RPG system (spells, monsters, classes, equipment, etc)No findings

    Why it is in this group

    • The name "rpg_list_categories" says "list": a word for reading.
    Description, as the server wrote it
    List entity categories for an RPG system (spells, monsters, classes, equipment, etc)
  • rpg_randomGet random entities from an RPG system for inspiration or encounter prepNo findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get random entities from an RPG system for inspiration or encounter prep
  • rpg_search_entitiesSearch RPG entities (spells, monsters, classes, items) across all systemsNo findings

    Why it is in this group

    • The name "rpg_search_entities" says "search": a word for reading.
    Description, as the server wrote it
    Search RPG entities (spells, monsters, classes, items) across all systems
  • rules_get_diagramGet board diagram SVG URL for a game variant.Reads text others writeNo findings

    Why it is in this group

    • The name "rules_get_diagram" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "get" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Get board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata.
  • rules_get_gameGet full rulebook content for a specific game (markdown).No findings

    Why it is in this group

    • The name "rules_get_game" says "get": a word for reading.
    Description, as the server wrote it
    Get full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead.
  • rules_get_game_metaGet structured metadata for a game: players, duration, complexity, mechanics, how_to_play, variant list, page list, related games.No findings

    Why it is in this group

    • The name "rules_get_game_meta" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • rules_get_pageGet a specific page/section from a game rulebook (e.g.No findings

    Why it is in this group

    • The name "rules_get_page" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • rules_get_variantGet rules for a specific game variantNo findings

    Why it is in this group

    • The name "rules_get_variant" says "get": a word for reading.
    Description, as the server wrote it
    Get rules for a specific game variant
  • rules_get_variant_listList all variants for a game with structured metadata (players, board, playable status, topology, engine config).No findings

    Why it is in this group

    • The name "rules_get_variant_list" says "get": a word for reading.
    Description, as the server wrote it
    List all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook.
  • rules_list_gamesList all available game rulebooks with metadata (players, duration, complexity, mechanics).No findings

    Why it is in this group

    • The name "rules_list_games" says "list": a word for reading.
    Description, as the server wrote it
    List all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics.
  • rules_randomGet a random game suggestion from the libraryNo findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get a random game suggestion from the library
  • ti4_list_factionsList all TI4 factions with colors, flags, and expansion infoNo findings

    Why it is in this group

    • The name "ti4_list_factions" says "list": a word for reading.
    Description, as the server wrote it
    List all TI4 factions with colors, flags, and expansion info

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data5
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write2
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 14:48 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
39
Protocol version
2025-03-26
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
none
Authorization servers
none
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • WarnThe whole server

    The endpoint served tools/list without credentials, and the list has 39 tools that change things (39 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://tools.moddable.games/mcp: tools/list returned 89 tools to an anonymous client, including chess_generate_puzzle (write), chess_make_move (write), chess_render_svg (write), chess_make_moves (write), hex_generate_map (write) and 34 more

    What this check looks for

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http moddable-games-tools https://tools.moddable.games/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__moddable-games-tools__chess_list_puzzle_types",
      "mcp__moddable-games-tools__chess_list_variants",
      "mcp__moddable-games-tools__chess_get_legal_moves",
      "mcp__moddable-games-tools__chess_analyze_position",
      "mcp__moddable-games-tools__chess_validate_move",
      "mcp__moddable-games-tools__chess_get_status",
      "mcp__moddable-games-tools__chess_get_opening_book",
      "mcp__moddable-games-tools__hex_list_games",
      "mcp__moddable-games-tools__hex_get_info",
      "mcp__moddable-games-tools__hex_pathfind",
      "mcp__moddable-games-tools__play_list_families",
      "mcp__moddable-games-tools__play_list_variants",
      "mcp__moddable-games-tools__play_get_definition",
      "mcp__moddable-games-tools__play_get_moves",
      "mcp__moddable-games-tools__play_check_status",
      "mcp__moddable-games-tools__play_validate_move",
      "mcp__moddable-games-tools__rules_list_games",
      "mcp__moddable-games-tools__rules_get_game",
      "mcp__moddable-games-tools__rules_get_game_meta",
      "mcp__moddable-games-tools__rules_get_page",
      "mcp__moddable-games-tools__rules_get_variant_list",
      "mcp__moddable-games-tools__rules_get_diagram",
      "mcp__moddable-games-tools__rules_get_variant",
      "mcp__moddable-games-tools__rules_search",
      "mcp__moddable-games-tools__rules_random",
      "mcp__moddable-games-tools__board_gallery_search",
      "mcp__moddable-games-tools__board_gallery_get",
      "mcp__moddable-games-tools__tile_gallery_search",
      "mcp__moddable-games-tools__tile_gallery_get",
      "mcp__moddable-games-tools__tile_gallery_stats",
      "mcp__moddable-games-tools__board_gallery_stats",
      "mcp__moddable-games-tools__piece_gallery_search",
      "mcp__moddable-games-tools__piece_gallery_get_set",
      "mcp__moddable-games-tools__piece_gallery_stats",
      "mcp__moddable-games-tools__oracle_list_games",
      "mcp__moddable-games-tools__oracle_list_tables",
      "mcp__moddable-games-tools__rpg_search_entities",
      "mcp__moddable-games-tools__rpg_get_entity",
      "mcp__moddable-games-tools__rpg_browse_category",
      "mcp__moddable-games-tools__oracle_list_recipes",
      "mcp__moddable-games-tools__oracle_interpret",
      "mcp__moddable-games-tools__oracle_table_view",
      "mcp__moddable-games-tools__rpg_list_categories",
      "mcp__moddable-games-tools__rpg_random",
      "mcp__moddable-games-tools__ti4_list_factions",
      "mcp__moddable-games-tools__game_nukes_combat",
      "mcp__moddable-games-tools__game_deck_list_types",
      "mcp__moddable-games-tools__jam_status",
      "mcp__moddable-games-tools__jam_timer",
      "mcp__moddable-games-tools__jam_vote"
    ],
    "ask": [
      "mcp__moddable-games-tools__chess_generate_puzzle",
      "mcp__moddable-games-tools__chess_make_move",
      "mcp__moddable-games-tools__chess_render_svg",
      "mcp__moddable-games-tools__chess_make_moves",
      "mcp__moddable-games-tools__hex_generate_map",
      "mcp__moddable-games-tools__hex_export_svg",
      "mcp__moddable-games-tools__hex_compute_fov",
      "mcp__moddable-games-tools__play_create_game",
      "mcp__moddable-games-tools__play_apply_move",
      "mcp__moddable-games-tools__play_suggest_move",
      "mcp__moddable-games-tools__play_render_board",
      "mcp__moddable-games-tools__play_export_fen",
      "mcp__moddable-games-tools__play_load_fen",
      "mcp__moddable-games-tools__play_make_moves",
      "mcp__moddable-games-tools__rpg_chargen",
      "mcp__moddable-games-tools__oracle_roll",
      "mcp__moddable-games-tools__oracle_ask",
      "mcp__moddable-games-tools__oracle_scene",
      "mcp__moddable-games-tools__rpg_random_encounter",
      "mcp__moddable-games-tools__rpg_loot",
      "mcp__moddable-games-tools__oracle_encounter",
      "mcp__moddable-games-tools__ti4_random_factions",
      "mcp__moddable-games-tools__ti4_draft_factions",
      "mcp__moddable-games-tools__ti4_draw_objectives",
      "mcp__moddable-games-tools__ti4_draw_agendas",
      "mcp__moddable-games-tools__nukes_setup_generator",
      "mcp__moddable-games-tools__colony_dice_odds",
      "mcp__moddable-games-tools__game_deck_create",
      "mcp__moddable-games-tools__game_deck_deal",
      "mcp__moddable-games-tools__game_score_tracker",
      "mcp__moddable-games-tools__talisman_draw_characters",
      "mcp__moddable-games-tools__talisman_draw_encounter",
      "mcp__moddable-games-tools__dice_roll",
      "mcp__moddable-games-tools__coin_flip",
      "mcp__moddable-games-tools__team_split",
      "mcp__moddable-games-tools__random_player_order",
      "mcp__moddable-games-tools__timer_suggest",
      "mcp__moddable-games-tools__game_jam_theme",
      "mcp__moddable-games-tools__dice_odds"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as moddable-games-tools. Review it before you use it.

Capability tags behind 7 rules
  • mcp__moddable-games-tools__rules_get_diagram untrusted-input
  • mcp__moddable-games-tools__oracle_list_games private-data
  • mcp__moddable-games-tools__oracle_list_tables private-data
  • mcp__moddable-games-tools__rpg_browse_category untrusted-input
  • mcp__moddable-games-tools__oracle_list_recipes private-data
  • mcp__moddable-games-tools__oracle_interpret private-data
  • mcp__moddable-games-tools__oracle_table_view private-data