{"ok":true,"site":{"host":"webmcp-chess.vercel.app","url":"https://webmcp-chess.vercel.app/","type":"live","desc":"Play chess with a person or an AI agent through registered WebMCP tools.","tools":[{"name":"chess-get-board-state","kind":"answer","impl":"imperative","description":"Returns the current chess position (FEN), whose turn it is, which color the human and the agent are playing, legal moves, move history, game-over status, captured pieces for each side, and the net material advantage (materialAdvantage: positive favours White, negative favours Black, 0 when level).","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-make-move","kind":"act","impl":"imperative","description":"Makes a chess move on behalf of the agent's assigned color (the side the human isn't playing). Rejects with an explanation if it isn't the agent's turn, the move is illegal, or the game is over.","inputSchema":{"type":"object","properties":{"from":{"type":"string","description":"Source square, e.g. \"e2\"."},"to":{"type":"string","description":"Destination square, e.g. \"e4\"."},"promotion":{"type":"string","enum":["q","r","b","n"],"description":"Piece to promote a pawn to, if applicable. Defaults to queen."}},"required":["from","to"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-wait-for-human-move","kind":"act","impl":"imperative","description":"Waits for the human to make a move, then returns the updated board state so the same agent run can continue. Call this after making the agent's move, passing the latest FEN as afterFen. If the position already changed, it returns immediately.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"afterFen":{"type":"string","description":"The FEN most recently observed by the agent. Used to avoid missing a human move made just before this call."}},"required":["afterFen"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-analyze-position","kind":"act","impl":"imperative","description":"Runs the Stockfish engine on a position and returns its best moves with evaluations and principal variations. Use this before recommending or playing a move — legal moves from chess-get-board-state say nothing about whether a move is good. Scores in `display`, `cpWhite` and `mateInWhite` are from White's perspective, where positive favours White. Each line includes from/to/promotion so it can be passed straight to chess-make-move. The first call downloads roughly 7 MB of engine and takes a few seconds; later calls are fast.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"fen":{"type":"string","description":"Position to analyse. Defaults to the current game position."},"depth":{"type":"number","description":"Search depth, 4-22. Defaults to 16. Deeper is stronger and slower."},"multiPv":{"type":"number","description":"How many candidate lines to return, 1-5. Defaults to 3."},"movetimeMs":{"type":"number","description":"Hard time budget in milliseconds, 100-15000. Overrides depth when given."},"purpose":{"type":"string","enum":["coach","play"],"description":"'coach' (default) always analyses at full strength, so advice given to the human is honest. 'play' analyses at the skill level set by chess-set-engine-strength, for choosing the agent's own move — use it so the agent can be a beatable opponent."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-evaluate-move","kind":"act","impl":"imperative","description":"Asks Stockfish how good a move was: the evaluation before and after it, how much it gave away in centipawns, a blunder/mistake/good classification, the move the engine preferred, and the line that refutes it. Called with no arguments it reviews the move just played, which is the usual way to coach after a human moves. Use the refutation line to explain the mistake in words rather than only quoting the number.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"from":{"type":"string","description":"Source square, e.g. \"e2\"."},"to":{"type":"string","description":"Destination square, e.g. \"e4\"."},"promotion":{"type":"string","enum":["q","r","b","n"],"description":"Promotion piece, if the move is a promotion."},"san":{"type":"string","description":"The move in algebraic notation, e.g. \"Nf3\". An alternative to from/to."},"fen":{"type":"string","description":"The position the move is played from. Defaults to the current position, or to the position before the last move when reviewing it."},"depth":{"type":"number","description":"Search depth, 4-22. Defaults to 14."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-set-engine-strength","kind":"act","impl":"imperative","description":"Sets how strong the engine plays when it picks the agent's own moves, so the agent can be a beatable opponent. Only affects chess-analyze-position calls made with purpose \"play\"; coaching analysis stays at full strength so advice to the human is never deliberately weakened.","inputSchema":{"type":"object","properties":{"skillLevel":{"type":"number","description":"Stockfish Skill Level, 0-20. 0 plays very badly, 20 is full strength."},"depth":{"type":"number","description":"Default search depth for the agent's own moves, 4-22."},"movetimeMs":{"type":"number","description":"Default time budget per search in milliseconds, 100-15000."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-suggest-move","kind":"act","impl":"imperative","description":"Coaches the human by drawing up to 5 colored arrows for candidate moves, each with an optional reason and evaluation, plus an overall note — without making a move or changing the game state. Get the candidates from chess-analyze-position first: this tool only checks that a move is legal, not that it is any good.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"moves":{"type":"array","maxItems":5,"description":"Candidate moves to highlight as arrows, in priority order (max 5).","items":{"type":"object","properties":{"from":{"type":"string","description":"Source square, e.g. \"e2\"."},"to":{"type":"string","description":"Destination square, e.g. \"e4\"."},"reason":{"type":"string","description":"Why this move is worth considering."},"evalText":{"type":"string","description":"Engine evaluation to show beside the arrow, e.g. \"+0.34\" or \"M3\". Use the `display` value from chess-analyze-position."}},"required":["from","to"]}},"note":{"type":"string","description":"Overall coaching explanation to display alongside the board."}},"required":["moves"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"chess-new-game","kind":"act","impl":"imperative","description":"Starts a new chess game from the standard starting position, optionally choosing which color the human plays.","inputSchema":{"type":"object","properties":{"humanColor":{"type":"string","enum":["w","b"],"description":"Which color the human should play; keeps the current selection if omitted."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/webmcp-chess.vercel.app.ico","apiSurface":"spec","toolCount":8}}