Moddable Games Tools

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
92%
Integridad del esquema
86%
Calidad de los nombres
83%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (7)

  • LOWTool 'oracle_roll' description lacks action verben oracle_roll
  • LOWTool 'oracle_ask' description lacks action verben oracle_ask
  • LOWTool 'rpg_browse_category' description lacks action verben rpg_browse_category
  • LOWTool 'oracle_interpret' description lacks action verben oracle_interpret
  • LOWTool 'oracle_table_view' description lacks action verben oracle_table_view
  • LOWTool 'game_deck_deal' description lacks action verben game_deck_deal
  • LOWTool 'dice_roll' description lacks action verben dice_roll

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~8,018Tokens (definiciones de herramientas)
~677 BTamaño de respuesta típico
Impacto significativo en la atención (6.26% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "moddable-games-tools": {
      "url": "https://tools.moddable.games/mcp"
    }
  }
}

Puntos de conexión remotos

https://tools.moddable.games/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (89)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢chess_generate_puzzle(variant, difficulty, theme)

Get a random chess puzzle. Filter by variant or difficulty. Variant puzzles have no themes and max rating 1400 — theme and hard difficulty filters only apply to standard puzzles.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string",
      "description": "Chess variant slug, camelCase or kebab-case (e.g. antichess, almost-chess, atomic, chess960, standard). Returns only puzzles for this variant."
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "easy",
        "medium",
        "hard"
      ],
      "description": "Puzzle difficulty (variant puzzles max at 1400, so hard returns nothing for variants)"
    },
    "theme": {
      "type": "string",
      "description": "Puzzle theme (fork, pin, skewer, mateIn2, etc). Only standard puzzles carry themes."
    }
  }
}
🟢chess_list_puzzle_types

List available puzzle variants, themes, and per-variant counts from the puzzle pool

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢chess_list_variants(group)

[DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "group": {
      "type": "string"
    }
  }
}
🟡chess_get_legal_moves(variant)

[DEPRECATED — use play_create_game + play_get_moves] Get legal moves for a chess position. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string"
    }
  }
}
🟢chess_analyze_position(variant, depth)

[DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string"
    },
    "depth": {
      "type": "number"
    }
  }
}
⚪chess_make_move(move, variant)

[DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "move": {
      "type": "object"
    },
    "variant": {
      "type": "string"
    }
  },
  "required": [
    "move"
  ]
}
🟢chess_validate_move(move, variant)

[DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "move": {
      "type": "object"
    },
    "variant": {
      "type": "string"
    }
  },
  "required": [
    "move"
  ]
}
🟢chess_get_status(variant)

[DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string"
    }
  }
}
⚪chess_render_svg(variant, fen, highlights)

[DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string"
    },
    "fen": {
      "type": "string",
      "description": "FEN position string"
    },
    "highlights": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Squares to highlight (e.g. [\"e2\",\"e4\"])"
    }
  }
}
⚪chess_make_moves(moves, variant)

[DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "moves": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "variant": {
      "type": "string"
    }
  },
  "required": [
    "moves"
  ]
}
🟢chess_get_opening_book(variant)

[REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string"
    }
  }
}
🟢hex_list_games

List all available hex map game types with configuration options

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢hex_generate_map(game, players, size, seed)

Generate a hex map for a specific game and player count

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game type (nukes, colony, catan, age-of-steam, eclipse, twilight-imperium)"
    },
    "players": {
      "type": "number",
      "description": "Number of players (default: 2)"
    },
    "size": {
      "type": "number",
      "description": "Map size (default: game default)"
    },
    "seed": {
      "type": "string",
      "description": "Random seed for reproducibility"
    }
  },
  "required": [
    "game"
  ]
}
⚪hex_export_svg(game, players, size, seed, style, ...)

Generate a hex map and export as SVG

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game type"
    },
    "players": {
      "type": "number",
      "description": "Number of players"
    },
    "size": {
      "type": "number",
      "description": "Map size"
    },
    "seed": {
      "type": "string",
      "description": "Random seed"
    },
    "style": {
      "type": "string",
      "description": "Visual style"
    },
    "hexSize": {
      "type": "number",
      "description": "Hex size in pixels (default: 30)"
    }
  },
  "required": [
    "game"
  ]
}
🟢hex_get_info(q, r, game, seed)

Get info about a specific hex coordinate (terrain, neighbours, distance)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "q": {
      "type": "number",
      "description": "Hex Q coordinate (column)"
    },
    "r": {
      "type": "number",
      "description": "Hex R coordinate (row)"
    },
    "game": {
      "type": "string",
      "description": "Game context for terrain lookup"
    },
    "seed": {
      "type": "string",
      "description": "Map seed (to look up terrain from a generated map)"
    }
  },
  "required": [
    "q",
    "r"
  ]
}
🟢hex_compute_fov(q, r, range, game, seed)

Compute field of view from a hex position

Esquema de entrada

{
  "type": "object",
  "properties": {
    "q": {
      "type": "number",
      "description": "Origin Q coordinate"
    },
    "r": {
      "type": "number",
      "description": "Origin R coordinate"
    },
    "range": {
      "type": "number",
      "description": "Vision range in hexes"
    },
    "game": {
      "type": "string",
      "description": "Game context for obstacle lookup"
    },
    "seed": {
      "type": "string",
      "description": "Map seed"
    }
  },
  "required": [
    "q",
    "r",
    "range"
  ]
}
🟢hex_pathfind(startQ, startR, endQ, endR, game, ...)

Find shortest path between two hex coordinates

Esquema de entrada

{
  "type": "object",
  "properties": {
    "startQ": {
      "type": "number",
      "description": "Start Q"
    },
    "startR": {
      "type": "number",
      "description": "Start R"
    },
    "endQ": {
      "type": "number",
      "description": "End Q"
    },
    "endR": {
      "type": "number",
      "description": "End R"
    },
    "game": {
      "type": "string",
      "description": "Game context for movement costs"
    },
    "seed": {
      "type": "string",
      "description": "Map seed"
    }
  },
  "required": [
    "startQ",
    "startR",
    "endQ",
    "endR"
  ]
}
🟢play_list_families

List all playable game families supported by the engine (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game)

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟡play_list_variants(family)

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".

Esquema de entrada

{
  "type": "object",
  "properties": {
    "family": {
      "type": "string",
      "description": "Game family (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game)"
    }
  },
  "required": [
    "family"
  ]
}
🟢play_get_definition(family, variant)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "family": {
      "type": "string",
      "description": "Game family (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game)"
    },
    "variant": {
      "type": "string",
      "description": "Variant slug (default: standard)"
    }
  },
  "required": [
    "family"
  ]
}
🟡play_create_game(family, variant, rngSeed)

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".

Esquema de entrada

{
  "type": "object",
  "properties": {
    "family": {
      "type": "string",
      "description": "Game family name (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game)"
    },
    "variant": {
      "type": "string",
      "description": "Variant slug, optionally with flags (e.g. \"grand\", \"grand+random\", \"standard+drops\")"
    },
    "rngSeed": {
      "type": "number",
      "description": "Optional RNG seed for deterministic games"
    }
  },
  "required": [
    "family"
  ]
}
🟡play_get_moves(state)

Get all legal moves for the current position. Requires state from play_create_game or play_apply_move.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object returned by play_create_game or play_apply_move"
    }
  },
  "required": [
    "state"
  ]
}
🟢play_apply_move(state, 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"}).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or a previous play_apply_move"
    },
    "move": {
      "type": "object",
      "description": "Move object from play_get_moves (e.g. {from:\"e2\",to:\"e4\"} for chess, {coord:40} for go, {action:\"pass\"})"
    }
  },
  "required": [
    "state",
    "move"
  ]
}
🟢play_check_status(state)

Check the current game status: whose turn it is, whether the game is over, and who won.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or play_apply_move"
    }
  },
  "required": [
    "state"
  ]
}
⚪play_suggest_move(state, difficulty)

Use AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 10 playable families.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or play_apply_move"
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "beginner",
        "easy",
        "medium",
        "hard",
        "expert"
      ],
      "description": "AI difficulty level (default: medium)"
    }
  },
  "required": [
    "state"
  ]
}
⚪play_render_board(state, highlights, size)

Render the current board position as SVG for any playable family (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or play_apply_move"
    },
    "highlights": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer"
          },
          "color": {
            "type": "string"
          }
        }
      },
      "description": "Optional cells to highlight (e.g. [{key: 52, color: \"#ff0\"}])"
    },
    "size": {
      "type": "integer",
      "description": "Board width in pixels for PNG output (default: 480, max: 2048)"
    }
  },
  "required": [
    "state"
  ]
}
⚪play_export_fen(state)

Export the current board position as a FEN-style notation string. Works for all 10 families (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or play_apply_move"
    }
  },
  "required": [
    "state"
  ]
}
🟡play_load_fen(family, fen, variant)

Create a game state from a FEN-style position string. Works for all 10 families.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "family": {
      "type": "string",
      "description": "Game family (chess, draughts, go, reversi, shogi, xiangqi, mancala, morris, hex, landlords-game)"
    },
    "fen": {
      "type": "string",
      "description": "Position string in FEN-style notation for the family"
    },
    "variant": {
      "type": "string",
      "description": "Optional variant slug"
    }
  },
  "required": [
    "family",
    "fen"
  ]
}
🟢play_validate_move(state, 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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or play_apply_move"
    },
    "move": {
      "type": "object",
      "description": "Move object to validate (same format as play_get_moves output)"
    }
  },
  "required": [
    "state",
    "move"
  ]
}
🟢play_make_moves(state, 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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Game state object from play_create_game or play_apply_move"
    },
    "moves": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Array of move objects in the format returned by play_get_moves"
    }
  },
  "required": [
    "state",
    "moves"
  ]
}
🟢rules_list_games(category, complexity, mechanic, status)

List all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "Filter by type (standalone, hub, classic, rpg, component, platform, mod, game)"
    },
    "complexity": {
      "type": "string",
      "enum": [
        "simple",
        "moderate",
        "complex"
      ],
      "description": "Filter by complexity level"
    },
    "mechanic": {
      "type": "string",
      "description": "Filter by mechanic (e.g. dice, capture, hex, oracle, narrative)"
    },
    "status": {
      "type": "string",
      "enum": [
        "live",
        "alpha",
        "playtest"
      ],
      "description": "Filter by status (default: all)"
    }
  }
}
🟢rules_get_game(game)

Get full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game slug (e.g. chess, dnd-5e, catan)"
    }
  },
  "required": [
    "game"
  ]
}
🟢rules_get_game_meta(game)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game slug (e.g. chess, backgammon, cairn)"
    }
  },
  "required": [
    "game"
  ]
}
🟢rules_get_page(game, section, 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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game slug (e.g. cairn, dnd-5e)"
    },
    "section": {
      "type": "string",
      "description": "Section name (e.g. rules, classes, spells). Default: rules"
    },
    "page": {
      "type": "string",
      "description": "Page slug (e.g. character-creation, combat-and-difficulty)"
    }
  },
  "required": [
    "game",
    "page"
  ]
}
🟢rules_get_variant_list(game, playable, topology)

List all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game slug (e.g. chess, backgammon, draughts)"
    },
    "playable": {
      "type": "boolean",
      "description": "Filter to only engine-playable variants"
    },
    "topology": {
      "type": "string",
      "description": "Filter by board topology (grid, hex, track, graph, tableau)"
    }
  },
  "required": [
    "game"
  ]
}
🟢rules_get_diagram(game, variant)

Get board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game family slug (e.g. chess, go, agon)"
    },
    "variant": {
      "type": "string",
      "description": "Variant slug (default: standard)"
    }
  },
  "required": [
    "game"
  ]
}
🟢rules_get_variant(game, variant)

Get rules for a specific game variant

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game slug"
    },
    "variant": {
      "type": "string",
      "description": "Variant slug"
    }
  },
  "required": [
    "game",
    "variant"
  ]
}
🟢rules_search(query, game, sectionType, limit)

Full-text search across all published rulebooks. Returns section-typed results with deep-link anchors.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query"
    },
    "game": {
      "type": "string",
      "description": "Limit to specific game slug"
    },
    "sectionType": {
      "type": "string",
      "description": "Filter by section type (general, board, pieces, setup, movement, capture, winning, special, variants)"
    },
    "limit": {
      "type": "number",
      "description": "Max results (default 10)"
    }
  },
  "required": [
    "query"
  ]
}
🟢rules_random(players, maxDuration)

Get a random game suggestion from the library

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "number",
      "description": "Number of players available"
    },
    "maxDuration": {
      "type": "number",
      "description": "Maximum game duration in minutes"
    }
  }
}
🟢board_gallery_search(query, limit)

Search the board gallery (334 rendered board layouts across 33 game families)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search term (e.g. \"8x8\", \"hex\", \"shogi\")"
    },
    "limit": {
      "type": "number",
      "description": "Max results (default 10)"
    }
  }
}
🟢board_gallery_get(board)

Get details of a specific board layout by ID

Esquema de entrada

{
  "type": "object",
  "properties": {
    "board": {
      "type": "string",
      "description": "Board ID or name"
    }
  },
  "required": [
    "board"
  ]
}
🟢tile_gallery_search(query)

Search hex tile sets by name, game, or terrain type

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search term (omit to list all)"
    }
  }
}
🟡tile_gallery_get(set)

Get details of a specific tile set with all tile types

Esquema de entrada

{
  "type": "object",
  "properties": {
    "set": {
      "type": "string",
      "description": "Tile set ID or name"
    }
  },
  "required": [
    "set"
  ]
}
🟢tile_gallery_stats

Get statistics about available tile sets

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢board_gallery_stats

Get statistics about the board gallery (total boards, families, topologies)

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟡piece_gallery_search(query, family, limit)

Search the piece set gallery by name, style, or game type

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search term (e.g. \"staunton\", \"pixel\", \"shogi\")"
    },
    "family": {
      "type": "string",
      "description": "Filter by game family (chess, shogi, xiangqi, draughts, go, etc)"
    },
    "limit": {
      "type": "number",
      "description": "Max results (default 10)"
    }
  },
  "required": [
    "query"
  ]
}
🟡piece_gallery_get_set(set)

Get full details and piece list for a specific set

Esquema de entrada

{
  "type": "object",
  "properties": {
    "set": {
      "type": "string",
      "description": "Set name or ID"
    }
  },
  "required": [
    "set"
  ]
}
🟢piece_gallery_stats

Get statistics about the piece gallery (total sets, styles, authors, game families)

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢oracle_list_games

List all supported RPG systems with oracle tables and entity data availability

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
⚪rpg_chargen(system, level, class)

Generate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "RPG system (dnd-5e, pathfinder-1e, ironsworn, starforged, cairn, knave, maze-rats, dungeon-world)"
    },
    "level": {
      "type": "number",
      "description": "Character level (default: 1)"
    },
    "class": {
      "type": "string",
      "description": "Class preference (omit for random)"
    }
  },
  "required": [
    "system"
  ]
}
⚪oracle_roll(system, table)

Roll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "RPG system slug (ironsworn, starforged, maze-rats, cairn, knave, fate-core)"
    },
    "table": {
      "type": "string",
      "description": "Specific table name (omit for random)"
    }
  },
  "required": [
    "system"
  ]
}
🟢oracle_list_tables(system)

List available oracle tables for a system

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "RPG system slug"
    }
  },
  "required": [
    "system"
  ]
}
⚪oracle_ask(question, likelihood)

Ask the oracle a yes/no question with likelihood modifier

Esquema de entrada

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "description": "Yes/no question"
    },
    "likelihood": {
      "type": "string",
      "enum": [
        "certain",
        "likely",
        "even",
        "unlikely",
        "impossible"
      ],
      "description": "How likely is yes? (default: even)"
    }
  },
  "required": [
    "question"
  ]
}
⚪oracle_scene(system, recipe, region, type)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "RPG system slug (default: ironsworn)"
    },
    "recipe": {
      "type": "string",
      "description": "Recipe ID (from oracle_list_recipes) — rolls each table in the recipe"
    },
    "region": {
      "type": "string",
      "enum": [
        "terminus",
        "outlands",
        "expanse"
      ],
      "description": "Region for Starforged region-aware recipes"
    },
    "type": {
      "type": "string",
      "enum": [
        "location",
        "npc",
        "event",
        "combat"
      ],
      "description": "Scene type for random mode (default: event)"
    }
  }
}
🟢rpg_search_entities(query, system, game, category, limit)

Search RPG entities (spells, monsters, classes, items) across all systems

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search term"
    },
    "system": {
      "type": "string",
      "description": "Limit to system (dnd-5e, pathfinder-1e, etc)"
    },
    "game": {
      "type": "string",
      "description": "Alias for system"
    },
    "category": {
      "type": "string",
      "description": "Entity category (spell, monster, class, item)"
    },
    "limit": {
      "type": "number",
      "description": "Max results (default 10)"
    }
  },
  "required": [
    "query"
  ]
}
🟢rpg_get_entity(name, system, game, category)

Get full details of a specific RPG entity by name

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Entity name"
    },
    "system": {
      "type": "string",
      "description": "System slug"
    },
    "game": {
      "type": "string",
      "description": "Alias for system"
    },
    "category": {
      "type": "string",
      "description": "Category filter (spells, monsters, classes, etc)"
    }
  },
  "required": [
    "name"
  ]
}
⚪rpg_random_encounter(system, difficulty, type)

Generate a random encounter for a system and difficulty level

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "System slug (default: dnd-5e)"
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "easy",
        "medium",
        "hard",
        "deadly"
      ],
      "description": "Encounter difficulty"
    },
    "type": {
      "type": "string",
      "description": "Monster type filter (beast, undead, fiend, dragon, etc)"
    }
  }
}
⚪rpg_browse_category(system, game, category, page, pageSize)

Browse entities by category with pagination

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "System slug"
    },
    "game": {
      "type": "string",
      "description": "Alias for system"
    },
    "category": {
      "type": "string",
      "description": "Category (spell, monster, class, item, feat, etc)"
    },
    "page": {
      "type": "number",
      "description": "Page number (default 1)"
    },
    "pageSize": {
      "type": "number",
      "description": "Items per page (default 20)"
    }
  },
  "required": [
    "system",
    "category"
  ]
}
⚪rpg_loot(system, tier, count)

Generate random loot/treasure for a system and tier

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "description": "System slug (default: dnd-5e)"
    },
    "tier": {
      "type": "string",
      "enum": [
        "minor",
        "major",
        "legendary"
      ],
      "description": "Loot tier (default: minor)"
    },
    "count": {
      "type": "number",
      "description": "Number of items (default 3)"
    }
  }
}
🟢oracle_list_recipes(game)

List all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Filter by game system (omit for all)"
    }
  }
}
⚪oracle_interpret(result, source_table, game)

Resolve oracle cross-references. Given a result like "Action + Theme", follows references and returns expanded results

Esquema de entrada

{
  "type": "object",
  "properties": {
    "result": {
      "type": "string",
      "description": "Oracle result text to interpret"
    },
    "source_table": {
      "type": "string",
      "description": "Table ID the result came from"
    },
    "game": {
      "type": "string",
      "description": "Game system (default: starforged)"
    }
  },
  "required": [
    "result"
  ]
}
🟢oracle_table_view(table, game)

View the complete contents of an oracle table — all entries with roll ranges

Esquema de entrada

{
  "type": "object",
  "properties": {
    "table": {
      "type": "string",
      "description": "Table ID to view"
    },
    "game": {
      "type": "string",
      "description": "Game system (default: starforged)"
    }
  },
  "required": [
    "table"
  ]
}
⚪oracle_encounter(system, party_level, party_size, difficulty, monster_type, ...)

Generate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "system": {
      "type": "string",
      "enum": [
        "dnd-5e",
        "pathfinder-1e"
      ],
      "description": "Game system (default: dnd-5e)"
    },
    "party_level": {
      "type": "number",
      "description": "Average party level 1-20 (default: 5)"
    },
    "party_size": {
      "type": "number",
      "description": "Number of players 1-10 (default: 4)"
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "easy",
        "medium",
        "hard",
        "deadly"
      ],
      "description": "Encounter difficulty (default: medium)"
    },
    "monster_type": {
      "type": "string",
      "description": "Filter by type (undead, dragon, beast, etc)"
    },
    "terrain": {
      "type": "string",
      "description": "Terrain type (omit for random)"
    }
  }
}
🟢rpg_list_categories(game, system)

List entity categories for an RPG system (spells, monsters, classes, equipment, etc)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game system slug (omit for all systems)"
    },
    "system": {
      "type": "string",
      "description": "Alias for game"
    }
  }
}
🟢rpg_random(game, system, category, count)

Get random entities from an RPG system for inspiration or encounter prep

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game system slug"
    },
    "system": {
      "type": "string",
      "description": "Alias for game"
    },
    "category": {
      "type": "string",
      "description": "Category to draw from (omit for any)"
    },
    "count": {
      "type": "number",
      "description": "Number of random picks 1-10 (default: 1)"
    }
  },
  "required": [
    "game"
  ]
}
⚪ti4_random_factions(players, expansions)

Generate random faction assignments for Twilight Imperium 4th Edition

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "number",
      "description": "Number of players (3-8)"
    },
    "expansions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Expansion filter (e.g. [\"base\",\"pok\"]). Default: all"
    }
  },
  "required": [
    "players"
  ]
}
⚪ti4_draft_factions(players, choices, expansions)

Milty-style TI4 draft with pick pools per player

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "number",
      "description": "Number of players (3-8, default: 6)"
    },
    "choices": {
      "type": "number",
      "description": "Factions per player to choose from (default: 3)"
    },
    "expansions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Expansion filter (e.g. [\"base\",\"pok\"]). Default: all"
    }
  }
}
🟢ti4_list_factions(expansions)

List all TI4 factions with colors, flags, and expansion info

Esquema de entrada

{
  "type": "object",
  "properties": {
    "expansions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Filter by expansion (e.g. [\"base\",\"pok\"]). Default: all"
    }
  }
}
⚪ti4_draw_objectives(stage, count, expansions)

Draw random public objectives for TI4

Esquema de entrada

{
  "type": "object",
  "properties": {
    "stage": {
      "type": "number",
      "enum": [
        1,
        2
      ],
      "description": "Stage 1 or 2 (default: both)"
    },
    "count": {
      "type": "number",
      "description": "Number to draw (default: 5)"
    },
    "expansions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Expansion filter"
    }
  }
}
⚪ti4_draw_agendas(count, type, expansions)

Draw random agenda cards for TI4 political phase

Esquema de entrada

{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number to draw (default: 2)"
    },
    "type": {
      "type": "string",
      "enum": [
        "law",
        "directive"
      ],
      "description": "Filter by type"
    },
    "expansions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Expansion filter"
    }
  }
}
⚪nukes_setup_generator(players)

Generate random territory/resource setup for a Nukes game

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "number",
      "description": "Number of players (2-6, default: 2)"
    }
  }
}
⚪game_nukes_combat(attacker, defender, terrain)

Resolve a Nukes combat encounter between units

Esquema de entrada

{
  "type": "object",
  "properties": {
    "attacker": {
      "type": "string",
      "description": "Attacking unit type"
    },
    "defender": {
      "type": "string",
      "description": "Defending unit type"
    },
    "terrain": {
      "type": "string",
      "description": "Terrain type (plains, forest, mountain, urban)"
    }
  },
  "required": [
    "attacker",
    "defender"
  ]
}
🟢colony_dice_odds(numbers)

Calculate settlement dice probability for Colony/Catan-style resource numbers

Esquema de entrada

{
  "type": "object",
  "properties": {
    "numbers": {
      "type": "string",
      "description": "Settlement numbers, comma-separated (e.g. \"5,6,8,9\")"
    }
  },
  "required": [
    "numbers"
  ]
}
🟡game_deck_create(type, draw, hands, per_hand)

Create, shuffle, and optionally draw/deal from a card deck

Esquema de entrada

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "standard-52",
        "bavarian-32",
        "hanafuda-48",
        "mahjong-136",
        "dominoes-28",
        "standard-dice"
      ],
      "description": "Deck type (default: standard-52)"
    },
    "draw": {
      "type": "number",
      "description": "Number of cards to draw"
    },
    "hands": {
      "type": "number",
      "description": "Deal into N hands"
    },
    "per_hand": {
      "type": "number",
      "description": "Cards per hand (default: 5)"
    }
  }
}
🟢game_deck_list_types

List all available deck types with metadata

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
⚪game_deck_deal(cards, hands, per_hand, draw)

Shuffle and deal a custom deck of arbitrary named cards

Esquema de entrada

{
  "type": "object",
  "properties": {
    "cards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "quantity": {
            "type": "number",
            "default": 1
          }
        },
        "required": [
          "name"
        ]
      },
      "description": "Cards in the deck (name + optional quantity)"
    },
    "hands": {
      "type": "number",
      "description": "Deal into N hands (default: 1 = draw pile only)"
    },
    "per_hand": {
      "type": "number",
      "description": "Cards per hand (default: 5)"
    },
    "draw": {
      "type": "number",
      "description": "Draw N cards from the top instead of dealing hands"
    }
  },
  "required": [
    "cards"
  ]
}
⚪game_score_tracker(players, scores, game)

Track scores for players in any game

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Player names"
    },
    "scores": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "Scores (default: all 0)"
    },
    "game": {
      "type": "string",
      "description": "Game name"
    }
  },
  "required": [
    "players"
  ]
}
🟡talisman_draw_characters(count)

Draw random characters from the Talisman 4e (revised) base set for a character lottery

Esquema de entrada

{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of characters to draw (2-6, default: 4)"
    }
  }
}
⚪talisman_draw_encounter(ring)

Draw a random encounter for a Talisman ring (outer, middle, inner, crown)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "ring": {
      "type": "string",
      "enum": [
        "outer",
        "middle",
        "inner",
        "crown"
      ],
      "description": "Ring to draw from (default: outer)"
    }
  }
}
🟢jam_status

Get the current Mod Jam status (active jam, deadline, submissions)

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢jam_timer

Get time remaining in the current Mod Jam

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢jam_vote

Get voting status for the current Mod Jam

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
⚪dice_roll(notation, expression, count)

Roll dice using standard notation (e.g. 2d6+3, 4d8, d20). Supports comma-separated pools and keep-high/low (4d6kh3).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "notation": {
      "type": "string",
      "description": "Dice notation (e.g. 2d6+3, 4d6kh3, 3d8,1d12+2)"
    },
    "expression": {
      "type": "string",
      "description": "Alias for notation"
    },
    "count": {
      "type": "number",
      "description": "Number of times to roll (default 1)"
    }
  }
}
🟢coin_flip(count, choices)

Flip one or more coins, or pick from a list of choices

Esquema de entrada

{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of coins (default 1)"
    },
    "choices": {
      "type": "string",
      "description": "Comma-separated options to pick from (overrides coin flip)"
    }
  }
}
⚪team_split(players, members, count, teams)

Randomly divide players into teams

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Player names"
    },
    "members": {
      "type": "string",
      "description": "Comma-separated names (alternative to array)"
    },
    "count": {
      "type": "number",
      "description": "Number of teams (default 2)"
    },
    "teams": {
      "type": "number",
      "description": "Alias for count"
    }
  },
  "required": [
    "players"
  ]
}
🟢random_player_order(players)

Randomise turn order for a list of players

Esquema de entrada

{
  "type": "object",
  "properties": {
    "players": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Player names"
    }
  },
  "required": [
    "players"
  ]
}
🟢timer_suggest(game, players)

Suggest time controls for a game based on player count and complexity

Esquema de entrada

{
  "type": "object",
  "properties": {
    "game": {
      "type": "string",
      "description": "Game name"
    },
    "players": {
      "type": "number",
      "description": "Number of players"
    }
  },
  "required": [
    "game"
  ]
}
⚪game_jam_theme(count)

Generate a random game jam theme combining mechanics and themes

Esquema de entrada

{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Number of themes to generate (default 3)"
    }
  }
}
🟢dice_odds(expression, target, comparison)

Calculate probability of meeting a target with a dice expression. Supports keep-high/low (4d6kh3).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string",
      "description": "Dice expression (e.g. 2d6, 4d6kh3)"
    },
    "target": {
      "type": "number",
      "description": "Target number to meet or exceed"
    },
    "comparison": {
      "type": "string",
      "enum": [
        ">=",
        ">",
        "<=",
        "<",
        "="
      ],
      "description": "Comparison (default >=)"
    }
  },
  "required": [
    "expression",
    "target"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada89 herramientas
verificadoversión no registrada89 herramientas