Server definition
- Hash
- sha256:ba4e3e8d0c8b2d978e135767fb5f180a0723d45c69c4d4fc76594fe56de0a66a
- What it is
- What a remote MCP server returned when asked what it offers: 89 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Get details of a specific board layout by ID",
"inputSchema": {
"properties": {
"board": {
"description": "Board ID or name",
"type": "string"
}
},
"required": [
"board"
],
"type": "object"
},
"name": "board_gallery_get",
"outputSchema": null
},
{
"description": "Search the board gallery (335 rendered board layouts across 34 game families)",
"inputSchema": {
"properties": {
"limit": {
"description": "Max results (default 10)",
"type": "number"
},
"query": {
"description": "Search term (e.g. \"8x8\", \"hex\", \"shogi\")",
"type": "string"
}
},
"type": "object"
},
"name": "board_gallery_search",
"outputSchema": null
},
{
"description": "Get statistics about the board gallery (total boards, families, topologies)",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "board_gallery_stats",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_suggest_move] Analyse a chess position. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"depth": {
"type": "number"
},
"variant": {
"type": "string"
}
},
"type": "object"
},
"name": "chess_analyze_position",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"difficulty": {
"description": "Puzzle difficulty by rating: easy under 1200, medium 1200-1799, hard 1800 and above",
"enum": [
"easy",
"medium",
"hard"
],
"type": "string"
},
"theme": {
"description": "Puzzle theme (fork, pin, skewer, mateIn2, etc). Not every variant puzzle carries themes.",
"type": "string"
},
"variant": {
"description": "Chess variant play slug (e.g. almost-chess, benedict, fischer-random, king-of-the-hill, standard); a manifest key such as chess960 is also accepted. Returns only puzzles for this variant.",
"type": "string"
}
},
"type": "object"
},
"name": "chess_generate_puzzle",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_create_game + play_get_moves] Get legal moves for a chess position. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"variant": {
"type": "string"
}
},
"type": "object"
},
"name": "chess_get_legal_moves",
"outputSchema": null
},
{
"description": "[REMOVED — engine#98] Opening book resolution is broken in Worker context. No replacement.",
"inputSchema": {
"properties": {
"variant": {
"type": "string"
}
},
"type": "object"
},
"name": "chess_get_opening_book",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_check_status] Get chess game status. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"variant": {
"type": "string"
}
},
"type": "object"
},
"name": "chess_get_status",
"outputSchema": null
},
{
"description": "List available puzzle variants, themes, and per-variant counts from the puzzle pool",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "chess_list_puzzle_types",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_list_variants] List chess variants. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"group": {
"type": "string"
}
},
"type": "object"
},
"name": "chess_list_variants",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_apply_move] Apply a move to a chess game. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"move": {
"type": "object"
},
"variant": {
"type": "string"
}
},
"required": [
"move"
],
"type": "object"
},
"name": "chess_make_move",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_make_moves] Apply a sequence of chess moves. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"moves": {
"items": {
"type": "object"
},
"type": "array"
},
"variant": {
"type": "string"
}
},
"required": [
"moves"
],
"type": "object"
},
"name": "chess_make_moves",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_render_board] Render a chess position as SVG. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"fen": {
"description": "FEN position string",
"type": "string"
},
"highlights": {
"description": "Squares to highlight (e.g. [\"e2\",\"e4\"])",
"items": {
"type": "string"
},
"type": "array"
},
"variant": {
"type": "string"
}
},
"type": "object"
},
"name": "chess_render_svg",
"outputSchema": null
},
{
"description": "[DEPRECATED — use play_validate_move] Check if a chess move is legal. Removal: v1.0.0.",
"inputSchema": {
"properties": {
"move": {
"type": "object"
},
"variant": {
"type": "string"
}
},
"required": [
"move"
],
"type": "object"
},
"name": "chess_validate_move",
"outputSchema": null
},
{
"description": "Flip one or more coins, or pick from a list of choices",
"inputSchema": {
"properties": {
"choices": {
"description": "Comma-separated options to pick from (overrides coin flip)",
"type": "string"
},
"count": {
"description": "Number of coins (default 1)",
"type": "number"
}
},
"type": "object"
},
"name": "coin_flip",
"outputSchema": null
},
{
"description": "Calculate settlement dice probability for Colony/Catan-style resource numbers",
"inputSchema": {
"properties": {
"numbers": {
"description": "Settlement numbers, comma-separated (e.g. \"5,6,8,9\")",
"type": "string"
}
},
"required": [
"numbers"
],
"type": "object"
},
"name": "colony_dice_odds",
"outputSchema": null
},
{
"description": "Calculate probability of meeting a target with a dice expression. Supports keep-high/low (4d6kh3).",
"inputSchema": {
"properties": {
"comparison": {
"description": "Comparison (default >=)",
"enum": [
">=",
">",
"<=",
"<",
"="
],
"type": "string"
},
"expression": {
"description": "Dice expression (e.g. 2d6, 4d6kh3)",
"type": "string"
},
"target": {
"description": "Target number to meet or exceed",
"type": "number"
}
},
"required": [
"expression",
"target"
],
"type": "object"
},
"name": "dice_odds",
"outputSchema": null
},
{
"description": "Roll dice using standard notation (e.g. 2d6+3, 4d8, d20). Supports comma-separated pools and keep-high/low (4d6kh3).",
"inputSchema": {
"properties": {
"count": {
"description": "Number of times to roll (default 1)",
"type": "number"
},
"expression": {
"description": "Alias for notation",
"type": "string"
},
"notation": {
"description": "Dice notation (e.g. 2d6+3, 4d6kh3, 3d8,1d12+2)",
"type": "string"
}
},
"type": "object"
},
"name": "dice_roll",
"outputSchema": null
},
{
"description": "Create, shuffle, and optionally draw/deal from a card deck",
"inputSchema": {
"properties": {
"draw": {
"description": "Number of cards to draw",
"type": "number"
},
"hands": {
"description": "Deal into N hands",
"type": "number"
},
"per_hand": {
"description": "Cards per hand (default: 5)",
"type": "number"
},
"type": {
"description": "Deck type (default: standard-52)",
"enum": [
"standard-52",
"bavarian-32",
"hanafuda-48",
"mahjong-136",
"dominoes-28",
"standard-dice"
],
"type": "string"
}
},
"type": "object"
},
"name": "game_deck_create",
"outputSchema": null
},
{
"description": "Shuffle and deal a custom deck of arbitrary named cards",
"inputSchema": {
"properties": {
"cards": {
"description": "Cards in the deck (name + optional quantity)",
"items": {
"properties": {
"name": {
"type": "string"
},
"quantity": {
"default": 1,
"type": "number"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
},
"draw": {
"description": "Draw N cards from the top instead of dealing hands",
"type": "number"
},
"hands": {
"description": "Deal into N hands (default: 1 = draw pile only)",
"type": "number"
},
"per_hand": {
"description": "Cards per hand (default: 5)",
"type": "number"
}
},
"required": [
"cards"
],
"type": "object"
},
"name": "game_deck_deal",
"outputSchema": null
},
{
"description": "List all available deck types with metadata",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "game_deck_list_types",
"outputSchema": null
},
{
"description": "Generate a random game jam theme combining mechanics and themes",
"inputSchema": {
"properties": {
"count": {
"description": "Number of themes to generate (default 3)",
"type": "number"
}
},
"type": "object"
},
"name": "game_jam_theme",
"outputSchema": null
},
{
"description": "Resolve a Nukes combat encounter between units",
"inputSchema": {
"properties": {
"attacker": {
"description": "Attacking unit type",
"type": "string"
},
"defender": {
"description": "Defending unit type",
"type": "string"
},
"terrain": {
"description": "Terrain type (plains, forest, mountain, urban)",
"type": "string"
}
},
"required": [
"attacker",
"defender"
],
"type": "object"
},
"name": "game_nukes_combat",
"outputSchema": null
},
{
"description": "Track scores for players in any game",
"inputSchema": {
"properties": {
"game": {
"description": "Game name",
"type": "string"
},
"players": {
"description": "Player names",
"items": {
"type": "string"
},
"type": "array"
},
"scores": {
"description": "Scores (default: all 0)",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"players"
],
"type": "object"
},
"name": "game_score_tracker",
"outputSchema": null
},
{
"description": "Compute field of view from a hex position",
"inputSchema": {
"properties": {
"game": {
"description": "Game context for obstacle lookup",
"type": "string"
},
"q": {
"description": "Origin Q coordinate",
"type": "number"
},
"r": {
"description": "Origin R coordinate",
"type": "number"
},
"range": {
"description": "Vision range in hexes",
"type": "number"
},
"seed": {
"description": "Map seed",
"type": "string"
}
},
"required": [
"q",
"r",
"range"
],
"type": "object"
},
"name": "hex_compute_fov",
"outputSchema": null
},
{
"description": "Generate a hex map and export as SVG",
"inputSchema": {
"properties": {
"game": {
"description": "Game type",
"type": "string"
},
"hexSize": {
"description": "Hex size in pixels (default: 30)",
"type": "number"
},
"players": {
"description": "Number of players",
"type": "number"
},
"seed": {
"description": "Random seed",
"type": "string"
},
"size": {
"description": "Map size",
"type": "number"
},
"style": {
"description": "Visual style",
"type": "string"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "hex_export_svg",
"outputSchema": null
},
{
"description": "Generate a hex map for a specific game and player count",
"inputSchema": {
"properties": {
"game": {
"description": "Game type (nukes, colony, catan, age-of-steam, eclipse, twilight-imperium)",
"type": "string"
},
"players": {
"description": "Number of players (default: 2)",
"type": "number"
},
"seed": {
"description": "Random seed for reproducibility",
"type": "string"
},
"size": {
"description": "Map size (default: game default)",
"type": "number"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "hex_generate_map",
"outputSchema": null
},
{
"description": "Get info about a specific hex coordinate (terrain, neighbours, distance)",
"inputSchema": {
"properties": {
"game": {
"description": "Game context for terrain lookup",
"type": "string"
},
"q": {
"description": "Hex Q coordinate (column)",
"type": "number"
},
"r": {
"description": "Hex R coordinate (row)",
"type": "number"
},
"seed": {
"description": "Map seed (to look up terrain from a generated map)",
"type": "string"
}
},
"required": [
"q",
"r"
],
"type": "object"
},
"name": "hex_get_info",
"outputSchema": null
},
{
"description": "List all available hex map game types with configuration options",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "hex_list_games",
"outputSchema": null
},
{
"description": "Find shortest path between two hex coordinates",
"inputSchema": {
"properties": {
"endQ": {
"description": "End Q",
"type": "number"
},
"endR": {
"description": "End R",
"type": "number"
},
"game": {
"description": "Game context for movement costs",
"type": "string"
},
"seed": {
"description": "Map seed",
"type": "string"
},
"startQ": {
"description": "Start Q",
"type": "number"
},
"startR": {
"description": "Start R",
"type": "number"
}
},
"required": [
"startQ",
"startR",
"endQ",
"endR"
],
"type": "object"
},
"name": "hex_pathfind",
"outputSchema": null
},
{
"description": "Get the current Mod Jam status (active jam, deadline, submissions)",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "jam_status",
"outputSchema": null
},
{
"description": "Get time remaining in the current Mod Jam",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "jam_timer",
"outputSchema": null
},
{
"description": "Get voting status for the current Mod Jam",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "jam_vote",
"outputSchema": null
},
{
"description": "Generate random territory/resource setup for a Nukes game",
"inputSchema": {
"properties": {
"players": {
"description": "Number of players (2-6, default: 2)",
"type": "number"
}
},
"type": "object"
},
"name": "nukes_setup_generator",
"outputSchema": null
},
{
"description": "Ask the oracle a yes/no question with likelihood modifier",
"inputSchema": {
"properties": {
"likelihood": {
"description": "How likely is yes? (default: even)",
"enum": [
"certain",
"likely",
"even",
"unlikely",
"impossible"
],
"type": "string"
},
"question": {
"description": "Yes/no question",
"type": "string"
}
},
"required": [
"question"
],
"type": "object"
},
"name": "oracle_ask",
"outputSchema": null
},
{
"description": "Generate a tabletop RPG encounter with CR-appropriate monsters, terrain, and loot (D&D 5e or Pathfinder 1e)",
"inputSchema": {
"properties": {
"difficulty": {
"description": "Encounter difficulty (default: medium)",
"enum": [
"easy",
"medium",
"hard",
"deadly"
],
"type": "string"
},
"monster_type": {
"description": "Filter by type (undead, dragon, beast, etc)",
"type": "string"
},
"party_level": {
"description": "Average party level 1-20 (default: 5)",
"type": "number"
},
"party_size": {
"description": "Number of players 1-10 (default: 4)",
"type": "number"
},
"system": {
"description": "Game system (default: dnd-5e)",
"enum": [
"dnd-5e",
"pathfinder-1e"
],
"type": "string"
},
"terrain": {
"description": "Terrain type (omit for random)",
"type": "string"
}
},
"type": "object"
},
"name": "oracle_encounter",
"outputSchema": null
},
{
"description": "Resolve oracle cross-references. Given a result like \"Action + Theme\", follows references and returns expanded results",
"inputSchema": {
"properties": {
"game": {
"description": "Game system (default: starforged)",
"type": "string"
},
"result": {
"description": "Oracle result text to interpret",
"type": "string"
},
"source_table": {
"description": "Table ID the result came from",
"type": "string"
}
},
"required": [
"result"
],
"type": "object"
},
"name": "oracle_interpret",
"outputSchema": null
},
{
"description": "List all supported RPG systems with oracle tables and entity data availability",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "oracle_list_games",
"outputSchema": null
},
{
"description": "List all predefined scene recipes — curated multi-table compositions that produce coherent narrative prompts",
"inputSchema": {
"properties": {
"game": {
"description": "Filter by game system (omit for all)",
"type": "string"
}
},
"type": "object"
},
"name": "oracle_list_recipes",
"outputSchema": null
},
{
"description": "List available oracle tables for a system",
"inputSchema": {
"properties": {
"system": {
"description": "RPG system slug",
"type": "string"
}
},
"required": [
"system"
],
"type": "object"
},
"name": "oracle_list_tables",
"outputSchema": null
},
{
"description": "Roll on a random oracle table (Ironsworn, Starforged, Maze Rats, etc)",
"inputSchema": {
"properties": {
"system": {
"description": "RPG system slug (ironsworn, starforged, maze-rats, cairn, knave, fate-core)",
"type": "string"
},
"table": {
"description": "Specific table name (omit for random)",
"type": "string"
}
},
"required": [
"system"
],
"type": "object"
},
"name": "oracle_roll",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"recipe": {
"description": "Recipe ID (from oracle_list_recipes) — rolls each table in the recipe",
"type": "string"
},
"region": {
"description": "Region for Starforged region-aware recipes",
"enum": [
"terminus",
"outlands",
"expanse"
],
"type": "string"
},
"system": {
"description": "RPG system slug (default: ironsworn)",
"type": "string"
},
"type": {
"description": "Scene type for random mode (default: event)",
"enum": [
"location",
"npc",
"event",
"combat"
],
"type": "string"
}
},
"type": "object"
},
"name": "oracle_scene",
"outputSchema": null
},
{
"description": "View the complete contents of an oracle table — all entries with roll ranges",
"inputSchema": {
"properties": {
"game": {
"description": "Game system (default: starforged)",
"type": "string"
},
"table": {
"description": "Table ID to view",
"type": "string"
}
},
"required": [
"table"
],
"type": "object"
},
"name": "oracle_table_view",
"outputSchema": null
},
{
"description": "Get full details and piece list for a specific set",
"inputSchema": {
"properties": {
"set": {
"description": "Set name or ID",
"type": "string"
}
},
"required": [
"set"
],
"type": "object"
},
"name": "piece_gallery_get_set",
"outputSchema": null
},
{
"description": "Search the piece set gallery by name, style, or game type",
"inputSchema": {
"properties": {
"family": {
"description": "Filter by game family (chess, shogi, xiangqi, draughts, go, etc)",
"type": "string"
},
"limit": {
"description": "Max results (default 10)",
"type": "number"
},
"query": {
"description": "Search term (e.g. \"staunton\", \"pixel\", \"shogi\")",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "piece_gallery_search",
"outputSchema": null
},
{
"description": "Get statistics about the piece gallery (total sets, styles, authors, game families)",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "piece_gallery_stats",
"outputSchema": null
},
{
"description": "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\"}).",
"inputSchema": {
"properties": {
"move": {
"description": "Move object from play_get_moves (e.g. {from:\"e2\",to:\"e4\"} for chess, {coord:40} for go, {action:\"pass\"})",
"type": "object"
},
"state": {
"description": "Game state object from play_create_game or a previous play_apply_move",
"type": "object"
}
},
"required": [
"state",
"move"
],
"type": "object"
},
"name": "play_apply_move",
"outputSchema": null
},
{
"description": "Check the current game status: whose turn it is, whether the game is over, and who won.",
"inputSchema": {
"properties": {
"state": {
"description": "Game state object from play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state"
],
"type": "object"
},
"name": "play_check_status",
"outputSchema": null
},
{
"description": "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\".",
"inputSchema": {
"properties": {
"family": {
"description": "Game family name (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)",
"type": "string"
},
"rngSeed": {
"description": "Optional RNG seed for deterministic games",
"type": "number"
},
"variant": {
"description": "Variant slug, optionally with flags (e.g. \"grand\", \"grand+random\", \"standard+drops\")",
"type": "string"
}
},
"required": [
"family"
],
"type": "object"
},
"name": "play_create_game",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"state": {
"description": "Game state object from play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state"
],
"type": "object"
},
"name": "play_export_fen",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"family": {
"description": "Game 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)",
"type": "string"
},
"variant": {
"description": "Variant slug (default: the family's default game)",
"type": "string"
}
},
"required": [
"family"
],
"type": "object"
},
"name": "play_get_definition",
"outputSchema": null
},
{
"description": "Get all legal moves for the current position. Requires state from play_create_game or play_apply_move.",
"inputSchema": {
"properties": {
"state": {
"description": "Game state object returned by play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state"
],
"type": "object"
},
"name": "play_get_moves",
"outputSchema": null
},
{
"description": "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)",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "play_list_families",
"outputSchema": null
},
{
"description": "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\".",
"inputSchema": {
"properties": {
"family": {
"description": "Game 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)",
"type": "string"
}
},
"required": [
"family"
],
"type": "object"
},
"name": "play_list_variants",
"outputSchema": null
},
{
"description": "Create a game from a FEN-style setup string, as returned by play_export_fen. Pass the same variant the position was exported from.",
"inputSchema": {
"properties": {
"family": {
"description": "Game 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)",
"type": "string"
},
"fen": {
"description": "Position string in FEN-style notation for the family",
"type": "string"
},
"variant": {
"description": "Optional variant slug (default: the family's default game)",
"type": "string"
}
},
"required": [
"family",
"fen"
],
"type": "object"
},
"name": "play_load_fen",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"moves": {
"description": "Array of move objects in the format returned by play_get_moves",
"items": {
"type": "object"
},
"type": "array"
},
"state": {
"description": "Game state object from play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state",
"moves"
],
"type": "object"
},
"name": "play_make_moves",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"properties": {
"highlights": {
"description": "Optional cells to highlight (e.g. [{key: 52, color: \"#ff0\"}])",
"items": {
"properties": {
"color": {
"type": "string"
},
"key": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"size": {
"description": "Board width in pixels for PNG output (default: 480, max: 2048)",
"type": "integer"
},
"state": {
"description": "Game state object from play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state"
],
"type": "object"
},
"name": "play_render_board",
"outputSchema": null
},
{
"description": "Use AI to analyse the position and suggest the best move. Supports 5 difficulty levels across all 30 playable families.",
"inputSchema": {
"properties": {
"difficulty": {
"description": "AI difficulty level (default: medium)",
"enum": [
"beginner",
"easy",
"medium",
"hard",
"expert"
],
"type": "string"
},
"state": {
"description": "Game state object from play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state"
],
"type": "object"
},
"name": "play_suggest_move",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"move": {
"description": "Move object to validate (same format as play_get_moves output)",
"type": "object"
},
"state": {
"description": "Game state object from play_create_game or play_apply_move",
"type": "object"
}
},
"required": [
"state",
"move"
],
"type": "object"
},
"name": "play_validate_move",
"outputSchema": null
},
{
"description": "Randomise turn order for a list of players",
"inputSchema": {
"properties": {
"players": {
"description": "Player names",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"players"
],
"type": "object"
},
"name": "random_player_order",
"outputSchema": null
},
{
"description": "Browse entities by category with pagination",
"inputSchema": {
"properties": {
"category": {
"description": "Category (spell, monster, class, item, feat, etc)",
"type": "string"
},
"game": {
"description": "Alias for system",
"type": "string"
},
"page": {
"description": "Page number (default 1)",
"type": "number"
},
"pageSize": {
"description": "Items per page (default 20)",
"type": "number"
},
"system": {
"description": "System slug",
"type": "string"
}
},
"required": [
"system",
"category"
],
"type": "object"
},
"name": "rpg_browse_category",
"outputSchema": null
},
{
"description": "Generate a random character for an RPG system (D&D 5e, Pathfinder, Ironsworn, Cairn, Knave, etc)",
"inputSchema": {
"properties": {
"class": {
"description": "Class preference (omit for random)",
"type": "string"
},
"level": {
"description": "Character level (default: 1)",
"type": "number"
},
"system": {
"description": "RPG system (dnd-5e, pathfinder-1e, ironsworn, starforged, cairn, knave, maze-rats, dungeon-world)",
"type": "string"
}
},
"required": [
"system"
],
"type": "object"
},
"name": "rpg_chargen",
"outputSchema": null
},
{
"description": "Get full details of a specific RPG entity by name",
"inputSchema": {
"properties": {
"category": {
"description": "Category filter (spells, monsters, classes, etc)",
"type": "string"
},
"game": {
"description": "Alias for system",
"type": "string"
},
"name": {
"description": "Entity name",
"type": "string"
},
"system": {
"description": "System slug",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "rpg_get_entity",
"outputSchema": null
},
{
"description": "List entity categories for an RPG system (spells, monsters, classes, equipment, etc)",
"inputSchema": {
"properties": {
"game": {
"description": "Game system slug (omit for all systems)",
"type": "string"
},
"system": {
"description": "Alias for game",
"type": "string"
}
},
"type": "object"
},
"name": "rpg_list_categories",
"outputSchema": null
},
{
"description": "Generate random loot/treasure for a system and tier",
"inputSchema": {
"properties": {
"count": {
"description": "Number of items (default 3)",
"type": "number"
},
"system": {
"description": "System slug (default: dnd-5e)",
"type": "string"
},
"tier": {
"description": "Loot tier (default: minor)",
"enum": [
"minor",
"major",
"legendary"
],
"type": "string"
}
},
"type": "object"
},
"name": "rpg_loot",
"outputSchema": null
},
{
"description": "Get random entities from an RPG system for inspiration or encounter prep",
"inputSchema": {
"properties": {
"category": {
"description": "Category to draw from (omit for any)",
"type": "string"
},
"count": {
"description": "Number of random picks 1-10 (default: 1)",
"type": "number"
},
"game": {
"description": "Game system slug",
"type": "string"
},
"system": {
"description": "Alias for game",
"type": "string"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "rpg_random",
"outputSchema": null
},
{
"description": "Generate a random encounter for a system and difficulty level",
"inputSchema": {
"properties": {
"difficulty": {
"description": "Encounter difficulty",
"enum": [
"easy",
"medium",
"hard",
"deadly"
],
"type": "string"
},
"system": {
"description": "System slug (default: dnd-5e)",
"type": "string"
},
"type": {
"description": "Monster type filter (beast, undead, fiend, dragon, etc)",
"type": "string"
}
},
"type": "object"
},
"name": "rpg_random_encounter",
"outputSchema": null
},
{
"description": "Search RPG entities (spells, monsters, classes, items) across all systems",
"inputSchema": {
"properties": {
"category": {
"description": "Entity category (spell, monster, class, item)",
"type": "string"
},
"game": {
"description": "Alias for system",
"type": "string"
},
"limit": {
"description": "Max results (default 10)",
"type": "number"
},
"query": {
"description": "Search term",
"type": "string"
},
"system": {
"description": "Limit to system (dnd-5e, pathfinder-1e, etc)",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "rpg_search_entities",
"outputSchema": null
},
{
"description": "Get board diagram SVG URL for a game variant. Returns the diagram path, topology, and rendering metadata.",
"inputSchema": {
"properties": {
"game": {
"description": "Game family slug (e.g. chess, go, agon)",
"type": "string"
},
"variant": {
"description": "Variant slug (default: standard)",
"type": "string"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "rules_get_diagram",
"outputSchema": null
},
{
"description": "Get full rulebook content for a specific game (markdown). For metadata only, use rules_get_game_meta instead.",
"inputSchema": {
"properties": {
"game": {
"description": "Game slug (e.g. chess, dnd-5e, catan)",
"type": "string"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "rules_get_game",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"game": {
"description": "Game slug (e.g. chess, backgammon, cairn)",
"type": "string"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "rules_get_game_meta",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"game": {
"description": "Game slug (e.g. cairn, dnd-5e)",
"type": "string"
},
"page": {
"description": "Page slug (e.g. character-creation, combat-and-difficulty)",
"type": "string"
},
"section": {
"description": "Section name (e.g. rules, classes, spells). Default: rules",
"type": "string"
}
},
"required": [
"game",
"page"
],
"type": "object"
},
"name": "rules_get_page",
"outputSchema": null
},
{
"description": "Get rules for a specific game variant",
"inputSchema": {
"properties": {
"game": {
"description": "Game slug",
"type": "string"
},
"variant": {
"description": "Variant slug",
"type": "string"
}
},
"required": [
"game",
"variant"
],
"type": "object"
},
"name": "rules_get_variant",
"outputSchema": null
},
{
"description": "List all variants for a game with structured metadata (players, board, playable status, topology, engine config). Much richer than parsing the rulebook.",
"inputSchema": {
"properties": {
"game": {
"description": "Game slug (e.g. chess, backgammon, draughts)",
"type": "string"
},
"playable": {
"description": "Filter to only engine-playable variants",
"type": "boolean"
},
"topology": {
"description": "Filter by board topology (grid, hex, track, graph, tableau)",
"type": "string"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "rules_get_variant_list",
"outputSchema": null
},
{
"description": "List all available game rulebooks with metadata (players, duration, complexity, mechanics). Filterable by type, complexity, and mechanics.",
"inputSchema": {
"properties": {
"category": {
"description": "Filter by type (standalone, hub, classic, rpg, component, platform, mod, game)",
"type": "string"
},
"complexity": {
"description": "Filter by complexity level",
"enum": [
"simple",
"moderate",
"complex"
],
"type": "string"
},
"mechanic": {
"description": "Filter by mechanic (e.g. dice, capture, hex, oracle, narrative)",
"type": "string"
},
"status": {
"description": "Filter by status (default: all)",
"enum": [
"live",
"alpha",
"playtest"
],
"type": "string"
}
},
"type": "object"
},
"name": "rules_list_games",
"outputSchema": null
},
{
"description": "Get a random game suggestion from the library",
"inputSchema": {
"properties": {
"maxDuration": {
"description": "Maximum game duration in minutes",
"type": "number"
},
"players": {
"description": "Number of players available",
"type": "number"
}
},
"type": "object"
},
"name": "rules_random",
"outputSchema": null
},
{
"description": "Full-text search across all published rulebooks. Returns section-typed results with deep-link anchors.",
"inputSchema": {
"properties": {
"game": {
"description": "Limit to specific game slug",
"type": "string"
},
"limit": {
"description": "Max results (default 10)",
"type": "number"
},
"query": {
"description": "Search query",
"type": "string"
},
"sectionType": {
"description": "Filter by section type (general, board, pieces, setup, movement, capture, winning, special, variants)",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "rules_search",
"outputSchema": null
},
{
"description": "Draw random characters from the Talisman 4e (revised) base set for a character lottery",
"inputSchema": {
"properties": {
"count": {
"description": "Number of characters to draw (2-6, default: 4)",
"type": "number"
}
},
"type": "object"
},
"name": "talisman_draw_characters",
"outputSchema": null
},
{
"description": "Draw a random encounter for a Talisman ring (outer, middle, inner, crown)",
"inputSchema": {
"properties": {
"ring": {
"description": "Ring to draw from (default: outer)",
"enum": [
"outer",
"middle",
"inner",
"crown"
],
"type": "string"
}
},
"type": "object"
},
"name": "talisman_draw_encounter",
"outputSchema": null
},
{
"description": "Randomly divide players into teams",
"inputSchema": {
"properties": {
"count": {
"description": "Number of teams (default 2)",
"type": "number"
},
"members": {
"description": "Comma-separated names (alternative to array)",
"type": "string"
},
"players": {
"description": "Player names",
"items": {
"type": "string"
},
"type": "array"
},
"teams": {
"description": "Alias for count",
"type": "number"
}
},
"required": [
"players"
],
"type": "object"
},
"name": "team_split",
"outputSchema": null
},
{
"description": "Milty-style TI4 draft with pick pools per player",
"inputSchema": {
"properties": {
"choices": {
"description": "Factions per player to choose from (default: 3)",
"type": "number"
},
"expansions": {
"description": "Expansion filter (e.g. [\"base\",\"pok\"]). Default: all",
"items": {
"type": "string"
},
"type": "array"
},
"players": {
"description": "Number of players (3-8, default: 6)",
"type": "number"
}
},
"type": "object"
},
"name": "ti4_draft_factions",
"outputSchema": null
},
{
"description": "Draw random agenda cards for TI4 political phase",
"inputSchema": {
"properties": {
"count": {
"description": "Number to draw (default: 2)",
"type": "number"
},
"expansions": {
"description": "Expansion filter",
"items": {
"type": "string"
},
"type": "array"
},
"type": {
"description": "Filter by type",
"enum": [
"law",
"directive"
],
"type": "string"
}
},
"type": "object"
},
"name": "ti4_draw_agendas",
"outputSchema": null
},
{
"description": "Draw random public objectives for TI4",
"inputSchema": {
"properties": {
"count": {
"description": "Number to draw (default: 5)",
"type": "number"
},
"expansions": {
"description": "Expansion filter",
"items": {
"type": "string"
},
"type": "array"
},
"stage": {
"description": "Stage 1 or 2 (default: both)",
"enum": [
1,
2
],
"type": "number"
}
},
"type": "object"
},
"name": "ti4_draw_objectives",
"outputSchema": null
},
{
"description": "List all TI4 factions with colors, flags, and expansion info",
"inputSchema": {
"properties": {
"expansions": {
"description": "Filter by expansion (e.g. [\"base\",\"pok\"]). Default: all",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "ti4_list_factions",
"outputSchema": null
},
{
"description": "Generate random faction assignments for Twilight Imperium 4th Edition",
"inputSchema": {
"properties": {
"expansions": {
"description": "Expansion filter (e.g. [\"base\",\"pok\"]). Default: all",
"items": {
"type": "string"
},
"type": "array"
},
"players": {
"description": "Number of players (3-8)",
"type": "number"
}
},
"required": [
"players"
],
"type": "object"
},
"name": "ti4_random_factions",
"outputSchema": null
},
{
"description": "Get details of a specific tile set with all tile types",
"inputSchema": {
"properties": {
"set": {
"description": "Tile set ID or name",
"type": "string"
}
},
"required": [
"set"
],
"type": "object"
},
"name": "tile_gallery_get",
"outputSchema": null
},
{
"description": "Search hex tile sets by name, game, or terrain type",
"inputSchema": {
"properties": {
"query": {
"description": "Search term (omit to list all)",
"type": "string"
}
},
"type": "object"
},
"name": "tile_gallery_search",
"outputSchema": null
},
{
"description": "Get statistics about available tile sets",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "tile_gallery_stats",
"outputSchema": null
},
{
"description": "Suggest time controls for a game based on player count and complexity",
"inputSchema": {
"properties": {
"game": {
"description": "Game name",
"type": "string"
},
"players": {
"description": "Number of players",
"type": "number"
}
},
"required": [
"game"
],
"type": "object"
},
"name": "timer_suggest",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:ba4e3e8d0c8b2d978e135767fb5f180a0723d45c69c4d4fc76594fe56de0a66a | sha256sum