Tool tree
gradeNot graded
get_simulation_stateAnswer
[OBSERVE · READ-ONLY] Returns a compact snapshot of the live simulation: scenario, day, remaining days, tasks, resources, team, risks, metrics, available decisions, recent events, and simulationVersion. Does NOT mutate state. Call this first when the world is unknown or may have changed after a mutation.
View tool JSON
{
"name": "get_simulation_state",
"kind": "answer",
"impl": "imperative",
"description": "[OBSERVE · READ-ONLY] Returns a compact snapshot of the live simulation: scenario, day, remaining days, tasks, resources, team, risks, metrics, available decisions, recent events, and simulationVersion. Does NOT mutate state. Call this first when the world is unknown or may have changed after a mutation.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_available_decisionsAnswer
[OBSERVE · READ-ONLY] Lists structured decision options currently allowed (scope, schedule, team, resources). Does NOT mutate state. Use after get_simulation_state and before preview_decision or apply_decision. Each entry includes id, title, category, availability, and estimated impact.
View tool JSON
{
"name": "get_available_decisions",
"kind": "answer",
"impl": "imperative",
"description": "[OBSERVE · READ-ONLY] Lists structured decision options currently allowed (scope, schedule, team, resources). Does NOT mutate state. Use after get_simulation_state and before preview_decision or apply_decision. Each entry includes id, title, category, availability, and estimated impact.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}preview_decisionAnswer
[ANALYZE · READ-ONLY] Dry-runs a decision without mutating live state. Returns previewId, simulationVersion, structured consequences (direct/secondary/emergent), metric deltas, and an explanation block. REQUIRED WORKFLOW: get_simulation_state → get_available_decisions → preview_decision → explain to user → wait for confirmation → apply_decision. Never auto-apply after preview. Input: decision_id from get_available_decisions.
View tool JSON
{
"name": "preview_decision",
"kind": "answer",
"impl": "imperative",
"description": "[ANALYZE · READ-ONLY] Dry-runs a decision without mutating live state. Returns previewId, simulationVersion, structured consequences (direct/secondary/emergent), metric deltas, and an explanation block. REQUIRED WORKFLOW: get_simulation_state → get_available_decisions → preview_decision → explain to user → wait for confirmation → apply_decision. Never auto-apply after preview. Input: decision_id from get_available_decisions.",
"inputSchema": {
"type": "object",
"properties": {
"decision_id": {
"type": "string",
"description": "ID from get_available_decisions."
}
},
"required": [
"decision_id"
],
"additionalProperties": false
}
}compare_scenario_branchAnswer
[ANALYZE · READ-ONLY] Compares scenario outcomes without mutating state. Default: Scenario A = current plan, Scenario B = preview of decision_id. For head-to-head (e.g. "reduce scope vs add team member"), pass decision_id AND versus_decision_id. Returns metrics (successProbability, risk, timePressure, resourcePressure, teamCapacity, outcomeQuality), deltas, and a recommendation signal (better_for_success | better_for_speed | better_for_resources | tradeoff | neutral) for agent reasoning — not a user directive.
View tool JSON
{
"name": "compare_scenario_branch",
"kind": "answer",
"impl": "imperative",
"description": "[ANALYZE · READ-ONLY] Compares scenario outcomes without mutating state. Default: Scenario A = current plan, Scenario B = preview of decision_id. For head-to-head (e.g. \"reduce scope vs add team member\"), pass decision_id AND versus_decision_id. Returns metrics (successProbability, risk, timePressure, resourcePressure, teamCapacity, outcomeQuality), deltas, and a recommendation signal (better_for_success | better_for_speed | better_for_resources | tradeoff | neutral) for agent reasoning — not a user directive.",
"inputSchema": {
"type": "object",
"properties": {
"decision_id": {
"type": "string",
"description": "Primary alternate decision id. Scenario B uses this unless versus_decision_id is set (then Scenario A)."
},
"versus_decision_id": {
"type": "string",
"description": "Optional second decision for A-vs-B comparison (e.g. reduce scope vs add team member)."
}
},
"additionalProperties": false
}
}simulateAction
[ANALYZE · READ-ONLY] Recomputes metrics and narrative on a cloned copy without changing live state. Use to refresh projections after observing state. Does not advance the day or apply decisions.
View tool JSON
{
"name": "simulate",
"kind": "act",
"impl": "imperative",
"description": "[ANALYZE · READ-ONLY] Recomputes metrics and narrative on a cloned copy without changing live state. Use to refresh projections after observing state. Does not advance the day or apply decisions.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}apply_decisionAction
[MUTATE] Commits a decision to the live simulation. Mutates tasks, metrics, events, and increments simulationVersion. Only call after the user confirms a preview_decision result. Requires preview_id from preview_decision — missing, invalid, or stale previews are rejected without mutating state. Input: decision_id (required), preview_id (required).
View tool JSON
{
"name": "apply_decision",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Commits a decision to the live simulation. Mutates tasks, metrics, events, and increments simulationVersion. Only call after the user confirms a preview_decision result. Requires preview_id from preview_decision — missing, invalid, or stale previews are rejected without mutating state. Input: decision_id (required), preview_id (required).",
"inputSchema": {
"type": "object",
"properties": {
"decision_id": {
"type": "string",
"description": "ID from get_available_decisions."
},
"preview_id": {
"type": "string",
"description": "previewId returned by preview_decision. Must match decision_id and current simulationVersion."
}
},
"required": [
"decision_id",
"preview_id"
],
"additionalProperties": false
}
}advance_dayAction
[MUTATE] Moves the simulation forward one day. Progresses tasks, evolves risks, may emit events, and increments simulationVersion. Fails with DEADLINE_REACHED if already at the deadline.
View tool JSON
{
"name": "advance_day",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Moves the simulation forward one day. Progresses tasks, evolves risks, may emit events, and increments simulationVersion. Fails with DEADLINE_REACHED if already at the deadline.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}change_deadlineAction
[MUTATE] Sets the scenario deadline in total days and increments simulationVersion. For "what if we extend/shrink the deadline?" questions, prefer preview_decision with a move_deadline decision instead. Input: days (integer ≥ 1).
View tool JSON
{
"name": "change_deadline",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Sets the scenario deadline in total days and increments simulationVersion. For \"what if we extend/shrink the deadline?\" questions, prefer preview_decision with a move_deadline decision instead. Input: days (integer ≥ 1).",
"inputSchema": {
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"description": "New total deadline length in days (minimum 1)."
}
},
"required": [
"days"
],
"additionalProperties": false
}
}add_taskAction
[MUTATE] Adds a task to the live scenario. Increments simulationVersion. Required: title, description, estimated_days, day_start, day_end, priority. Optional: status, assignee_id.
View tool JSON
{
"name": "add_task",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Adds a task to the live scenario. Increments simulationVersion. Required: title, description, estimated_days, day_start, day_end, priority. Optional: status, assignee_id.",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"blocked",
"needs_restructure",
"completed"
]
},
"assignee_id": {
"type": [
"string",
"null"
]
},
"estimated_days": {
"type": "number",
"minimum": 0
},
"day_start": {
"type": "integer",
"minimum": 0
},
"day_end": {
"type": "integer",
"minimum": 0
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"title",
"description",
"estimated_days",
"day_start",
"day_end",
"priority"
],
"additionalProperties": false
}
}remove_taskAction
[MUTATE] Removes a task by task_id from the live scenario. Increments simulationVersion. Fails with TASK_ALREADY_COMPLETED if the task is done. Input: task_id from get_simulation_state.tasks.
View tool JSON
{
"name": "remove_task",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Removes a task by task_id from the live scenario. Increments simulationVersion. Fails with TASK_ALREADY_COMPLETED if the task is done. Input: task_id from get_simulation_state.tasks.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "string"
}
},
"required": [
"task_id"
],
"additionalProperties": false
}
}add_resourceAction
[MUTATE] Adds a resource pool (budget, time, tools, infrastructure, other) to the live scenario. Increments simulationVersion. Required: name, type, amount, unit, remaining.
View tool JSON
{
"name": "add_resource",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Adds a resource pool (budget, time, tools, infrastructure, other) to the live scenario. Increments simulationVersion. Required: name, type, amount, unit, remaining.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"budget",
"time",
"tools",
"infrastructure",
"other"
]
},
"amount": {
"type": "number",
"minimum": 0
},
"unit": {
"type": "string"
},
"remaining": {
"type": "number",
"minimum": 0
}
},
"required": [
"name",
"type",
"amount",
"unit",
"remaining"
],
"additionalProperties": false
}
}add_team_memberAction
[MUTATE] Adds a team member with role, capacity (0–100), and skills to the live scenario. Increments simulationVersion. For "what if we add capacity?" prefer preview_decision with add_team_member first.
View tool JSON
{
"name": "add_team_member",
"kind": "act",
"impl": "imperative",
"description": "[MUTATE] Adds a team member with role, capacity (0–100), and skills to the live scenario. Increments simulationVersion. For \"what if we add capacity?\" prefer preview_decision with add_team_member first.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"role": {
"type": "string"
},
"capacity": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"skills": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name",
"role",
"capacity",
"skills"
],
"additionalProperties": false
}
}