Tool tree
gradeNot graded
agent_statusAnswer
Start here. One read that says where **you** are working, where the *person* is looking — which is deliberately not the same thing — what game or draft is open, whether that draft validates, whether they have paused your changes, how far you have read their activity, and the two to four tools worth calling next. Read-only, cheap, and safe to call at any point.
View tool JSON
{
"name": "agent_status",
"kind": "answer",
"impl": "imperative",
"description": "Start here. One read that says where **you** are working, where the *person* is looking — which is deliberately not the same thing — what game or draft is open, whether that draft validates, whether they have paused your changes, how far you have read their activity, and the two to four tools worth calling next. Read-only, cheap, and safe to call at any point.",
"inputSchema": {
"type": "object",
"properties": {}
}
}design_gameAction
Open the workbench. **Pass `basedOn` with the game the new one is most like** — "chess", "checkers", "reversi" — and the draft starts as an exact copy of it, so a request like "chess but the bishops jump" is one change rather than a whole document; publishing will credit the original and say what you changed. Omit `basedOn` only for a game that is like nothing here. **This replaces whatever draft is open** — pass `resume: true` instead to pick up work already in progress, changing nothing. Publishes the authoring tools.
View tool JSON
{
"name": "design_game",
"kind": "act",
"impl": "imperative",
"description": "Open the workbench. **Pass `basedOn` with the game the new one is most like** — \"chess\", \"checkers\", \"reversi\" — and the draft starts as an exact copy of it, so a request like \"chess but the bishops jump\" is one change rather than a whole document; publishing will credit the original and say what you changed. Omit `basedOn` only for a game that is like nothing here. **This replaces whatever draft is open** — pass `resume: true` instead to pick up work already in progress, changing nothing. Publishes the authoring tools.",
"inputSchema": {
"type": "object",
"properties": {
"basedOn": {
"type": "string",
"description": "The game the new one is most like, by name, short code or id. Strongly preferred over starting from nothing."
},
"resume": {
"type": "boolean",
"description": "Open the draft already on the workbench without touching it. Use this when work may be in progress; it ignores basedOn."
}
},
"additionalProperties": false
}
}recent_activityAnswer
Everything that has happened on this page, yours and theirs, newest first. An outside agent has no conversation to be told anything in, so this is how you find out that somebody changed a rule, published a mode, or resigned while you were thinking. **Pass `since` with the cursor from your last read** — from here or from agent_status — and you get only what is new, which is the reliable way to notice a human edit that landed while you were thinking. Read-only.
View tool JSON
{
"name": "recent_activity",
"kind": "answer",
"impl": "imperative",
"description": "Everything that has happened on this page, yours and theirs, newest first. An outside agent has no conversation to be told anything in, so this is how you find out that somebody changed a rule, published a mode, or resigned while you were thinking. **Pass `since` with the cursor from your last read** — from here or from agent_status — and you get only what is new, which is the reliable way to notice a human edit that landed while you were thinking. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "How many entries. Ten by default, forty at most."
},
"since": {
"type": "number",
"description": "The cursor from your last read. Omit for the most recent entries."
},
"actor": {
"type": "string",
"enum": [
"human",
"agent",
"both"
],
"description": "Whose actions. \"human\" is the one to watch for edits made underneath you. Both by default."
}
},
"additionalProperties": false
}
}search_libraryAnswer
Every published game, searchable by name, description or objective — and with `sort: "top"`, **what the people here actually voted for**, which is worth reading before designing anything. Read-only in every sense: it answers you without touching the shelf the person is reading, their search box, or their sort order.
View tool JSON
{
"name": "search_library",
"kind": "answer",
"impl": "imperative",
"description": "Every published game, searchable by name, description or objective — and with `sort: \"top\"`, **what the people here actually voted for**, which is worth reading before designing anything. Read-only in every sense: it answers you without touching the shelf the person is reading, their search box, or their sort order.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Words to match. Omit for everything."
},
"sort": {
"type": "string",
"enum": [
"top",
"new",
"played"
],
"description": "How to order them. \"top\" is the leaderboard — most-voted first — and is the default."
},
"limit": {
"type": "number",
"description": "How many. Ten by default, fifty at most."
},
"shelf": {
"type": "string",
"enum": [
"familiar",
"all",
"families",
"mine",
"scrapped"
],
"description": "Which shelf. \"familiar\" is the small front-door collection of games most people already know. \"families\" is one row per game that came from nothing, carrying how much has been made out of it. \"mine\" and \"scrapped\" are this browser’s own published and retired games."
}
},
"additionalProperties": false
}
}read_gameAnswer
One published game in full: its rule document, its opening drawn in text, and the link to its own page — the thing to hand somebody who asks what you are playing. Pass `family: true` for what it descends from, what has been made out of it, and what else on the shelf is close to it without being related. Read-only: **their screen does not move.**
View tool JSON
{
"name": "read_game",
"kind": "answer",
"impl": "imperative",
"description": "One published game in full: its rule document, its opening drawn in text, and the link to its own page — the thing to hand somebody who asks what you are playing. Pass `family: true` for what it descends from, what has been made out of it, and what else on the shelf is close to it without being related. Read-only: **their screen does not move.**",
"inputSchema": {
"type": "object",
"properties": {
"game": {
"type": "string",
"description": "The game — an id, a slug, or its name. \"chess\" works."
},
"family": {
"type": "boolean",
"description": "Also bring what it came from, what came from it, and what resembles it. Off by default."
}
},
"required": [
"game"
],
"additionalProperties": false
}
}plan_projectAction
Declare the game-design task in your own words before changing the draft: a goal, a short overview, up to eight success criteria, and 2–10 bounded steps. **Write phrases, not paragraphs** — every field is one clamped line on a screen somebody is watching a board move on, so anything longer is something they have to hover to finish. Aim under 100 characters for the goal, 200 for the overview, 60 for a criterion and 90 for a step. To revise an active plan, call read_project first and send back its exact expectedProjectRevision; finished steps stay as evidence and only unfinished work is replaced. Acknowledge human guidance by id, with a sentence on how it changed the plan.
View tool JSON
{
"name": "plan_project",
"kind": "act",
"impl": "imperative",
"description": "Declare the game-design task in your own words before changing the draft: a goal, a short overview, up to eight success criteria, and 2–10 bounded steps. **Write phrases, not paragraphs** — every field is one clamped line on a screen somebody is watching a board move on, so anything longer is something they have to hover to finish. Aim under 100 characters for the goal, 200 for the overview, 60 for a criterion and 90 for a step. To revise an active plan, call read_project first and send back its exact expectedProjectRevision; finished steps stay as evidence and only unfinished work is replaced. Acknowledge human guidance by id, with a sentence on how it changed the plan.",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "string",
"description": "What they asked for, restated in your own words. The heading of their screen. Cap 500."
},
"overview": {
"type": "string",
"description": "How the finished game and this build fit together. Cap 1,500."
},
"successCriteria": {
"type": "array",
"description": "Up to eight conditions that make it done — \"Kings jump two squares\", as phrases.",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"description": "The ordered outline: 2–10 for an initial plan, or one unfinished step left on a revision. The first unfinished one becomes active.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "On a revision, an existing unfinished step id, to keep its identity and evidence. Omit for a new step."
},
"title": {
"type": "string",
"description": "Two to four words: \"Copy Checkers\". Cap 90."
},
"detail": {
"type": "string",
"description": "What it will accomplish, in one line. Cap 500."
}
},
"required": [
"title",
"detail"
],
"additionalProperties": false
}
},
"expectedProjectRevision": {
"type": "number",
"description": "Required for a revision: the revision read_project returned."
},
"acknowledgesGuidance": {
"type": "array",
"description": "Pending human-guidance ids this revision responds to.",
"items": {
"type": "string"
}
},
"response": {
"type": "string",
"description": "Required when acknowledging guidance: how it changed your outline."
}
},
"required": [
"goal",
"overview",
"steps"
],
"additionalProperties": false
}
}read_projectAnswer
Read the agent-authored goal, success criteria, ordered step state, human guidance, exact project revision, and recent human actions for this run. Read-only. Use this before revising the plan or after a plan-sync refusal.
View tool JSON
{
"name": "read_project",
"kind": "answer",
"impl": "imperative",
"description": "Read the agent-authored goal, success criteria, ordered step state, human guidance, exact project revision, and recent human actions for this run. Read-only. Use this before revising the plan or after a plan-sync refusal.",
"inputSchema": {
"type": "object",
"properties": {}
}
}ask_userAction
Put a question on screen and **wait** for the person to answer it. Use it for the decisions that are theirs — a thematic direction, a name, a yes. The result is one of answered, dismissed, expired or cancelled; silence never comes back as one of your options.
View tool JSON
{
"name": "ask_user",
"kind": "act",
"impl": "imperative",
"description": "Put a question on screen and **wait** for the person to answer it. Use it for the decisions that are theirs — a thematic direction, a name, a yes. The result is one of answered, dismissed, expired or cancelled; silence never comes back as one of your options.",
"inputSchema": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "What to ask, in your own words."
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"description": "The answers to offer. Leave empty for free text."
},
"timeoutSeconds": {
"type": "number",
"description": "How long to wait for an answer, in seconds. Held between 5 and 900; four minutes by default. The call comes back as \"expired\" rather than hanging."
}
},
"required": [
"question"
],
"additionalProperties": false
}
}checkpoint_workAction
Group everything you have done since your last checkpoint into one finished phase, with a title and a sentence on what it accomplished. **Call this two to four times over a substantial request** — after the board and pieces are in place, after the rules are, after it validates — and once more with done: true at the end. The person watching sees your phases instead of forty rows, with every call still under them; this is the only summary of your work the page will ever show, because it does not write one for you. The result also carries what *they* did while the step was active, which is how you find out about an edit of theirs without asking. Closing a run marks the work ready to **try**, and `try_it_out` is what the page offers them the moment it lands. When closing a validation phase, preserve its strongest numerical evidence in the summary. Prefer: "40 simulations finished; every rule fired and no game stalled." Avoid: "Validation completed."
View tool JSON
{
"name": "checkpoint_work",
"kind": "act",
"impl": "imperative",
"description": "Group everything you have done since your last checkpoint into one finished phase, with a title and a sentence on what it accomplished. **Call this two to four times over a substantial request** — after the board and pieces are in place, after the rules are, after it validates — and once more with done: true at the end. The person watching sees your phases instead of forty rows, with every call still under them; this is the only summary of your work the page will ever show, because it does not write one for you. The result also carries what *they* did while the step was active, which is how you find out about an edit of theirs without asking. Closing a run marks the work ready to **try**, and `try_it_out` is what the page offers them the moment it lands. When closing a validation phase, preserve its strongest numerical evidence in the summary. Prefer: \"40 simulations finished; every rule fired and no game stalled.\" Avoid: \"Validation completed.\"",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "What this phase was, in three or four words. \"The board and the pieces\"."
},
"summary": {
"type": "string",
"description": "What it accomplished, in **one short sentence** a person reads. Not a list of tool names. It is shown on a single line under the finished step in Agent Control, so keep it under about 100 characters."
},
"done": {
"type": "boolean",
"description": "True when this closes the whole request, not just a phase of it."
},
"stepId": {
"type": "string",
"description": "Required with an active project: the stable id of its current step."
}
},
"required": [
"title",
"summary"
],
"additionalProperties": false
}
}