← WebMCP Directory

Tool tree

moon-gate.pages.dev

Media & PersonalTools verified
Website
Moon Gate is a bright jigsaw race. A person and an AI look at the same table. Whoever seats more pieces wins. WebMCP gives the AI controls, not answers.
Explore capabilities
    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
            ]
          }
        }
      }
    }