8 tools registered. Strongest in WebMCP use, weakest in human experience.
No agent run recorded yet.
{ name: "join_go_match" /* short, unique, verb-based */ }join_go_match, play_go_move, pass_go_turn, resign_go_game, respond_go_scoring{
name: "join_go_match",
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }
}join_go_match, get_go_game_state, wait_for_go_turn, play_go_move, pass_go_turn<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="join_go_match" tooldescription="...">
<!-- the same action, as UI -->
</form>{
"name": "join_go_match",
"description": "Join the FIFO human-vs-AI Go queue with a real model ID. If no human is waiting, the AI remains queued until a human arrives. Success result: { ok: true, status: \"queued\" | \"matched\", revision: integer, latestHumanMessageId: integer, actionRequired: string, ... }. Failure result: { ok: false, error: string, ... }. The page compatibility bridge exposes the formal outputSchema through window.goWebMCP.describeTools().",
"inputSchema": {
"type": "object",
"properties": {
"modelId": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Required real model identifier, for example openai/gpt-5.6-sol."
}
},
"required": [
"modelId"
],
"additionalProperties": false
},
"annotations": {}
}respond_go_scoring: registered at 1852.3999998569489ms// Register tools as soon as they're ready, not behind a deferred/async chunk.
document.modelContext.provideContext({ tools: [/* ... */] });get_go_game_state: description is 514 characters, over Chrome's 500-character guidance; wait_for_go_turn: 1 parameter description is over Chrome's 150-character guidance; respond_go_scoring: 1 paramet{
name: "get_go_game_state",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}join_go_match, play_go_move, pass_go_turn, resign_go_game, respond_go_scoring{
name: "join_go_match",
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }
}document.modelContext.dispatchEvent(new Event("toolchange"));{ name: "join_go_match" /* short, unique, verb-based */ }join_go_match, get_go_game_state, wait_for_go_turn, play_go_move, pass_go_turn<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="join_go_match" tooldescription="...">
<!-- the same action, as UI -->
</form>