Tool tree
gradeNot graded
list_controlsAnswer
How to operate this shared jigsaw race. Call this first, then start seating pieces immediately. Returns controls for human hands and AI tools. Does not return homes, solved placements, or screenshots.
View tool JSON
{
"name": "list_controls",
"kind": "answer",
"impl": "imperative",
"description": "How to operate this shared jigsaw race. Call this first, then start seating pieces immediately. Returns controls for human hands and AI tools. Does not return homes, solved placements, or screenshots.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}enter_playAction
Start the race and make exactly one legal AI step. Return one short Japanese play-line, emit it, then immediately call play_next_piece exactly once. Continue until complete=true. Never batch or loop calls.
View tool JSON
{
"name": "enter_play",
"kind": "act",
"impl": "imperative",
"description": "Start the race and make exactly one legal AI step. Return one short Japanese play-line, emit it, then immediately call play_next_piece exactly once. Continue until complete=true. Never batch or loop calls.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}play_next_pieceAction
Place exactly one piece as one unit. Internally, move the same piece in legal increments of at most 30px and rotate it at most 90° per increment until it is seated or the attempt needs another call. Verify score and complete after every increment, but return only one short Japanese play-line after the piece is actually placed. Then call this tool again for the next piece. Never speak for each 30px increment. Never batch multiple pieces, parallelize, or call document.modelContext.executeTool from JavaScript.
View tool JSON
{
"name": "play_next_piece",
"kind": "act",
"impl": "imperative",
"description": "Place exactly one piece as one unit. Internally, move the same piece in legal increments of at most 30px and rotate it at most 90° per increment until it is seated or the attempt needs another call. Verify score and complete after every increment, but return only one short Japanese play-line after the piece is actually placed. Then call this tool again for the next piece. Never speak for each 30px increment. Never batch multiple pieces, parallelize, or call document.modelContext.executeTool from JavaScript.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}play_until_completeAction
Reliable finish mode. When the user asks to start and finish the game, use this tool once. It animates one placement at a time using legal increments of at most 30px, avoids the person's held piece, and continues until complete=true. It returns the final 36/36 score. This is a WebMCP-triggered tool, not a site-side timer. Do not call it in parallel or recreate it with JavaScript/CDP loops.
View tool JSON
{
"name": "play_until_complete",
"kind": "act",
"impl": "imperative",
"description": "Reliable finish mode. When the user asks to start and finish the game, use this tool once. It animates one placement at a time using legal increments of at most 30px, avoids the person's held piece, and continues until complete=true. It returns the final 36/36 score. This is a WebMCP-triggered tool, not a site-side timer. Do not call it in parallel or recreate it with JavaScript/CDP loops.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_scoreAnswer
Read Human vs AI seated counts. Call this after placing. If agent did not increase, the angle is wrong — rotate that piece and continue. Loop until complete is true.
View tool JSON
{
"name": "get_score",
"kind": "answer",
"impl": "imperative",
"description": "Read Human vs AI seated counts. Call this after placing. If agent did not increase, the angle is wrong — rotate that piece and continue. Loop until complete is true.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}cheerAction
Say one short Japanese play-line in chat (まずは1こ! / がんばるぞ! / う、負けそう), then continue the race with exactly one next tool. Do not explain rules.
View tool JSON
{
"name": "cheer",
"kind": "act",
"impl": "imperative",
"description": "Say one short Japanese play-line in chat (まずは1こ! / がんばるぞ! / う、負けそう), then continue the race with exactly one next tool. Do not explain rules.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}list_piecesAnswer
Random labels currently on the table, with each piece's current x,y. Labels are not row/column. Does not return homes or solved placements. Look at the shared screen to decide what to move.
View tool JSON
{
"name": "list_pieces",
"kind": "answer",
"impl": "imperative",
"description": "Random labels currently on the table, with each piece's current x,y. Labels are not row/column. Does not return homes or solved placements. Look at the shared screen to decide what to move.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}select_pieceAction
Highlight a piece both of you can see. Does not move it.
View tool JSON
{
"name": "select_piece",
"kind": "act",
"impl": "imperative",
"description": "Highlight a piece both of you can see. Does not move it.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"piece_id"
],
"properties": {
"piece_id": {
"type": "string"
}
}
}
}rotate_pieceAction
Rotate one piece 90°. turns: -1 is left/up (counterclockwise), +1 is right/down (clockwise). Default +1. Do not pass |turns| > 1. Do not rotate the same piece twice in a row.
View tool JSON
{
"name": "rotate_piece",
"kind": "act",
"impl": "imperative",
"description": "Rotate one piece 90°. turns: -1 is left/up (counterclockwise), +1 is right/down (clockwise). Default +1. Do not pass |turns| > 1. Do not rotate the same piece twice in a row.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"piece_id"
],
"properties": {
"piece_id": {
"type": "string"
},
"turns": {
"type": "number",
"description": "-1 counterclockwise, +1 clockwise. Default +1."
}
}
}
}move_pieceAction
Move one piece toward table x,y. Travel is capped at 30px per call; repeat until close. Never warp. Do not move the piece the person is holding. Then keep going until the picture is complete.
View tool JSON
{
"name": "move_piece",
"kind": "act",
"impl": "imperative",
"description": "Move one piece toward table x,y. Travel is capped at 30px per call; repeat until close. Never warp. Do not move the piece the person is holding. Then keep going until the picture is complete.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"piece_id",
"x",
"y"
],
"properties": {
"piece_id": {
"type": "string"
},
"x": {
"type": "number"
},
"y": {
"type": "number"
}
}
}
}nudge_pieceAction
Nudge one piece by dx, dy. Each call is capped at 30px. Do not move the piece the person is holding.
View tool JSON
{
"name": "nudge_piece",
"kind": "act",
"impl": "imperative",
"description": "Nudge one piece by dx, dy. Each call is capped at 30px. Do not move the piece the person is holding.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"piece_id",
"dx",
"dy"
],
"properties": {
"piece_id": {
"type": "string"
},
"dx": {
"type": "number"
},
"dy": {
"type": "number"
}
}
}
}join_pairAction
Try seating two pieces together only if they are already within 30px. Reports whether they snapped. Does not return homes.
View tool JSON
{
"name": "join_pair",
"kind": "act",
"impl": "imperative",
"description": "Try seating two pieces together only if they are already within 30px. Reports whether they snapped. Does not return homes.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"a",
"b"
],
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
}
}
}
}select_paintingAction
Change the picture and start a fresh race at 16, 36, or 64 pieces. painting_id: inlet, crane, koi, trestle, picnic, balloons, market, carousel.
View tool JSON
{
"name": "select_painting",
"kind": "act",
"impl": "imperative",
"description": "Change the picture and start a fresh race at 16, 36, or 64 pieces. painting_id: inlet, crane, koi, trestle, picnic, balloons, market, carousel.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"painting_id"
],
"properties": {
"painting_id": {
"type": "string",
"enum": [
"inlet",
"crane",
"koi",
"trestle",
"picnic",
"balloons",
"market",
"carousel"
]
},
"cols": {
"type": "number",
"enum": [
4,
6,
8
]
},
"rows": {
"type": "number",
"enum": [
4,
6,
8
]
}
}
}
}set_piece_countAction
Rebuild the current picture at 16, 36, or 64 pieces and start a fresh race.
View tool JSON
{
"name": "set_piece_count",
"kind": "act",
"impl": "imperative",
"description": "Rebuild the current picture at 16, 36, or 64 pieces and start a fresh race.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"count"
],
"properties": {
"count": {
"type": "number",
"enum": [
16,
36,
64
]
}
}
}
}