gradeNot graded
get_model_specAnswer
Call this FIRST. Returns all parameter names, ranges, units, fixed physical/economic constants, and output metric definitions. Everything you need to form valid inputs for set_params, sweep, and grid_search.
View tool JSON
{
"name": "get_model_spec",
"kind": "answer",
"impl": "imperative",
"description": "Call this FIRST. Returns all parameter names, ranges, units, fixed physical/economic constants, and output metric definitions. Everything you need to form valid inputs for set_params, sweep, and grid_search."
}get_stateAnswer
Returns current slider values (params), the latest full-fidelity result, pinned run labels, and whether a sweep is loaded. Use this to understand what the user has configured before making changes.
View tool JSON
{
"name": "get_state",
"kind": "answer",
"impl": "imperative",
"description": "Returns current slider values (params), the latest full-fidelity result, pinned run labels, and whether a sweep is loaded. Use this to understand what the user has configured before making changes."
}set_paramsAction
Updates one or more sliders and immediately returns the new full-fidelity result. Partial updates are fine — unspecified params keep their current values. The sliders visibly move on screen when you call this.
View tool JSON
{
"name": "set_params",
"kind": "act",
"impl": "imperative",
"description": "Updates one or more sliders and immediately returns the new full-fidelity result. Partial updates are fine — unspecified params keep their current values. The sliders visibly move on screen when you call this.",
"inputSchema": {
"type": "object",
"properties": {
"panels": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"batteryKwh": {
"type": "number",
"minimum": 0,
"maximum": 30
},
"inverterKw": {
"type": "number",
"minimum": 1,
"maximum": 10
},
"dailyLoadKwh": {
"type": "number",
"minimum": 3,
"maximum": 25
},
"loadShape": {
"type": "string",
"enum": [
"evening_heavy",
"flat",
"daytime_heavy"
]
}
}
}
}runAction
Runs the full-fidelity 8760-hour simulation. Pass a partial params override to evaluate a hypothetical config without moving the sliders. Use this after sweep/grid_search to get precise numbers on a shortlisted config.
View tool JSON
{
"name": "run",
"kind": "act",
"impl": "imperative",
"description": "Runs the full-fidelity 8760-hour simulation. Pass a partial params override to evaluate a hypothetical config without moving the sliders. Use this after sweep/grid_search to get precise numbers on a shortlisted config.",
"inputSchema": {
"type": "object",
"properties": {
"panels": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"batteryKwh": {
"type": "number",
"minimum": 0,
"maximum": 30
},
"inverterKw": {
"type": "number",
"minimum": 1,
"maximum": 10
},
"dailyLoadKwh": {
"type": "number",
"minimum": 3,
"maximum": 25
},
"loadShape": {
"type": "string",
"enum": [
"evening_heavy",
"flat",
"daytime_heavy"
]
}
}
}
}sweepAction
Sweeps one numeric parameter across a range (fast simulation). Use this before grid_search to understand how a single variable moves key metrics. Returns top 10 by annual cost + the best config. Max 500 steps. Shows an approval modal when > 200 configs.
View tool JSON
{
"name": "sweep",
"kind": "act",
"impl": "imperative",
"description": "Sweeps one numeric parameter across a range (fast simulation). Use this before grid_search to understand how a single variable moves key metrics. Returns top 10 by annual cost + the best config. Max 500 steps. Shows an approval modal when > 200 configs.",
"inputSchema": {
"type": "object",
"required": [
"param",
"from",
"to",
"steps"
],
"properties": {
"param": {
"type": "string",
"enum": [
"panels",
"batteryKwh",
"inverterKw",
"dailyLoadKwh"
]
},
"from": {
"type": "number"
},
"to": {
"type": "number"
},
"steps": {
"type": "integer",
"minimum": 2,
"maximum": 500
}
}
}
}grid_searchAction
Evaluates a Cartesian product of parameter ranges (fast simulation). Use for multi-dimensional optimisation after 1-D sweeps have narrowed the interesting region. Hard cap 20,000 configs. Returns top 10 ranked by your objective. Shows an approval modal when > 200 configs.
View tool JSON
{
"name": "grid_search",
"kind": "act",
"impl": "imperative",
"description": "Evaluates a Cartesian product of parameter ranges (fast simulation). Use for multi-dimensional optimisation after 1-D sweeps have narrowed the interesting region. Hard cap 20,000 configs. Returns top 10 ranked by your objective. Shows an approval modal when > 200 configs.",
"inputSchema": {
"type": "object",
"required": [
"ranges",
"objective"
],
"properties": {
"ranges": {
"type": "object",
"description": "Map of paramName → { from, to, steps }",
"additionalProperties": {
"type": "object",
"required": [
"from",
"to",
"steps"
],
"properties": {
"from": {
"type": "number"
},
"to": {
"type": "number"
},
"steps": {
"type": "integer",
"minimum": 2
}
}
}
},
"objective": {
"type": "string",
"enum": [
"min_annual_cost",
"min_payback",
"max_self_sufficiency"
]
},
"constraints": {
"type": "object",
"properties": {
"minSelfSufficiencyPct": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"maxCapexINR": {
"type": "number",
"minimum": 0
}
}
}
}
}
}pin_runAction
Pins the current configuration and full-fidelity result under a label. Use this before moving to a different config so you can compare candidates later with compare_runs.
View tool JSON
{
"name": "pin_run",
"kind": "act",
"impl": "imperative",
"description": "Pins the current configuration and full-fidelity result under a label. Use this before moving to a different config so you can compare candidates later with compare_runs.",
"inputSchema": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 40
}
}
}
}compare_runsAction
Returns a metric-by-metric diff table for the given pinned run labels. Use after pinning several candidate configs to pick the winner.
View tool JSON
{
"name": "compare_runs",
"kind": "act",
"impl": "imperative",
"description": "Returns a metric-by-metric diff table for the given pinned run labels. Use after pinning several candidate configs to pick the winner.",
"inputSchema": {
"type": "object",
"required": [
"labels"
],
"properties": {
"labels": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 10
}
}
}
}explain_stateAction
Returns a plain-language paragraph describing the current configuration, what the numbers mean, and the key tradeoffs. Use this to summarise findings for the user or to sanity-check your understanding before making further changes.
View tool JSON
{
"name": "explain_state",
"kind": "act",
"impl": "imperative",
"description": "Returns a plain-language paragraph describing the current configuration, what the numbers mean, and the key tradeoffs. Use this to summarise findings for the user or to sanity-check your understanding before making further changes."
}