{"ok":true,"site":{"host":"life-sim-pied.vercel.app","url":"https://life-sim-pied.vercel.app/","type":"live","desc":"LifeSim — interactive decision simulation for goals, constraints, risks, and outcomes.","tools":[{"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.","title":"Get simulation state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"List available decisions","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Preview decision impact","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"decision_id":{"type":"string","description":"ID from get_available_decisions."}},"required":["decision_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Compare scenario branches","annotations":{"readOnlyHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Recalculate simulation preview","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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).","title":"Apply decision","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Advance simulation day","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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).","title":"Change deadline","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"days":{"type":"integer","minimum":1,"description":"New total deadline length in days (minimum 1)."}},"required":["days"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Add task","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Remove task","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"task_id":{"type":"string"}},"required":["task_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Add resource","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Add team member","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/life-sim-pied.vercel.app.svg","apiSurface":"spec","toolCount":12}}