Skip to main content
Glama
akontadakis
by akontadakis

daylight_savings

Simulate daylight at reference points to compute automated lighting control savings, supporting point-in-time and annual modes, with optional plan preview without execution.

Instructions

Automated daylight-responsive savings: daylight sim at the reference points -> lighting_controls.

mode='point_in_time' uses run_grid (scene_sets + points; supports multiple reference points); mode='annual' uses run_annual_daylight (channel_scenes + wea + points, 8760 h) and supports a multi-point grid (one weight per reference point) via points=[...] or sensor_set='name'. run=False emits the command plan without executing. An annual run elicits confirmation first (it is long); decline -> the emitted plan is returned.

weights: one per reference point, interpreted as that daylight zone's FLOOR-AREA FRACTION, so they must sum to <= 1.0 (NOT one-per-zone full-power flags -- e.g. [1, 1] is invalid; use [0.4, 0.3] etc.). The leftover (1 - Σweights) is the uncontrolled core area billed at full power. For a single point pass [1.0]. Compute proper fractions with hcl_core.lighting_controls.area_weights_from_geometry(width, length, window_head, task_height).

Return shapes: {"ran": False, ...commands...} (not executed); {"ran": True, "error": ..., "failed_step": ...} (a Radiance step failed mid-run); else {"ran": True, "mode": ..., "controls": ...} on success.

Note: in annual mode with schedule=None, the default weekday 08:00-18:00 mask is built to the length run_annual returns and assumes an 8760-h, Monday-anchored (HOY 0 = Mon 00:00) series. If run_annual is run over a sub-period or a non-Monday-anchored year, pass an explicit schedule.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
runNo
weaNo
areaNo
isetNo
modeNopoint_in_time
fL_minNo
fP_minNo
pointsNo
n_stepsNo
p_ratedNo
qualityNo
weightsNo
scheduleNo
work_dirNo
rad_paramsNo
scene_setsNo
sensor_setNo
channel_typeNo
control_typeNoContinuousOff
channel_scenesNo
workbook_compatNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does an excellent job: it discloses the confirmation prompt for annual runs, the three return shapes, the weight interpretation (floor-area fraction, sum <= 1.0), and the schedule assumptions. This is far beyond the minimum and leaves no ambiguity about side effects or return values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but information-dense; it front-loads the purpose and then systematically covers modes, weights, return shapes, and the schedule note. No sentence is wasted, but the density makes it a wall of text. It could benefit from bullet points or clearer section separation, but the structure is logical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers high-level behavior, return shapes, and the critical weights/schedule semantics. However, it omits explanations for many parameters, and while it references underlying tools (run_grid, run_annual_daylight), the agent cannot safely call this tool without understanding those parameters. An output schema exists, but it lacks descriptions, so the description must do more. It is adequate for an expert but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains mode, points, sensor_set, weights, schedule, and run, and even gives a helper function for weights. However, 21 parameters exist, and many (area, iset, fL_min, fP_min, n_steps, p_rated, quality, work_dir, rad_params, scene_sets, channel_type, control_type, channel_scenes, workbook_compat) are left undocumented. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear purpose: 'Automated daylight-responsive savings: daylight sim at the reference points -> lighting_controls.' It names the two modes and the underlying functions (run_grid, run_annual_daylight). It is not a tautology, but it doesn't explicitly differentiate from sibling tools like run_grid or annual_daylight, so it misses the highest mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly explains when to use each mode (point_in_time vs annual) and the run=False behavior. It also provides a note about schedule assumptions for annual mode. However, it does not explicitly state when not to use this tool or name direct alternatives beyond the underlying functions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.