Tool tree
plymove.get_product_infoAnswer
Return concise facts about PlyMove (pedagogical chess intelligence): purpose, capabilities, inputs, and high-level access modes.
View tool JSON
{
"name": "plymove.get_product_info",
"kind": "answer",
"impl": "imperative",
"description": "Return concise facts about PlyMove (pedagogical chess intelligence): purpose, capabilities, inputs, and high-level access modes.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}plymove.get_access_infoAnswer
Return how to access PlyMove: MCP Streamable HTTP (API key or x402), REST endpoints with sync/async + poll contract, and the HTTP agent gateway. Never returns secrets.
View tool JSON
{
"name": "plymove.get_access_info",
"kind": "answer",
"impl": "imperative",
"description": "Return how to access PlyMove: MCP Streamable HTTP (API key or x402), REST endpoints with sync/async + poll contract, and the HTTP agent gateway. Never returns secrets.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}plymove.get_pricingAnswer
Return structured public pricing: prepaid pack ($10 → 1000 units), x402 at 1.5× unit price, per-tool units, and pricing_page URL. Prefer this over navigating for price facts.
View tool JSON
{
"name": "plymove.get_pricing",
"kind": "answer",
"impl": "imperative",
"description": "Return structured public pricing: prepaid pack ($10 → 1000 units), x402 at 1.5× unit price, per-tool units, and pricing_page URL. Prefer this over navigating for price facts.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}plymove.contact_salesSensitive Action
Submit a sales/API-access contact request via the same /api/contact backend as the human form.
View tool JSON
{
"name": "plymove.contact_sales",
"kind": "transact",
"impl": "imperative",
"description": "Submit a sales/API-access contact request via the same /api/contact backend as the human form.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Contact name",
"minLength": 1,
"maxLength": 120
},
"email": {
"type": "string",
"format": "email",
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
"description": "Business email",
"maxLength": 200
},
"company": {
"type": "string",
"description": "Company or project (optional)",
"maxLength": 160
},
"use_case": {
"type": "string",
"enum": [
"api",
"mcp",
"embedded",
"batch",
"volume",
"partnership",
"other"
],
"description": "Topic / use case"
},
"message": {
"type": "string",
"description": "Message body",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"name",
"email",
"use_case",
"message"
],
"additionalProperties": false
}
}page.navigateAction
Navigate within plymove.com to an allowed path. Cross-origin URLs are rejected. Optional hash via path like /docs#mcp is accepted at runtime when path is /docs.
View tool JSON
{
"name": "page.navigate",
"kind": "act",
"impl": "imperative",
"description": "Navigate within plymove.com to an allowed path. Cross-origin URLs are rejected. Optional hash via path like /docs#mcp is accepted at runtime when path is /docs.",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Site-relative path only. Allowed: /, /developers, /docs, /pricing, /contact, /status, /legal/privacy, /legal/terms. Optional hash (e.g. /docs#mcp).",
"pattern": "^/(|developers|docs|pricing|contact|status|legal/privacy|legal/terms)(#[\\w:-]+)?$"
}
},
"required": [
"path"
],
"additionalProperties": false
}
}page.scroll_to_sectionAction
Smooth-scroll the current page to a DOM element id (without #).
View tool JSON
{
"name": "page.scroll_to_section",
"kind": "act",
"impl": "imperative",
"description": "Smooth-scroll the current page to a DOM element id (without #).",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z][\\w:-]*$",
"description": "DOM element id, e.g. mcp, rest-api, buy-credits"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}plymove.open_developer_docsAction
Open PlyMove developer documentation (or pricing/developers/contact). Use get_pricing for price facts; use this to navigate humans/agents to docs sections.
View tool JSON
{
"name": "plymove.open_developer_docs",
"kind": "act",
"impl": "imperative",
"description": "Open PlyMove developer documentation (or pricing/developers/contact). Use get_pricing for price facts; use this to navigate humans/agents to docs sections.",
"inputSchema": {
"type": "object",
"properties": {
"section": {
"type": "string",
"enum": [
"getting-started",
"mcp",
"rest",
"payments",
"pricing",
"developers",
"contact",
"api"
],
"description": "Docs or site section to open"
}
},
"additionalProperties": false
}
}plymove.explain_positionAnswer
Sync: explain a chess position for a learner Elo (concepts, candidates, teaching value). Calls mcp.plymove.com. Paid (API key or x402). FEN required.
View tool JSON
{
"name": "plymove.explain_position",
"kind": "answer",
"impl": "imperative",
"description": "Sync: explain a chess position for a learner Elo (concepts, candidates, teaching value). Calls mcp.plymove.com. Paid (API key or x402). FEN required.",
"inputSchema": {
"type": "object",
"properties": {
"fen": {
"type": "string",
"minLength": 15,
"maxLength": 100,
"pattern": "^([rnbqkpRNBQKP1-8]+\\/){7}[rnbqkpRNBQKP1-8]+ [wb] ([KQkq]+|-) ([a-h][36]|-) \\d+ \\d+$",
"description": "Chess position in standard FEN (six fields: piece placement, active color, castling, en passant, halfmove, fullmove)."
},
"target_elo": {
"type": "integer",
"minimum": 400,
"maximum": 3500,
"description": "Target learner Elo (400–3500)."
}
},
"required": [
"fen",
"target_elo"
],
"additionalProperties": false
}
}plymove.compare_movesAnswer
Sync: compare candidate SAN moves from a FEN for a learner Elo. Calls mcp.plymove.com. Paid (API key or x402). Distinct from explain_position (multi-move comparison).
View tool JSON
{
"name": "plymove.compare_moves",
"kind": "answer",
"impl": "imperative",
"description": "Sync: compare candidate SAN moves from a FEN for a learner Elo. Calls mcp.plymove.com. Paid (API key or x402). Distinct from explain_position (multi-move comparison).",
"inputSchema": {
"type": "object",
"properties": {
"fen": {
"type": "string",
"minLength": 15,
"maxLength": 100,
"pattern": "^([rnbqkpRNBQKP1-8]+\\/){7}[rnbqkpRNBQKP1-8]+ [wb] ([KQkq]+|-) ([a-h][36]|-) \\d+ \\d+$",
"description": "Chess position in standard FEN (six fields: piece placement, active color, castling, en passant, halfmove, fullmove)."
},
"moves": {
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 10,
"pattern": "^(O-O(-O)?[+#]?|[NBRQK]?[a-h]?[1-8]?x?[a-h][1-8](=[NBRQ])?[+#]?)$",
"description": "One move in Standard Algebraic Notation (SAN), e.g. Nf3, exd5, O-O. Not UCI."
},
"minItems": 2,
"maxItems": 8,
"description": "Two or more candidate moves in SAN (not UCI)."
},
"target_elo": {
"type": "integer",
"minimum": 400,
"maximum": 3500,
"description": "Target learner Elo (400–3500)."
}
},
"required": [
"fen",
"moves",
"target_elo"
],
"additionalProperties": false
}
}plymove.find_teaching_momentsAnswer
Return ranked teaching moments for a full PGN (not full annotation). Core job is async; this WebMCP tool blocks until the MCP gateway returns the final moments list (no client-side job polling). Paid. Prefer explain_game for full annotated commentary.
View tool JSON
{
"name": "plymove.find_teaching_moments",
"kind": "answer",
"impl": "imperative",
"description": "Return ranked teaching moments for a full PGN (not full annotation). Core job is async; this WebMCP tool blocks until the MCP gateway returns the final moments list (no client-side job polling). Paid. Prefer explain_game for full annotated commentary.",
"inputSchema": {
"type": "object",
"properties": {
"pgn": {
"type": "string",
"minLength": 20,
"maxLength": 200000,
"description": "Full game in PGN (headers optional). Must include move text such as 1.e4 e5. Not a single FEN."
},
"target_elo": {
"type": "integer",
"minimum": 400,
"maximum": 3500,
"description": "Target learner Elo (400–3500)."
}
},
"required": [
"pgn",
"target_elo"
],
"additionalProperties": false
}
}plymove.explain_gameAnswer
Full-game learner-specific explanations / annotated teaching for a PGN. Core job is async; this WebMCP tool blocks until completion and returns the final analysis (no client-side job polling). Paid. Prefer find_teaching_moments for a short ranked moment list only.
View tool JSON
{
"name": "plymove.explain_game",
"kind": "answer",
"impl": "imperative",
"description": "Full-game learner-specific explanations / annotated teaching for a PGN. Core job is async; this WebMCP tool blocks until completion and returns the final analysis (no client-side job polling). Paid. Prefer find_teaching_moments for a short ranked moment list only.",
"inputSchema": {
"type": "object",
"properties": {
"pgn": {
"type": "string",
"minLength": 20,
"maxLength": 200000,
"description": "Full game in PGN (headers optional). Must include move text such as 1.e4 e5. Not a single FEN."
},
"target_elo": {
"type": "integer",
"minimum": 400,
"maximum": 3500,
"description": "Target learner Elo (400–3500)."
}
},
"required": [
"pgn",
"target_elo"
],
"additionalProperties": false
}
}