Pedagogical chess intelligence for AI agents: explain positions and games for a target Elo.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional Bearer API key for prepaid access. Omit for x402 (HTTP 402 then pay).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Analyze a user-requested alternative at a mainline decision point: legal SAN validation, Stockfish continuation, Maia naturalness, teaching point, and annotated RAV PGN (read-only).
Requested alternative in SAN — never auto-substituted
Full game PGN (or use analysis_id from a prior storyboard)
Mainline ply of the played move (decision point)
Human move label e.g. 17...Be6 or 24.Rxd4
Stored analysis id when PGN is omitted
Time/depth budget profile
Max continuation plies
Analyze a user-requested alternative at a mainline decision point: legal SAN validation, Stockfish continuation, Maia naturalness, teaching point, and annotated RAV PGN (read-only).
| Argument | Type | Description |
|---|---|---|
| pgn | string | Full game PGN (or use analysis_id from a prior storyboard) |
| anchor_ply | integer | Mainline ply of the played move (decision point) |
| move_label | string | Human move label e.g. 17...Be6 or 24.Rxd4 |
| target_elo* | integer | |
| analysis_id | string | Stored analysis id when PGN is omitted |
| engine_depth | integer | |
| analysis_profile | string | Time/depth budget profile |
| max_branch_plies | integer | Max continuation plies |
| alternative_move_san* | string | Requested alternative in SAN — never auto-substituted |
{
"type": "object",
"required": [
"alternative_move_san",
"target_elo"
],
"properties": {
"pgn": {
"type": "string",
"description": "Full game PGN (or use analysis_id from a prior storyboard)"
},
"anchor_ply": {
"type": "integer",
"description": "Mainline ply of the played move (decision point)"
},
"move_label": {
"type": "string",
"description": "Human move label e.g. 17...Be6 or 24.Rxd4"
},
"target_elo": {
"type": "integer",
"maximum": 3500,
"minimum": 400
},
"analysis_id": {
"type": "string",
"description": "Stored analysis id when PGN is omitted"
},
"engine_depth": {
"type": "integer",
"maximum": 20,
"minimum": 4
},
"analysis_profile": {
"enum": [
"fast",
"chatgpt",
"standard",
"deep"
],
"type": "string",
"description": "Time/depth budget profile"
},
"max_branch_plies": {
"type": "integer",
"maximum": 16,
"minimum": 2,
"description": "Max continuation plies"
},
"alternative_move_san": {
"type": "string",
"description": "Requested alternative in SAN — never auto-substituted"
}
}
}Build a verified Elo-aware game storyboard: opening, story arc, ranked moments, branches, and main lesson. Read-only analysis — does not modify user files or external systems.
| Argument | Type | Description |
|---|---|---|
| pgn* | string | Full game PGN |
| language | string | Output language (e.g. en) |
| target_elo* | integer | Learner Elo rating |
| max_moments | integer | Maximum storyboard chapters |
| engine_depth | integer | Stockfish depth for deep analysis |
| output_format | string | Return annotated PGN, JSON storyboard, or both (default both). |
| shallow_depth | integer | Stockfish depth for selective shallow scan (defaults to min(engine_depth, 10)) |
| include_rendered_story | boolean | Include accessible recap prose |
Compare candidate moves at a position for a learner (read-only analysis).
| Argument | Type | Description |
|---|---|---|
| fen* | string | Position FEN |
| moves* | array | Candidate moves in SAN |
| target_elo* | integer | Learner Elo rating |
{
"type": "object",
"required": [
"fen",
"moves",
"target_elo"
],
"properties": {
"fen": {
"type": "string",
"description": "Position FEN"
},
"moves": {
"type": "array",
"items": {
"type": "string"
},
"description": "Candidate moves in SAN"
},
"target_elo": {
"type": "integer",
"maximum": 3500,
"minimum": 400,
"description": "Learner Elo rating"
}
}
}Legacy alias for build_game_storyboard — Elo-aware game storyboard (read-only analysis; does not write files).
| Argument | Type | Description |
|---|---|---|
| pgn* | string | Full game PGN |
| verbosity | string | Storyboard chapter count: minimal (~3), standard (~5), detailed (~8). |
| target_elo* | integer | Learner Elo rating |
{
"type": "object",
"required": [
"pgn",
"target_elo"
],
"properties": {
"pgn": {
"type": "string",
"description": "Full game PGN"
},
"verbosity": {
"enum": [
"minimal",
"standard",
"detailed"
],
"type": "string",
"description": "Storyboard chapter count: minimal (~3), standard (~5), detailed (~8)."
},
"target_elo": {
"type": "integer",
"maximum": 3500,
"minimum": 400,
"description": "Learner Elo rating"
}
}
}Explain a single position for a target learner Elo (read-only analysis).
| Argument | Type | Description |
|---|---|---|
| fen* | string | Position FEN |
| target_elo* | integer | Learner Elo rating |
{
"type": "object",
"required": [
"fen",
"target_elo"
],
"properties": {
"fen": {
"type": "string",
"description": "Position FEN"
},
"target_elo": {
"type": "integer",
"maximum": 3500,
"minimum": 400,
"description": "Learner Elo rating"
}
}
}Legacy alias for build_game_storyboard — ranked storyboard chapters from a PGN (read-only analysis).
| Argument | Type | Description |
|---|---|---|
| pgn* | string | Full game PGN |
| verbosity | string | Storyboard chapter count: minimal (~3), standard (~5), detailed (~8). |
| target_elo* | integer | Learner Elo rating |
{
"type": "object",
"required": [
"pgn",
"target_elo"
],
"properties": {
"pgn": {
"type": "string",
"description": "Full game PGN"
},
"verbosity": {
"enum": [
"minimal",
"standard",
"detailed"
],
"type": "string",
"description": "Storyboard chapter count: minimal (~3), standard (~5), detailed (~8)."
},
"target_elo": {
"type": "integer",
"maximum": 3500,
"minimum": 400,
"description": "Learner Elo rating"
}
}
}{
"type": "object",
"required": [
"pgn",
"target_elo"
],
"properties": {
"pgn": {
"type": "string",
"description": "Full game PGN"
},
"language": {
"type": "string",
"default": "en",
"description": "Output language (e.g. en)"
},
"target_elo": {
"type": "integer",
"maximum": 3500,
"minimum": 400,
"description": "Learner Elo rating"
},
"max_moments": {
"type": "integer",
"default": 5,
"maximum": 12,
"minimum": 1,
"description": "Maximum storyboard chapters"
},
"engine_depth": {
"type": "integer",
"maximum": 24,
"minimum": 4,
"description": "Stockfish depth for deep analysis"
},
"output_format": {
"enum": [
"annotated_pgn",
"storyboard_json",
"both"
],
"type": "string",
"default": "both",
"description": "Return annotated PGN, JSON storyboard, or both (default both)."
},
"shallow_depth": {
"type": "integer",
"maximum": 20,
"minimum": 4,
"description": "Stockfish depth for selective shallow scan (defaults to min(engine_depth, 10))"
},
"include_rendered_story": {
"type": "boolean",
"default": true,
"description": "Include accessible recap prose"
}
}
}