Tool tree
gradeNot graded
get_floor_planAnswer
Return the complete current floor plan: room dimensions, grid size, capacity, and every object with its id, kind, position in metres, footprint, seat count and lock status. Call this before proposing anything.
View tool JSON
{
"name": "get_floor_plan",
"kind": "answer",
"impl": "imperative",
"description": "Return the complete current floor plan: room dimensions, grid size, capacity, and every object with its id, kind, position in metres, footprint, seat count and lock status. Call this before proposing anything.",
"inputSchema": {
"type": "object",
"properties": {
"include_catalog": {
"type": "boolean",
"description": "Also return the catalogue of object kinds that can be placed, with their footprints and seat counts."
}
}
}
}get_rulebookAnswer
Return every constraint currently governing this floor: the built-in planning rules that ship with the app and the rules the human has authored during this session, each with its plain language statement, its origin and whether it is active. Every proposal you make is validated against this list before it can be shown to the human.
View tool JSON
{
"name": "get_rulebook",
"kind": "answer",
"impl": "imperative",
"description": "Return every constraint currently governing this floor: the built-in planning rules that ship with the app and the rules the human has authored during this session, each with its plain language statement, its origin and whether it is active. Every proposal you make is validated against this list before it can be shown to the human.",
"inputSchema": {
"type": "object",
"properties": {
"include_disabled": {
"type": "boolean",
"description": "Include rules the human has waived. Defaults to false."
}
}
}
}get_violationsAnswer
Return everything that is currently broken on the floor and by how much. Use this to find work worth doing, and to confirm a plan actually improved things.
View tool JSON
{
"name": "get_violations",
"kind": "answer",
"impl": "imperative",
"description": "Return everything that is currently broken on the floor and by how much. Use this to find work worth doing, and to confirm a plan actually improved things.",
"inputSchema": {
"type": "object",
"properties": {}
}
}get_metricsAnswer
Return seat count against capacity, floor area used, circulation share, the distance from the furthest seat to the nearest exit, and the live violation count.
View tool JSON
{
"name": "get_metrics",
"kind": "answer",
"impl": "imperative",
"description": "Return seat count against capacity, floor area used, circulation share, the distance from the furthest seat to the nearest exit, and the live violation count.",
"inputSchema": {
"type": "object",
"properties": {}
}
}get_pending_proposalAnswer
Return the proposal currently waiting on a human decision, if any, with the status of each item. Only one proposal can be pending at a time, so check here if a submission was turned away as blocked.
View tool JSON
{
"name": "get_pending_proposal",
"kind": "answer",
"impl": "imperative",
"description": "Return the proposal currently waiting on a human decision, if any, with the status of each item. Only one proposal can be pending at a time, so check here if a submission was turned away as blocked.",
"inputSchema": {
"type": "object",
"properties": {}
}
}propose_changesAction
Submit a set of placements, moves or removals. This never edits the floor directly. The app validates the whole set against locked objects and every active rule. If any item breaks a rule the entire plan is refused and you are told which rule and which item. If it passes, it appears as a ghosted preview for the human to accept or reject item by item.
View tool JSON
{
"name": "propose_changes",
"kind": "act",
"impl": "imperative",
"description": "Submit a set of placements, moves or removals. This never edits the floor directly. The app validates the whole set against locked objects and every active rule. If any item breaks a rule the entire plan is refused and you are told which rule and which item. If it passes, it appears as a ghosted preview for the human to accept or reject item by item.",
"inputSchema": {
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "One sentence in plain language describing what this plan does and why, shown to the human above the items."
},
"changes": {
"type": "array",
"description": "The changes to apply, evaluated as one atomic plan.",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"add",
"move",
"remove"
]
},
"kind": {
"type": "string",
"enum": [
"stage",
"round_table",
"rect_table",
"booth",
"bar",
"exit",
"walkway"
],
"description": "Required for add. The type of object to place."
},
"id": {
"type": "string",
"description": "Required for move and remove. An existing object id."
},
"x": {
"type": "number",
"description": "Left edge in metres from the north west corner. Required for add and move."
},
"y": {
"type": "number",
"description": "Top edge in metres from the north west corner. Required for add and move."
},
"label": {
"type": "string",
"description": "Optional name for a new object."
}
},
"required": [
"op"
]
}
}
},
"required": [
"summary",
"changes"
]
}
}optimise_layoutAction
Ask the app to lay out the unlocked part of the floor against an objective. Locked objects are never touched and every candidate position is tested against the live rulebook before it is offered. Returns a proposal awaiting human approval, never a direct change.
View tool JSON
{
"name": "optimise_layout",
"kind": "act",
"impl": "imperative",
"description": "Ask the app to lay out the unlocked part of the floor against an objective. Locked objects are never touched and every candidate position is tested against the live rulebook before it is offered. Returns a proposal awaiting human approval, never a direct change.",
"inputSchema": {
"type": "object",
"properties": {
"objective": {
"type": "string",
"enum": [
"maximise_seating",
"widen_circulation",
"improve_sightlines"
],
"description": "What to optimise for."
},
"target_seats": {
"type": "number",
"description": "For maximise_seating, how many extra seats to aim for. Defaults to 40."
},
"object_kind": {
"type": "string",
"enum": [
"round_table",
"rect_table"
],
"description": "For maximise_seating, which seating type to add. Defaults to round_table."
}
},
"required": [
"objective"
]
}
}explain_placementAction
Given an object kind and a position, report whether it can go there and, if not, exactly which rules it breaks, which neighbouring objects are involved and by what margin. Use this to answer a human asking why something will not fit, and to debug your own refused plans.
View tool JSON
{
"name": "explain_placement",
"kind": "act",
"impl": "imperative",
"description": "Given an object kind and a position, report whether it can go there and, if not, exactly which rules it breaks, which neighbouring objects are involved and by what margin. Use this to answer a human asking why something will not fit, and to debug your own refused plans.",
"inputSchema": {
"type": "object",
"properties": {
"object_kind": {
"type": "string",
"enum": [
"stage",
"round_table",
"rect_table",
"booth",
"bar",
"exit",
"walkway"
]
},
"x": {
"type": "number",
"description": "Left edge in metres."
},
"y": {
"type": "number",
"description": "Top edge in metres."
}
},
"required": [
"object_kind",
"x",
"y"
]
}
}propose_ruleAction
Turn a plain language planning instruction from the human into a structured rule and send it to them for one tap confirmation. You cannot add, edit or delete rules yourself. This only drafts one. Nothing is enforced until the human ratifies it in the rulebook panel.
View tool JSON
{
"name": "propose_rule",
"kind": "act",
"impl": "imperative",
"description": "Turn a plain language planning instruction from the human into a structured rule and send it to them for one tap confirmation. You cannot add, edit or delete rules yourself. This only drafts one. Nothing is enforced until the human ratifies it in the rulebook panel.",
"inputSchema": {
"type": "object",
"properties": {
"instruction": {
"type": "string",
"description": "The instruction in the human's own words, for example: never put standing tables near the entrance."
}
},
"required": [
"instruction"
]
}
}