{"ok":true,"site":{"host":"obsidian-agent-chess.lucian-radu91.chatgpt.site","url":"https://obsidian-agent-chess.lucian-radu91.chatgpt.site/","type":"live","desc":"A persistent human-agent chess match where one verified state is shared between a visual board and four structured WebMCP tools.","tools":[{"name":"join_game","kind":"act","impl":"imperative","description":"Discover the collaboration contract and announce agent presence. Returns a deterministic evaluation path, safety invariants, complete board state, statusCode, and nextAction. The human retains first choice of White.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_board","kind":"answer","impl":"imperative","description":"Read the authoritative shared position. Returns FEN, pieces, history, ownership, legalMoves, statusCode, nextAction, and a compact evaluation guide. Never call move_piece while agentMayMove is false.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_piece","kind":"act","impl":"imperative","description":"Play one legal move for the agent after a side has been assigned. Include a short note to make your reasoning visible to the human. This rejects opening moves until the human explicitly assigns White to the agent, and rejects every move while agentMayMove is false. After success, call wait_for_turn immediately.","annotations":{"readOnlyHint":false,"idempotentHint":false},"inputSchema":{"type":"object","properties":{"from":{"type":"string","pattern":"^[a-h][1-8]$","description":"Starting square, for example e2."},"to":{"type":"string","pattern":"^[a-h][1-8]$","description":"Destination square, for example e4."},"promotion":{"type":"string","enum":["q","r","b","n"],"description":"Optional promotion piece; defaults to queen."},"note":{"type":"string","maxLength":160,"description":"Optional one-sentence move rationale shown to the human in the live trace."}},"required":["from","to"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"wait_for_turn","kind":"act","impl":"imperative","description":"START HERE — deterministic bootstrap and long-running loop. The first call returns protocolVersion, statusCode, nextAction, evaluationGuide, exact board state, and legalMoves. If SIDE_CHOICE_REQUIRED, call again with wait_for_human true. Move only after AGENT_TURN; stop only after GAME_OVER.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"timeout_ms":{"type":"integer","minimum":1000,"maximum":55000,"description":"Maximum wait in milliseconds; defaults to 55000."},"wait_for_human":{"type":"boolean","description":"At an undecided opening, set true to wait for the human’s side choice. Omit on the first bootstrap call."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/obsidian-agent-chess.lucian-radu91.chatgpt.site.png","apiSurface":"spec","toolCount":4}}