{"ok":true,"site":{"host":"gridtwin.vercel.app","url":"https://gridtwin.vercel.app/","type":"live","desc":"GridTwin is an indicative microgrid planning sandbox for Riverside Estate.","tools":[{"name":"get_project_baseline","kind":"answer","impl":"imperative","description":"Read the synthetic demand, costs, emissions, outage assumptions, bounds, model assumptions, and approved planning criteria.","title":"Read Riverside Estate baseline","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"propose_constraints","kind":"act","impl":"imperative","description":"Stage advisory planning criteria for human review. This never applies or approves them.","title":"Stage planning constraints","inputSchema":{"type":"object","properties":{"max_capital_cost_gbp":{"type":"number","minimum":0,"maximum":2000000},"min_emissions_reduction_pct":{"type":"number","minimum":0,"maximum":100},"desired_coverage_hours":{"type":"integer","minimum":1,"maximum":8},"priorities":{"type":"array","minItems":3,"maxItems":3,"uniqueItems":true,"items":{"enum":["resilience","emissions","cost"]}},"rationale":{"type":"string","minLength":1,"maxLength":400}},"required":["max_capital_cost_gbp","min_emissions_reduction_pct","desired_coverage_hours","priorities","rationale"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"run_scenario","kind":"act","impl":"imperative","description":"Run one deterministic solar-and-battery configuration against the approved criteria and add the completed result visibly to GridTwin.","title":"Run a microgrid scenario","inputSchema":{"type":"object","properties":{"solar_kwp":{"type":"integer","minimum":50,"maximum":350,"multipleOf":25,"description":"Installed solar capacity in kWp."},"battery_kwh":{"type":"integer","minimum":100,"maximum":700,"multipleOf":50,"description":"Battery nameplate capacity in kWh."},"approach_label":{"type":"string","enum":["solar-heavy","battery-heavy","balanced","custom"]},"rationale":{"type":"string","maxLength":400}},"required":["solar_kwp","battery_kwh"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_scenarios","kind":"act","impl":"imperative","description":"Compare two or three current scenarios across cost, emissions, reserve preparation, resilience, and explicit violations without a composite score.","title":"Compare scenarios","inputSchema":{"type":"object","properties":{"scenario_ids":{"type":"array","minItems":2,"maxItems":3,"uniqueItems":true,"items":{"type":"string"}}},"required":["scenario_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_nearest_feasible","kind":"answer","impl":"imperative","description":"When every selected scenario is infeasible, rank the nearest existing candidates and quantify every constraint violation. This does not search or relax constraints.","title":"Diagnose nearest candidate","inputSchema":{"type":"object","properties":{"scenario_ids":{"type":"array","minItems":2,"maxItems":3,"uniqueItems":true,"items":{"type":"string"}}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"shortlist_scenario","kind":"act","impl":"imperative","description":"Mark one feasible current scenario as reversible agent advice. This never approves the plan.","title":"Shortlist a scenario","inputSchema":{"type":"object","properties":{"scenario_id":{"type":"string","minLength":1},"explanation":{"type":"string","minLength":1,"maxLength":500}},"required":["scenario_id","explanation"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prepare_plan_export","kind":"act","impl":"imperative","description":"Prepare an immutable one-page decision-brief snapshot only after direct human plan approval. This never prints, downloads, or publishes.","title":"Prepare the decision brief","inputSchema":{"type":"object","properties":{"scenario_id":{"type":"string","minLength":1}},"required":["scenario_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"apiSurface":"spec","category":"AI & Agents","toolCount":7}}