← WebMCP Directory

Tool tree

plymove.com

liveAI & Agents
https://plymove.com/
PlyMove is a pedagogical chess engine. Stockfish finds what is best; PlyMove identifies what is worth teaching to a specific learner.
Explore capabilities
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
  }
}