← WebMCP Directory

Tool tree

givens.netlify.app

Media & PersonalTools verified
Website
You and ChatGPT share one Sudoku. It names the next technique; you decide whether to fill it. Hints, checks, and one safe step — never a dumped solution.
Explore capabilities
    read_boardAnswer

    Read the live Sudoku grid, empty-cell candidates, locks, conflicts, and the next safe technique. Use this before acting. Do not print the full solution. Follow board.agentPolicy.

    View tool JSON
    {
      "name": "read_board",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the live Sudoku grid, empty-cell candidates, locks, conflicts, and the next safe technique. Use this before acting. Do not print the full solution. Follow board.agentPolicy.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    select_cellAction

    Select a cell so the human can see where you are looking. Does not change digits.

    View tool JSON
    {
      "name": "select_cell",
      "kind": "act",
      "impl": "imperative",
      "description": "Select a cell so the human can see where you are looking. Does not change digits.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          }
        },
        "required": [
          "row",
          "col"
        ],
        "additionalProperties": false
      }
    }
    set_cellAction

    Fill one empty cell with a digit. Prefer hint or apply_next_step unless the user asked you to enter a specific digit. Cannot change givens or locked cells.

    View tool JSON
    {
      "name": "set_cell",
      "kind": "act",
      "impl": "imperative",
      "description": "Fill one empty cell with a digit. Prefer hint or apply_next_step unless the user asked you to enter a specific digit. Cannot change givens or locked cells.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          },
          "digit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Digit 1-9."
          }
        },
        "required": [
          "row",
          "col",
          "digit"
        ],
        "additionalProperties": false
      }
    }
    clear_cellAction

    Clear a non-given cell. Cannot clear givens or locked cells.

    View tool JSON
    {
      "name": "clear_cell",
      "kind": "act",
      "impl": "imperative",
      "description": "Clear a non-given cell. Cannot clear givens or locked cells.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          }
        },
        "required": [
          "row",
          "col"
        ],
        "additionalProperties": false
      }
    }
    toggle_candidateAction

    Pencil or cross off a candidate digit in an empty cell.

    View tool JSON
    {
      "name": "toggle_candidate",
      "kind": "act",
      "impl": "imperative",
      "description": "Pencil or cross off a candidate digit in an empty cell.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          },
          "digit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Digit 1-9."
          }
        },
        "required": [
          "row",
          "col",
          "digit"
        ],
        "additionalProperties": false
      }
    }
    lock_cellAction

    Lock a cell so the agent cannot write there. The human can still edit it.

    View tool JSON
    {
      "name": "lock_cell",
      "kind": "act",
      "impl": "imperative",
      "description": "Lock a cell so the agent cannot write there. The human can still edit it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          }
        },
        "required": [
          "row",
          "col"
        ],
        "additionalProperties": false
      }
    }
    unlock_cellAction

    Allow the agent to write in a previously locked cell.

    View tool JSON
    {
      "name": "unlock_cell",
      "kind": "act",
      "impl": "imperative",
      "description": "Allow the agent to write in a previously locked cell.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          }
        },
        "required": [
          "row",
          "col"
        ],
        "additionalProperties": false
      }
    }
    hintAction

    Find the next safe Sudoku technique (naked single, hidden single, naked pair, or pointing pair). Highlights the cells and explains why. Does not fill anything. Use this when the user wants help without spoilers.

    View tool JSON
    {
      "name": "hint",
      "kind": "act",
      "impl": "imperative",
      "description": "Find the next safe Sudoku technique (naked single, hidden single, naked pair, or pointing pair). Highlights the cells and explains why. Does not fill anything. Use this when the user wants help without spoilers.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    explain_cellAction

    Explain one cell: current digit or remaining candidates, and why other digits are impossible.

    View tool JSON
    {
      "name": "explain_cell",
      "kind": "act",
      "impl": "imperative",
      "description": "Explain one cell: current digit or remaining candidates, and why other digits are impossible.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          }
        },
        "required": [
          "row",
          "col"
        ],
        "additionalProperties": false
      }
    }
    check_moveAnswer

    Check whether a proposed digit belongs in a cell. Distinguishes conflicts, guesses that are not yet forced, and digits that a technique already forces. Does not fill the cell.

    View tool JSON
    {
      "name": "check_move",
      "kind": "answer",
      "impl": "imperative",
      "description": "Check whether a proposed digit belongs in a cell. Distinguishes conflicts, guesses that are not yet forced, and digits that a technique already forces. Does not fill the cell.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "row": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Row number, 1 at the top."
          },
          "col": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Column number, 1 at the left."
          },
          "digit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9,
            "description": "Digit 1-9."
          }
        },
        "required": [
          "row",
          "col",
          "digit"
        ],
        "additionalProperties": false
      }
    }
    apply_next_stepAction

    Apply exactly one safe deduction: fill a forced cell or cross off candidates from a pair/pointing claim. Never solves the whole puzzle in one call. Use only when the user wants a fill, not just an explanation.

    View tool JSON
    {
      "name": "apply_next_step",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply exactly one safe deduction: fill a forced cell or cross off candidates from a pair/pointing claim. Never solves the whole puzzle in one call. Use only when the user wants a fill, not just an explanation.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    undoAction

    Undo the last grid change (fill, clear, pencil, or lock).

    View tool JSON
    {
      "name": "undo",
      "kind": "act",
      "impl": "imperative",
      "description": "Undo the last grid change (fill, clear, pencil, or lock).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    load_puzzleAction

    Load a bundled puzzle by id. Ids: last-five, morning-paper, coffee-break, commute, evening, ink-hard. Resets the board.

    View tool JSON
    {
      "name": "load_puzzle",
      "kind": "act",
      "impl": "imperative",
      "description": "Load a bundled puzzle by id. Ids: last-five, morning-paper, coffee-break, commute, evening, ink-hard. Resets the board.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Puzzle id from read_board or this list: last-five, morning-paper, coffee-break, commute, evening, ink-hard."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      }
    }
    load_custom_puzzleAction

    Load a Sudoku the human pasted. grid is 81 cells (digits, 0 or . for blanks). Spaces and line breaks are allowed. Rejects invalid, unsolvable, or non-unique grids. Resets the board.

    View tool JSON
    {
      "name": "load_custom_puzzle",
      "kind": "act",
      "impl": "imperative",
      "description": "Load a Sudoku the human pasted. grid is 81 cells (digits, 0 or . for blanks). Spaces and line breaks are allowed. Rejects invalid, unsolvable, or non-unique grids. Resets the board.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "grid": {
            "type": "string",
            "description": "81 Sudoku cells as digits. Use 0 or . for empty cells."
          }
        },
        "required": [
          "grid"
        ],
        "additionalProperties": false
      }
    }