Skip to main content
Glama

query_nightlights

Read-onlyIdempotent

Query NASA Black Marble night-lights (VIIRS VNP46A2, ~500 m): moonlight/atmosphere-corrected nighttime radiance sampled nightly at every FIRMS-watched facility, plus significance events judged against each facility's OWN clear-night baseline. Two modes. mode="events" (default) reads SITE-LEVEL significance events — went_dark_lights (a habitually-lit facility dark across several consecutive CLEAR nights: the outage signal), surge (materially brighter than its own norm), first_light (a reliably-dark facility lights up). Use it for "which power stations went dark last week", "unusual lighting activity in Kuwait". mode="radiance" reads the per-facility nightly radiance rollup — use it for baseline questions ("how bright is Bandar Abbas at night", "clear-night trend at Az Zour"). CRITICAL INTERPRETATION RULES — RADIANCE IS NOT POWER STATE. A dark pixel is not a confirmed outage: cloud, snow, moon geometry and the ~500 m footprint all hide light, so went_dark_lights requires SUSTAINED absence across multiple confidently-CLEAR nights and is still an inference, never a verdict. Judgements use confident_clear observations ONLY (cloud scatters city light back at the sensor — cloudy readings average ~100x brighter and would fake both surges and collapses). ABSENCE OF A ROW IS ABSENCE OF A LOOK, never darkness. Counts are per PHYSICAL SITE, not per registry row (one plant = many generating-unit rows at identical coordinates). LATENCY: NASA publishes VNP46A2 in stages, typically ~1-2 WEEKS behind — every response carries a coverage block with newest_night and lag_days; answers describe that week, NOT last night, and you must say so. Thermal (FIRMS) and night-lights are INDEPENDENT sensors — infrared combustion power vs visible emitted light — so agreement between them (e.g. a FIRMS went_dark and a went_dark_lights at the same facility) is materially stronger evidence than either alone. Corroborate across both before characterising an outage.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days ENDING AT THE NEWEST DATA NIGHT (not today — see coverage.lag_days). Default 14, max 60.
modeNo"events" (default, site-level significance) | "radiance" (per-facility nightly rollup).
limitNoDefault 50, max 500.
countryNoCountry-name substring (e.g. "Kuwait", "Saudi"). NOTE: attribution is dense for power plants but sparse for refineries — prefer facility_name for refineries.
event_typeNoevents mode: went_dark_lights | surge | first_light. Filter optional.
facility_nameNoFacility/site-name substring (e.g. "Az Zour", "Bandar Abbas"). Filter optional.
facility_typeNoradiance mode: refinery | power_plant. Filter optional.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds substantial behavioral context beyond annotations: radiance is not power state, cloudy readings average ~100x brighter, absence of a row means absence of a look rather than darkness, counts are per physical site not registry row, and NASA latency means responses describe a week 1-2 weeks in the past. These are critical interpretation rules an agent could not infer from annotations or schema.

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 deliberately structured: it opens with the core definition, then mode-specific usage, then CRITICAL INTERPRETATION RULES in capitalized sections, then latency and sensor-independence notes. Every sentence carries necessary caveats or guidance; the length is justified by the complexity of interpreting night-lights. It is slightly dense, which prevents a 5, but it is far from bloated.

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

Completeness5/5

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

For a tool with no output schema and high interpretative complexity, the description is remarkably complete. It specifies what the response contains (site-level events or radiance rollup, plus a coverage block with newest_night and lag_days), explains event semantics, provides critical false-positive causes, and tells the agent how to frame answers relative to latency. Nothing essential for correct invocation and interpretation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the meaning of mode values ('site-level significance events' vs 'per-facility nightly radiance rollup'), defining the event types, and clarifying that days ends at the newest data night rather than today. It reinforces the country attribution caveat and adds the physical-site counting rule, which enriches parameter understanding without repeating schema text.

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

Purpose5/5

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

The description opens with a precise definition: query NASA Black Marble night-lights (VIIRS VNP46A2, ~500 m), listing the data product, resolution, and what is sampled. It clearly distinguishes two modes ('events' vs 'radiance') and names the specific event types (went_dark_lights, surge, first_light). It also separates this tool from FIRMS/thermal sensing by stating they are independent sensors, which differentiates it from the sibling query_thermal_anomalies.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance with concrete example queries ('which power stations went dark last week', 'unusual lighting activity in Kuwait', 'how bright is Bandar Abbas at night'). It also provides a clear when-not-to-use: a dark pixel is not a confirmed outage and went_dark_lights is an inference, never a verdict. It explicitly instructs the agent to corroborate with FIRMS/thermal data before characterizing an outage, effectively naming the alternative sensor/tool.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources