← All WebMCP sites

plymove.com

AI & Agentshttps://plymove.com/listed as of 2026-08-27
PlyMove is a pedagogical chess engine. Stockfish finds what is best; PlyMove identifies what is worth teaching to a specific learner.
Run a live auditWe load the site in a real browser and score the tools it gives an agent.

Tools

plymove.get_product_infoanswerimperative
Return concise facts about PlyMove (pedagogical chess intelligence): purpose, capabilities, inputs, and high-level access modes.
Input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
plymove.get_access_infoanswerimperative
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.
Input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
plymove.get_pricinganswerimperative
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.
Input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
plymove.contact_salestransactimperative
Submit a sales/API-access contact request via the same /api/contact backend as the human form.
Input schema
{
  "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.navigateactimperative
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.
Input schema
{
  "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_sectionactimperative
Smooth-scroll the current page to a DOM element id (without #).
Input schema
{
  "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_docsactimperative
Open PlyMove developer documentation (or pricing/developers/contact). Use get_pricing for price facts; use this to navigate humans/agents to docs sections.
Input schema
{
  "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_positionanswerimperative
Sync: explain a chess position for a learner Elo (concepts, candidates, teaching value). Calls mcp.plymove.com. Paid (API key or x402). FEN required.
Input schema
{
  "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_movesanswerimperative
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).
Input schema
{
  "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_momentsanswerimperative
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.
Input schema
{
  "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_gameanswerimperative
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.
Input schema
{
  "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
}
Listings are sourced from public community registries and shown as reported.