Smarter Weather
Server Details
Smarter Weather MCP: forecasts, alerts, outlooks, observations, AQI, grids, and map imagery.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- smarterweather/developer
- GitHub Stars
- 1
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 28 of 28 tools scored.
Each tool has a clearly distinct purpose, covering different aspects of weather data (forecasts, observations, alerts, lightning, storms, air quality, etc.). Potential overlaps like get_forecast and get_current_conditions are clarified in descriptions, preventing confusion.
Most tools follow a verb_noun pattern, but the verbs vary (get, list, describe, find, reverse, search, compare, query). While the format is consistent, the lack of a single verb prefix reduces predictability.
28 tools is on the higher side but appropriate given the broad scope of weather data covered (forecasts, observations, alerts, lightning, storms, air quality, datasets, maps, etc.). Each tool serves a specific function, justifying the count.
The tool surface is highly comprehensive, covering nearly all major weather data types: forecasts, observations, alerts, climate records, lightning, storms, air quality, tropical, sounding, maps, and specialized tools like growing degree days and population exposure. No obvious gaps for a general weather server.
Available Tools
31 toolscompare_locationsCompare locationsARead-onlyIdempotentInspect
Compare forecast variables across multiple locations side-by-side in one batched call. Returns a distilled per-location series matrix for direct comparison -- prefer this over N sequential forecast calls. Locations accept place names directly. Example: {"locations": [{"location": "Denver"}, {"location": "Boulder, CO"}], "variables": ["temperature_2m", "precipitation_probability"], "hours": 48}.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Forecast hours. Default 24. | |
| locations | Yes | Locations to compare (2-10). Each takes location OR lat/lon, optional label. | |
| variables | Yes | Standard variable names (e.g. temperature_2m, precipitation). | |
| dataset_id | No | Dataset override. Default: auto-resolved NBM per location. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hours | Yes | |
| variables | Yes | |
| comparisons | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, providing safety profile. Description adds behavioral specifics: batched call, returns comparison matrix, accepts place names directly. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a focused example. No fluff. Purpose stated first. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, 2 required, and presence of output schema, the description covers purpose, differentiation, and usage example. Agent has enough context to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides 100% coverage with descriptions for all 4 parameters. Description reinforces with an example showing typical usage (locations, variables, hours), adding concrete semantics beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'compare' and resource 'forecast variables across multiple locations', specifies it returns a 'distilled per-location series matrix', and distinguishes from siblings by recommending it over sequential forecast calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'prefer this over N sequential forecast calls', indicating it's for multi-location comparison. Does not explicitly state when not to use, but implied that single-location tools are alternatives. Clear enough for agent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_datasetDescribe datasetARead-onlyIdempotentInspect
Variables available in a dataset, with standard names, units, descriptions, and the time range of available data. Use before query_dataset to discover valid variable names. Example: {"dataset_id": "nbm_conus"}.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_id | Yes | Pipeline dataset identifier (e.g. "nbm_conus", "mrms_reflectivity_conus"). Discover valid values with list_datasets; inspect variables with describe_dataset. |
Output Schema
| Name | Required | Description |
|---|---|---|
| detail | Yes | |
| dataset_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that it returns standard names, units, descriptions, and time range, providing useful behavioral context beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an example, no unnecessary words, front-loaded with main purpose. Example enhances clarity without adding bulk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so description doesn't need to detail return format. It covers the key outputs (names, units, descriptions, time range) for a discovery tool. Simple and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with dataset_id well described. The description adds that valid values can be discovered via list_datasets, but this reinforces rather than adds new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns variables with names, units, descriptions, and time range. It also distinguishes itself from query_dataset by advising to use before querying. This is specific and differentiates from siblings like list_datasets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use before query_dataset to discover valid variable names' and includes an example. Provides clear context for when to use, though does not explicitly state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_best_windowFind best weather windowARead-onlyIdempotentInspect
Find the optimal time window for an activity based on weather criteria. Scans the forecast and returns daylight-aware periods matching all conditions. Criteria are expressed in the selected units system (default imperial: °F, mph, miles, feet). Example: {"location": "Boulder, CO", "criteria": {"min_temperature": 55, "max_wind_speed": 15, "max_precipitation_probability": 20}, "hours": 72, "activity_duration_hours": 3}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| hours | No | Hours to search. Default 72. | |
| units | No | Unit system for all values in the request and response: imperial (°F, mph, inches), metric (°C, km/h, mm), or si (K, m/s, mm). Defaults to imperial. | imperial |
| criteria | Yes | Weather criteria defining acceptable conditions (all optional). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| daylight_only | No | Only consider daylight hours (sunrise to sunset). Default true. | |
| activity_duration_hours | No | Minimum consecutive hours meeting criteria. Default 2. |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | Yes | |
| message | No | |
| windows | Yes | |
| location | Yes | |
| sun_times | No | |
| daylight_only | Yes | |
| criteria_applied | Yes | |
| activity_duration_hours | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint as false. The description adds that it scans the forecast and returns daylight-aware periods, which is useful behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an example. The first sentence front-loads the core purpose. The second adds scanning and daylight detail. The example is illustrative without being verbose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 params, nested criteria, output schema exists), the description covers the main behavior. It does not explain edge cases like no matching window, but the output schema likely covers return values. Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value with an example that illustrates parameter composition (e.g., criteria and location) and clarifies that criteria values are in the selected units system, which reinforces schema but provides cohesion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool finds the optimal time window for an activity based on weather criteria, specifying that it scans the forecast and returns daylight-aware periods. This distinguishes it from sibling tools like get_forecast which only retrieve raw data. The example further clarifies the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing an optimal weather window rather than raw data, but does not explicitly state when not to use or list alternatives. The example provides a concrete use case, which is helpful for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_air_qualityGet air qualityARead-onlyIdempotentInspect
AirNow air quality at a location (CONUS): current overall AQI plus per-pollutant detail (PM2.5, ozone, PM10 concentrations) and the AirNow AQI forecast. AQI scale: 0-50 good, 51-100 moderate, 101-150 unhealthy for sensitive groups, 151-200 unhealthy, 201-300 very unhealthy, 301+ hazardous. pollutants=["aqi"] (default) is the cheap headline call; add pollutant keys or include_forecast=true when the user digs in. Example: {"location": "Boise", "pollutants": ["aqi", "pm25"], "include_forecast": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| pollutants | No | Which measurements to return. aqi = combined AQI index. Default: ["aqi"]. | |
| include_forecast | No | Also return the AirNow next-day AQI forecast. |
Output Schema
| Name | Required | Description |
|---|---|---|
| widget | No | sw-ui-spec widget block rendered by the MCP Apps weather widget (ui://weather-widget/v1/index.html). Additive; safe to ignore. |
| current | Yes | |
| forecast | No | |
| location | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds that the tool covers CONUS only and explains the AQI scale, but does not disclose potential rate limits or data refresh behavior. This is adequate given annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus an example, with no wasted words. Key information (CONUS scope, AQI scale, default vs extended calls) is front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown but mentioned), the description sufficiently covers location input, pollutant options, forecast flag, and the AQI scale. The CONUS constraint is explicitly stated, and the tool's behavior as a read-only, idempotent operation is clear from annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the default pollutants as a 'cheap headline call,' clarifying when to use include_forecast, and providing an example that ties parameters together. This goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets AirNow air quality (AQI and per-pollutant) for CONUS locations, with both current and forecast data. This distinguishes it from sibling tools like get_current_conditions or get_forecast, which focus on weather rather than air quality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the default pollutants=["aqi"] as a 'cheap headline call' versus adding other pollutants or include_forecast for deeper detail, plus provides an example. It does not explicitly contrast with sibling tools, but the purpose clarity compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertsGet NWS alertsARead-onlyIdempotentInspect
Active NWS watches, warnings, and advisories. Location mode returns all alerts in effect at a point (severity, urgency, certainty, timing, headline, description, instructions); an empty result means no active alerts -- not a failure. alert_id mode returns full detail (including geometry) for one alert previously returned by this tool. Examples: {"location": "Miami"} or {"alert_id": "urn:oid:2.49.0.1.840..."}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| alert_id | No | Alert identifier for detail mode. When set, location is ignored. | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| alert | No | |
| alerts | No | |
| widget | No | sw-ui-spec widget block rendered by the MCP Apps weather widget (ui://weather-widget/v1/index.html). Additive; safe to ignore. |
| alert_id | No | |
| location | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by explaining that empty results indicate no active alerts (not failure), and detailing which fields each mode returns. Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description complements them well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise at 4 sentences, front-loaded with purpose, includes concrete examples, and uses bullet-like structure via semicolons and colons. Every sentence serves a clear function with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has output schema (not shown but indicated), so description needn't detail return values. It covers both modes, parameter relationships, edge case handling (empty result), and provides usage examples, making it complete for a 4-parameter tool with two usage modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3. The description adds examples (e.g., 'Miami', 'urn:oid:...'), clarifies that location OR lat+lon should be used (not both), and explains that alert_id ignores location, enhancing understanding beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Active NWS watches, warnings, and advisories' and distinguishes location mode from alert_id mode, making the tool's purpose specific and distinguishable from siblings like get_forecast or get_observations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use each mode (location vs alert_id) and clarifies that an empty result is not a failure. Lacks explicit when-not-to-use or alternatives among siblings, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_climate_normalsGet climate normalsARead-onlyIdempotentInspect
Day-of-year climate normals (NCEI 1991-2020 30-year averages) for a US location, from the nearest station with a record. Returns normal high, normal low, and normal mean for each date in the window, plus the station and how far away it is. Use this whenever a question needs a baseline rather than a forecast: "is this warm for October?", "what is a typical high here in January?", "how does this week compare to normal?". Pair it with get_forecast to say how far above or below normal the coming days run. Covers dates by day of year, so it answers for any date, past or future -- these are long-period averages, not a forecast and not observed history for a specific year.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Inclusive range end as YYYY-MM-DD. Must be supplied with start. | |
| lat | Yes | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | Yes | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| days | No | Range length in days when start/end are omitted; the window opens today (default 14). | |
| unit | No | Unit system for the normals. Default imperial (°F). | |
| start | No | Inclusive range start as YYYY-MM-DD. Must be supplied with end. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, establishing the tool as safe and non-destructive. The description adds context beyond annotations: it gets data from the nearest station with a record, covers dates by day of year, and clarifies that these are long-period averages (not random access to specific years). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, each sentence adds distinct value: what it does, what it returns, use cases, and pairing advice. It is front-loaded with the core purpose. Minor improvement could be structuring with bullets, but current text is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (2 required) and no output schema, the description sufficiently explains the data source (NCEI 1991-2020), what fields are returned (normal high, low, mean, station, distance), and the date handling (day-of-year). It does not detail output format or error conditions, but the annotation hints (readOnly) mitigate risk. Overall complete for an agent to decide usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description in the schema. The description adds value by explaining the date semantics (day-of-year basis, meaning the year in start/end is ignored for climate data) and that the tool covers US locations (though lat/lon globally valid). This provides context not present in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb-resource pair: 'day-of-year climate normals (NCEI 1991-2020 30-year averages) for a US location'. It clearly lists what is returned (normal high, low, mean, station, distance) and explicitly distinguishes from sibling tools like get_forecast and get_climate_records by stating it is not a forecast nor observed history for a specific year.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete example questions that trigger its use: 'is this warm for October?', 'what is a typical high here in January?', 'how does this week compare to normal?'. It also advises pairing with get_forecast for anomaly detection. It does not explicitly list when NOT to use it, but the examples imply it is for baseline comparisons, not for specific year data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_climate_recordsGet climate reports and recordsARead-onlyIdempotentInspect
NWS daily climate data: type=reports returns CLI daily climate reports (observed high/low/precip vs normals per station); type=records returns RER record event reports (record highs/lows/rainfall actually set). Filter by wfo (3-letter office, e.g. DMX), station, date (YYYY-MM-DD), start/end range, or hours lookback. Examples: {"type": "records", "hours": 48} or {"type": "reports", "wfo": "DMX", "date": "2026-07-04"}.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Range end date, YYYY-MM-DD. | |
| wfo | No | WFO office filter (e.g. DMX, OUN). | |
| date | No | Single date, YYYY-MM-DD. | |
| type | Yes | reports = CLI daily climate reports; records = RER record events. | |
| hours | No | Lookback window in hours (1-168) when no date/range is given. | |
| start | No | Range start date, YYYY-MM-DD. | |
| station | No | Station identifier filter (reports only). | |
| record_type | No | Record type filter (records only), e.g. HIGH, LOW, RAIN. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| results | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds behavioral context by specifying the data sources ('CLI daily climate reports', 'RER record event reports') and the effect of filtering parameters, which goes beyond the basic annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that efficiently cover the tool's purpose, types, filtering options, and examples. It is front-loaded with the core behavior and well-structured, though a slight reorganization could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to explain return values. It covers all input parameters, their roles, and usage patterns. The examples provide practical guidance, making the definition complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds significant value: it explains the semantic difference between the two types, clarifies that 'station' applies only to reports and 'record_type' only to records (not in schema), and gives practical examples. This greatly aids understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns NWS daily climate data for two specific types ('reports' and 'records'), with explicit details on content (observed high/low/precip vs record highs/lows/rainfall). This distinguishes it from sibling tools like get_observations or get_forecast, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each type parameter ('type=reports' vs 'type=records') and provides example parameter combinations. It does not explicitly list when not to use the tool or mention alternatives among siblings, but it gives sufficient context for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_conditionsGet current conditionsARead-onlyIdempotentInspect
Current weather right now at a location from two independent sources in one call: the RTMA gridded analysis (exact-point values, updated sub-hourly) and the nearest METAR station observation (ground truth with raw METAR, flight category). Use the analysis for point-accurate values and the station for verification. For a forecast, use get_forecast. Example: {"location": "Pella, IA"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| analysis | Yes | |
| location | Yes | |
| nearest_station | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context by revealing the two data sources (RTMA updated sub-hourly, METAR ground truth) and their complementary roles. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a succinct example. It front-loads the main action and key differentiator (two sources), and every sentence adds value without redundancy. The example is minimal but illustrative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of combining two data sources and the existence of an output schema, the description adequately covers the return values (analysis and station data). It could mention that results are from both sources, but the context is sufficient for an agent to understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage of parameters. The description adds an example of the location parameter and explains the role of each source, which enriches the schema documentation. However, the schema itself already describes lat/lon ranges and location format adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides current weather from two independent sources (RTMA and METAR) in one call, and distinguishes it from sibling tools like get_forecast. The verb 'get' combined with 'current conditions' and the explicit mention of sources makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use each source ('analysis for point-accurate values and the station for verification') and directs to get_forecast for forecasts. This provides clear guidance on tool selection and usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecastGet forecastARead-onlyIdempotentInspect
Complete weather overview for a location: current conditions, daily forecast (day/night periods, SPC threats, severity, CAPE, UV), active alerts, and convective outlooks in one call. Data is pre-aggregated across NBM, HRRR, GFS, RTMA, and SPC and unit-converted server-side. This is the primary weather tool; reach for lower-level tools only when you need raw observations or a specific dataset. Accepts a place name directly. Examples: {"location": "Denver"} or {"location": "Portland, OR", "days": 5} or {"lat": 41.4, "lon": -92.9}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| days | No | Number of forecast days (1-14). Default 10. | |
| units | No | Unit system for all values in the request and response: imperial (°F, mph, inches), metric (°C, km/h, mm), or si (K, m/s, mm). Defaults to imperial. | imperial |
| include | No | Comma-separated sections: current, daily, hourly, alerts, outlooks. Default "current,daily,alerts,outlooks". Use get_hourly_forecast for hourly detail. | current,daily,alerts,outlooks |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| detail_level | No | standard: compact response (~5-10KB); daily includes day_precip_probability / night_precip_probability when available (precip_probability is max of day/night). detailed: also preserves CAPE, UV, full day/night period objects, extra hourly fields (~12-20KB). | standard |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | Yes | |
| widget | No | sw-ui-spec widget block rendered by the MCP Apps weather widget (ui://weather-widget/v1/index.html). Additive; safe to ignore. |
| forecast | Yes | |
| location | Yes | |
| data_status | No | Present only when the platform reports degraded/outage data sources: overall state, a caveat note, and the affected sources. Absent means no advisory was available -- not a freshness guarantee. See get_platform_status for the full document. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, non-destructive. Description adds that data is pre-aggregated and unit-converted server-side, and accepts place names directly. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single focused paragraph front-loading the core purpose and usage guidance. Each sentence adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the wealth of sibling tools, the description is complete: it explains return sections, mentions hourly via sibling tool, and schema covers all parameters. Output schema further reduces need to detail return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of params. Description adds examples of valid location inputs and clarifies mutual exclusivity of location vs lat/lon. Explains include default and detail_level meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Complete weather overview' and lists included data (current conditions, daily forecast, alerts, outlooks). It specifies it's the primary weather tool, distinguishing it from lower-level alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states: 'reach for lower-level tools only when you need raw observations or a specific dataset', providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecast_discussionGet forecast discussionARead-onlyIdempotentInspect
Expert forecaster text products. type=afd: Area Forecast Discussion (WFO forecasters explain reasoning, uncertainty, model disagreements). type=hwo: Hazardous Weather Outlook (7-day hazard summary). type=mcd: SPC Mesoscale Discussions (real-time severe weather analysis). type=swo: SPC convective outlook discussion (why the risk areas are drawn where they are). type=fwd: SPC fire weather discussion. type=ero: WPC excessive rainfall / flash flood discussion. The last three are national products -- they need no location, and day selects the outlook day for swo and fwd. summary_only=true returns the pipeline LLM summary without the full body (much smaller). Examples: {"location": "Des Moines", "type": "afd"} or {"type": "swo", "day": 2, "summary_only": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | Outlook day for type=swo or type=fwd (1-8). Ignored for the other types; WPC files ERO days 1-3 under one product. | |
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| wfo | No | WFO identifier override (e.g. BOU). Default: resolved from the location. | |
| type | Yes | Product type: afd (WFO discussion), hwo (hazard outlook), mcd (SPC mesoscale), swo (SPC convective outlook), fwd (SPC fire weather), ero (WPC excessive rainfall). | |
| limit | No | Number of recent products (1-10). Default 1 (latest). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| summary_only | No | Return only the LLM summary + sections, omitting the full body text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| location | No | |
| products | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds value by detailing product-specific traits (e.g., 'day selects the outlook day for swo and fwd', 'summary_only returns the pipeline LLM summary without the full body'). No contradictions or missing safety disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise for the amount of information. It front-loads the general purpose and then organizes product types. Slightly verbose due to full examples, but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description does not need to detail return values. It covers all product types, location vs. no-location distinction, the day parameter scope, and the summary_only option. An agent can correctly invoke the tool based on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaningful context beyond schema: examples for location ('Des Moines'), clarification that day is ignored for some types, and explanation of summary_only. This significantly aids parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides 'Expert forecaster text products' and enumerates six product types (afd, hwo, mcd, swo, fwd, ero) with brief explanations of each. It gives concrete examples and distinguishes from other forecast tools by focusing on textual expert analysis rather than data or maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each product type (e.g., 'Area Forecast Discussion (WFO forecasters explain reasoning, uncertainty, model disagreements)'), notes that national products (swo, fwd, ero) require no location, and clarifies the day parameter usage. It does not explicitly contrast with sibling tools, but the purpose uniqueness is clear from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecast_distributionGet forecast distributionARead-onlyIdempotentInspect
Probabilistic forecast guidance from NBM for one aspect of the weather: percentile ranges (p10-p90), exceedance probabilities, and ensemble spread. Aspects: precip (PoP, QPF + percentiles), snow (accumulation percentiles, >1/2/4in probabilities, snow level), ice (freezing rain, accretion), temperature (temp/dewpoint + stddev), wind (speed/gust percentiles), severe (hail/tornado/damaging-wind probabilities), aviation (LIFR/IFR/MVFR visibility + ceiling probabilities), confidence (ensemble stddev; low spread = settled forecast). Examples: {"location": "Denver", "aspect": "snow", "hours": 72} or {"lat": 32.9, "lon": -97.0, "aspect": "severe"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| hours | No | Forecast hours (1-264). Default varies by aspect (48-72). | |
| aspect | Yes | Which distribution family to return (see tool description). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hours | Yes | |
| aspect | Yes | |
| series | Yes | |
| location | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, idempotent, and non-destructive, so safety is clear. The description adds useful behavioral context (source: NBM, output details like p10-p90, exceedance probabilities) that enriches understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences cover purpose, aspects, and return types. Examples are embedded efficiently. Zero wasted words; front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently explains what the tool returns (percentiles, probabilities, spread) and per-aspect details (e.g., snow includes accumulation and snow level). Annotations, schema, and context signals are well complemented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are well-described in the input schema (100% coverage). The description adds value via examples that illustrate common usage patterns (e.g., location vs lat/lon, aspect values) and the meaning of 'hours' and 'aspect' in context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool provides probabilistic forecast guidance for one aspect of weather, listing specific aspects and distribution types (percentiles, exceedance probabilities, spread). It distinguishes from siblings by emphasizing probabilistic nature, but does not explicitly contrast with 'get_forecast' or similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two concrete examples are given, but there is no explicit guidance on when to use this tool versus alternatives like 'get_forecast'. The description implies usage for probabilistic needs but lacks when-not-to-use or sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecast_skillGet forecast skillARead-onlyIdempotentInspect
How accurate our forecasts have actually been near a location, measured against observed analysis truth. Returns bias (positive = the model runs high), mean absolute error, RMSE, and a skill score against local climatology, per model, weather variable, and forecast lead time; for probability forecasts, the Brier score and a reliability breakdown. Use this to qualify a forecast rather than assert it -- "NBM has been running 1.8F warm at 3-day leads near you, so treat that 72 as around 70" -- and to answer "how much should I trust this forecast", "is the model biased here", or "how accurate were you last month". Evidence is reported at three scopes side by side: the exact point (strongest, slowest to accumulate), the ~50km neighborhood, and the ~300km region. Prefer the most specific scope that has samples. Metrics below minimumSamples observations are withheld and listed under insufficientHistory with their count -- say that history is still accumulating rather than treating thin numbers as evidence. Coverage is a rolling recent window over verified US variables, not all of history. Entries are per model and their samples are not matched, so never conclude that one model beats another by comparing their numbers here. Each entry states the truth field it was measured against -- one designated analysis per variable -- so never compare numbers carrying different truth values either.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| unit | No | Units for the error magnitudes. Default imperial (bias/MAE/RMSE in °F, mph, in). | |
| model | No | Narrow to one model, e.g. nbm. | |
| truth | No | Measure against a named truth source instead of the default one for each variable, e.g. urma. Only pass this if the user asked which analysis was used or named one; the default is already the designated source, and the analyses disagree, so switching changes the numbers. | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| variable | No | Narrow to one variable, e.g. temperature_2m, dew_point_2m, wind_speed_10m, wind_gusts_10m, cloud_cover, precipitation, precipitation_probability. Omit for everything measured at the location. | |
| lead_hours | No | Narrow to the lead time being asked about, in hours; the containing lead bucket is selected for you (60 gives the 48-72h bucket). Use the lead of the forecast you are qualifying: ~24 for tomorrow, ~72 for three days out. Never approximated -- a lead we have not verified returns no entries rather than a nearby bucket, so an empty result means we cannot speak to that range. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cells | No | |
| skill | Yes | |
| units | Yes | |
| tracked | Yes | Whether this exact coordinate is one the verification pipeline tracks. |
| location | Yes | |
| minimumSamples | Yes | |
| insufficientHistory | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description goes far beyond that, disclosing behavioral nuances: metrics withheld below minimumSamples, rolling recent window coverage, unmatched samples between models, and the truth field dependence. It also explains the three scopes and how to interpret sparse data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although dense, the description is efficiently structured: first sentence defines purpose, then metrics, then scopes, then caveats. Every sentence carries a distinct, useful warning or clarification. No redundancy with schema annotations; each word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complex tool with 8 optional parameters, an output schema, and rich annotations, the description covers all critical behavioral contexts: how to interpret metrics, scope selection, sample thresholds, rolling window, cross-model comparisons, and truth field mismatches. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by contextualizing parameter use: lead_hours are 'Never approximated' and an empty result means no verification, truth should only be passed when user asks, and it warns against comparing across truth fields. It also clarifies the scope model (point, 50km, 300km) that relates to location parameters, boosting value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific statement of exactly what the tool does: 'How accurate our forecasts have actually been near a location, measured against observed analysis truth.' It enumerates the specific metrics returned (bias, MAE, RMSE, skill score, Brier score, reliability breakdown) and differentiates itself from siblings by stating 'Use this to qualify a forecast rather than assert it' and listing the questions it answers ('is the model biased here', 'how accurate were you last month').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use and when-not-to-use guidance: 'Use this to qualify a forecast rather than assert it', and directly addresses alternatives with 'Prefer the most specific scope that has samples.' It also gives strong exclusions: 'never conclude that one model beats another by comparing their numbers here' and 'never compare numbers carrying different truth values'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_growing_degree_daysGet growing degree daysARead-onlyIdempotentInspect
Growing Degree Units (GDU / GDD) for a US location (CONUS, Alaska, Hawaii), computed from daily max/min temperatures. Pass a crop id (e.g. "corn", "soybean", "wheat") to use calibrated base/upper thresholds, or crop="custom" with base_temp_c (and optional upper_temp_c / method). Without season_start you get per-day GDU across the forecast horizon; WITH season_start (YYYY-MM-DD) you get the cumulative season-to-date total (observed history + today + forecast) plus a per-day cumulative series -- the number a grower tracks against crop milestones. Answers "how many growing degree days has my corn accumulated since May 1?" and "what's the GDU forecast this week?".
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | Yes | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| crop | Yes | Crop id from the catalog (e.g. "corn", "soybean", "wheat") or "custom" to supply your own thresholds via base_temp_c. | |
| days | No | Forecast horizon in days (default 10). | |
| unit | No | Unit system for GDU + temps. Default imperial (°F-days). | |
| method | No | GDU method for custom crops. Defaults from whether upper_temp_c is set. | |
| base_temp_c | No | Custom base threshold in °C. Required when crop="custom". | |
| season_start | No | Season/planting start as YYYY-MM-DD (local date). Presence switches the response to a cumulative season-to-date GDU total. Must be within the ~180-day observed window. | |
| upper_temp_c | No | Custom upper cutoff in °C (enables the modified method). Optional. | |
| day_definition | No | Daily boundary: "nws" (default; NBM MaxT/MinT period extremes) or "local_calendar" (midnight-to-midnight local day). | |
| include_milestones | No | Include the crop's growth-stage GDU milestones in the response. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds behavioral context: it computes from daily max/min temperatures, uses forecast horizon, and switches response mode based on season_start. This enhances understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, starting with a clear definition, then providing usage details. While slightly verbose, every sentence adds value and is front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, no output schema), the description covers the two main modes of operation, parameter roles, and example use cases. It is thorough but could mention location constraints beyond US or data source limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant meaning by explaining parameter interactions (e.g., crop with base_temp_c, season_start switches response), defaults, and usage patterns. It goes beyond mere parameter listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it computes Growing Degree Units for US locations, with specific details about crop thresholds and cumulative totals. It distinguishes itself from sibling tools, which are generic weather tools, by focusing on GDU calculations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use it (for GDU with crop or custom thresholds, with or without season_start) and provides example questions. However, it does not explicitly mention when not to use alternatives or provide exclusions, which would strengthen the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hourly_forecastGet hourly forecastARead-onlyIdempotentInspect
Blended hourly forecast: temperature, feels-like, humidity, wind, precipitation probability/amount, conditions, and icon per hour. Snapped to the current hour so hourly[0] is "now". Timestamps are UTC ISO 8601; convert to the local timezone before presenting. Accepts a place name directly. Example: {"location": "Chicago", "days": 2}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| days | No | Days of hourly data (1-7). Default 2 (48 hours). | |
| units | No | Unit system for all values in the request and response: imperial (°F, mph, inches), metric (°C, km/h, mm), or si (K, m/s, mm). Defaults to imperial. | imperial |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| detail_level | No | standard: compact hourly data (sampled past 24h). detailed: preserves CAPE, ceiling, UV, gust, thunderstorm probability for the first 48h. | standard |
Output Schema
| Name | Required | Description |
|---|---|---|
| units | Yes | |
| widget | No | sw-ui-spec widget block rendered by the MCP Apps weather widget (ui://weather-widget/v1/index.html). Additive; safe to ignore. |
| forecast | Yes | |
| location | Yes | |
| data_status | No | Present only when the platform reports degraded/outage data sources: overall state, a caveat note, and the affected sources. Absent means no advisory was available -- not a freshness guarantee. See get_platform_status for the full document. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds useful behavioral context: the forecast is 'blended', timestamps are UTC ISO 8601 requiring conversion, and hourly[0] represents the current hour. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences plus a short example. Every sentence adds value: first defines output, second explains time handling, third mentions input flexibility. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but noted), the description adequately covers key behavioral aspects: data included, time snapping, timezone handling, and input format. It does not explain pagination or rate limits, but those are less critical for a read-only forecast tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds value by mentioning the days default and the ability to use a location string directly, and includes an example. This is above baseline but not significantly more than the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'Blended hourly forecast' with specific fields (temperature, feels-like, etc.). It also notes the hourly data is snapped to the current hour, distinguishing it from daily forecasts like get_forecast or point conditions like get_current_conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says it accepts a place name directly and gives an example, implying when to use this tool (for hourly forecasts). However, it does not explicitly state when to avoid it or how it differs from siblings like get_forecast or get_current_conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lightning_activityGet lightning activityARead-onlyIdempotentInspect
Real-time lightning near a location: GLM satellite flash count (30km/10min) and MRMS ground-truth lightning density + 30-minute probability. The summary field is ready-to-use. A zero flash count means no lightning inside that window -- report it as a quiet observation scoped to the window in scope, never as a data gap. Only call when storms may be active or the user asks about lightning. Example: {"location": "Tampa"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| scope | Yes | Area and time window searched, so a zero count is unambiguous to report. |
| location | Yes | |
| lightning | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds value by explaining that a zero flash count is not a data gap but a quiet observation, and that results are scoped to the window in `scope`. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences plus an example) and front-loaded with the essential purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers the tool's behavior, edge cases (zero flash count), and appropriate usage. It does not need to repeat return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so parameters are well-documented. The description does not add much beyond the schema, except for an example usage that reinforces the 'location' parameter. This meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves real-time lightning data (GLM satellite flash count and MRMS ground-truth density + probability) near a location. It specifies the spatial and temporal scopes (30km/10min) and includes an example, effectively distinguishing it from sibling tools like get_current_conditions or get_forecast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call: 'Only call when storms may be active or the user asks about lightning.' This guides AI on appropriate context. While it doesn't list specific sibling alternatives, the distinction from other weather tools is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_snapshotGet map snapshotARead-onlyIdempotentInspect
Render a weather map image for visual analysis. Simple form: pass product (a viz-catalog product_id like "mrms_qpe_01h_pass2_conus", "goes_truecolor_conus", "spc_day1_categorical", or "nexrad_l3:{SITE}:{PRODUCT}" for single-site radar, e.g. "nexrad_l3:TLX:N0B") plus a location and zoom (5=regional, 8=metro, 10=city). Composed form: pass scene -- a declarative scene document layering basemap + multiple weather products + active alerts + storm features + inline GeoJSON in one image (layers draw bottom-to-top, under basemap labels). Example scene: {"scene":"1.0","view":{"center":{"lat":43.8,"lon":-91.2},"zoom":8},"layers":[{"type":"weather","product":"goes_truecolor_conus"},{"type":"weather","product":"nexrad_l3:ARX:N0B"},{"type":"alerts","filter":{"events":["Tornado Warning"]},"onError":"skip"}]}. Alert filters (all optional, AND-combined): ids (specific alerts), events, severities, minSeverity (Extreme>Severe>Moderate>Minor>Unknown). Returns the rendered image plus per-layer resolved valid times.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| time | No | Unix seconds; frame closest to this time (default: latest) | |
| zoom | No | Map zoom (simple form) | |
| scene | No | Full scene document (composed form). When set, product/location/zoom are ignored. | |
| width | No | ||
| height | No | ||
| opacity | No | Weather layer opacity | |
| product | No | viz-catalog product_id or nexrad_l3:{SITE}:{KEY} (simple form) | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: layering order (bottom-to-top, under basemap labels), alert filter behavior (AND-combined, optional onError). It also explains that the composed form ignores simple parameters. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the purpose. It is longer than ideal but every sentence adds value, providing examples and edge-case details. Minor redundancy in explaining 'simple form' and 'composed form' could be streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 params, nested objects, no output schema), the description covers main usage patterns, provides examples, and explains return value (image + per-layer times). Missing details like error handling or image format are acceptable without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage (context says 80% but all parameters have descriptions), the description goes beyond schema by explaining the two usage forms, providing a full scene example, detailing alert filters, and explaining the nexrad_l3 format. This adds significant semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose ('Render a weather map image for visual analysis') and distinguishes two forms (simple and composed) with examples. It uniquely positions the tool among sibling tools, which are mostly data retrieval tools, not map rendering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use each form: simple form for quick single-product maps, composed form for complex layered scenes. It does not explicitly state when not to use the tool or list alternatives, but the context is sufficient for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_observationsGet station observationsARead-onlyIdempotentInspect
METAR surface observations from weather stations: temperature, wind, visibility, ceiling, flight category, raw METAR. Nearest mode (default) returns the closest N stations to a location; station mode returns history for a specific ICAO identifier. Examples: {"location": "Denver", "n": 3} or {"station": "KJFK", "hours": 6}.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of nearest stations (1-10). Default 1. Ignored in station mode. | |
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| hours | No | Hours of history in station mode (1-24). | |
| station | No | ICAO station identifier (e.g. KJFK). Switches to station-history mode. | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| station | No | |
| location | No | |
| observations | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, non-destructive, and idempotent. The description adds valuable behavioral context: it explains the two operational modes, the data fields returned, and that 'n' is ignored in station mode. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—just two sentences. It front-loads the key data returned and efficiently explains both modes with examples. Every sentence contributes meaningful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, two modes, mode-dependent parameter behavior), the description is complete. It covers all modes, provides example inputs, lists output data, and since an output schema exists, return value details are unnecessary. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all 6 parameters with descriptions achieving 100% coverage. The description adds semantic value by explaining that 'n' is ignored in station mode, that 'location' accepts multiple formats (city, city+state, ZIP, lat,lon), and provides examples. This enriches understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies that the tool returns METAR surface observations (temperature, wind, etc.) and distinguishes two modes: nearest mode (returns closest stations to a location) and station mode (returns history for a specific ICAO identifier). The purpose is specific and well-differentiated from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each mode with concrete examples, e.g., 'nearest mode (default) returns the closest N stations to a location; station mode returns history for a specific ICAO identifier.' It provides example JSON inputs. While it doesn't explicitly state when not to use the tool, the guidance is clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outlooksGet hazard outlooksARead-onlyIdempotentInspect
Hazard outlooks affecting a location. hazard=severe returns SPC convective outlooks (Day 1-8 categorical risk + tornado/wind/hail probabilities); hazard=fire returns SPC fire weather outlooks; hazard=rain returns WPC Excessive Rainfall Outlook polygons (days 1-3); hazard=heat returns the NWS HeatRisk index at the point (0 none .. 4 extreme, days 1-3). include_narrative=true adds the forecaster discussion for severe (SWO), fire (FWD), or rain (QPF/QPFERD; one PIL for all days). An empty result means no outlook covers the point -- not a failure. Examples: {"location": "Moore, OK", "hazard": "severe", "include_narrative": true} or {"location": "Phoenix", "hazard": "heat"}.
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | Outlook day for the narrative filter (1-8). Default 1. | |
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| hazard | No | Hazard family: severe = SPC convective, fire = SPC fire weather, rain = WPC excessive rainfall, heat = NWS HeatRisk index. (Winter/WSSI is a planned expansion.) | severe |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| include_narrative | No | Include the forecaster narrative for the requested day (severe, fire, and rain). |
Output Schema
| Name | Required | Description |
|---|---|---|
| day | Yes | |
| hazard | Yes | |
| location | Yes | |
| outlooks | Yes | |
| heat_risk | No | |
| narrative | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context: what each hazard family returns, that narrative is included per day, and that empty results are not failures. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is slightly long (4 sentences plus examples) but well-structured: starts with a clear purpose, then details each hazard, explains include_narrative, and ends with examples. It is front-loaded with the main purpose, though some details could be condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the availability of an output schema (not shown but mentioned), the description does not need to explain return values. It covers all essential aspects: purpose, parameter semantics, behavioral notes, and examples. It is complete for an AI agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds significant meaning: it explains the hazard enum values in detail, provides usage context for include_narrative, and gives concrete examples. This elevates understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns hazard outlooks affecting a location, and distinguishes four hazard families (severe, fire, rain, heat) with specific details for each. This provides a specific verb+resource and separates it from sibling tools like get_forecast or get_alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each hazard type and includes guidance on the include_narrative parameter. It also clarifies that an empty result means no outlook covers the point, setting proper expectations. However, it does not explicitly state when not to use this tool versus alternatives like get_forecast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_period_totalsGet period totalsARead-onlyIdempotentInspect
Aggregate a weather variable over one or more time periods. Returns server-computed totals, maxima, minima, or averages per period. Period start/end times should use the user's local timezone boundaries (not UTC midnight). Response includes the converted value and unit per period. Ideal for questions like "total rainfall today and tomorrow" or "peak wind speed this weekend". Accepts a place name directly. Example: {"location": "Portland, OR", "variable": "precipitation", "aggregation": "sum", "periods": [{"start": "2026-07-08T07:00:00Z", "end": "2026-07-09T07:00:00Z", "label": "Today"}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| units | No | Unit system for all values in the request and response: imperial (°F, mph, inches), metric (°C, km/h, mm), or si (K, m/s, mm). Defaults to imperial. | imperial |
| periods | Yes | Time periods to aggregate over (1-14). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| variable | Yes | Standard variable name (e.g. precipitation, snowfall, temperature_2m, wind_speed_10m, cape). | |
| dataset_id | No | Dataset override. Default: auto-resolved NBM for the location. | |
| aggregation | No | Aggregation function. Default sum. Use sum for precipitation/snowfall, max for temperature/wind, min for low temperatures, avg for humidity/cloud cover. | sum |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | |
| periods | Yes | |
| location | Yes | |
| variable | Yes | |
| aggregation | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds important behavioral details beyond annotations: it notes that period boundaries should use user's local timezone (not UTC midnight) and that response includes converted value and unit per period. No contradiction with annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint all consistent).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured: starts with purpose, then behavioral notes, use cases, and an example. No unnecessary repetition. Length is appropriate for the tool's complexity (8 parameters, 2 required). Could be slightly more concise but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (8 params, 2 required, 100% schema coverage, output schema exists), the description covers key aspects: what it does, period timezone handling, aggregation types, and example usage. Meets requirements for a read-only aggregation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3, but description adds meaningful context: guidance on aggregation choices (sum for precipitation, max for temperature, etc.), mentions location can be a place name directly, and includes a complete example. These add value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it aggregates a weather variable over time periods and returns server-computed totals, maxima, minima, or averages. Specific examples like 'total rainfall today and tomorrow' and 'peak wind speed this weekend' distinguish it from siblings like get_forecast or get_current_conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides ideal use cases with examples ('total rainfall today and tomorrow' and 'peak wind speed this weekend'). Implicitly suggests using this tool for period-based aggregation but does not explicitly state when not to use it or name alternatives, though sibling context is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_statusGet platform statusARead-onlyIdempotentInspect
Current data-freshness status of the weather platform: overall state, per-source states (ok / degraded / outage / no_signal), open incidents with cause attribution (provider outage vs internal processing delay), and active provider advisories. Use this when a user asks whether data is current, when other tools return surprisingly stale data, or before presenting time-critical weather. If a source is degraded or in outage, tell the user their data may be stale rather than presenting it as live. No inputs. Refreshed about every 5 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| include_ok | No | true: list every monitored source including healthy ones. false (default): only sources that are not ok, keeping the response compact. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| overall | Yes | Worst state across customer-facing data sources; "unknown" when status is unavailable. |
| sources | No | |
| advisories | No | |
| generated_at | No | When the status document was generated (UTC). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. The description adds valuable context: it discloses that data is refreshed every 5 minutes, describes the output content (states, incidents, advisories), and provides interpretation guidance. The 'No inputs' statement is slightly misleading due to the optional parameter, but overall it enhances transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short and front-loaded with the output description. However, the inaccurate statement 'No inputs' wastes words and could mislead, detracting from conciseness and accuracy. It could be improved by removing that phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional boolean parameter) and the presence of annotations and an output schema, the description is reasonably complete. It covers the tool's purpose, usage context, and behavioral nuances. The only gap is the minor inaccuracy about inputs, but overall it provides sufficient context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema adequately describes the optional 'include_ok' parameter. However, the description says 'No inputs,' which contradicts the schema and adds no value; it may confuse an agent about the optional parameter. Thus, the description does not improve parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides data-freshness status of the weather platform, including overall state, per-source states, incidents, and advisories. It distinguishes from sibling tools by focusing on platform health rather than weather data, and specifies when to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: when a user asks about data freshness, when other tools return stale data, or before presenting time-critical weather. It also gives guidance on how to handle degraded sources. However, it does not explicitly mention when not to use it or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_population_exposureGet population exposureARead-onlyIdempotentInspect
National population-exposure headline for a risk-zone outlook product: how many people are inside risk bands at or above min_level. Powers headlines like "~57M people under major heat risk tomorrow". hazard=heat covers NWS HeatRisk days 1-3 (levels: 1 minor, 2 moderate, 3 major, 4 extreme). Pass product_id directly for other risk-zone products. Example: {"hazard": "heat", "min_level": 3}.
| Name | Required | Description | Default |
|---|---|---|---|
| hazard | No | Hazard family (expands the day-1..3 product set). Currently: heat (HeatRisk). | |
| min_level | No | Minimum risk level to count (>=). Default 1 (any elevated risk). | |
| product_id | No | Explicit risk-zone product ID (overrides hazard), e.g. heatrisk_day1_conus. |
Output Schema
| Name | Required | Description |
|---|---|---|
| min_level | Yes | |
| summaries | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description does not need to reiterate that. However, it adds behavioral context: the hazard parameter covers 'NWS HeatRisk days 1-3' and explains the level meanings. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences plus an example JSON. It front-loads the main purpose and adds necessary context without extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the availability of an output schema (not shown) and full parameter schema coverage, the description adequately covers the tool's purpose, usage, and examples. It could have mentioned the return format but that's likely in the output schema. Sufficient for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining the hazard parameter's scope (HeatRisk days 1-3, levels 1-4) and providing an example usage. This goes beyond the schema's enum and default descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a 'national population-exposure headline' for a risk-zone outlook product, with a concrete example ('~57M people under major heat risk tomorrow'). It distinguishes itself from sibling tools by focusing on aggregating population counts across risk bands, which is unique among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool: for risk-zone outlook products like HeatRisk, and provides guidance on using the hazard parameter vs. product_id. It does not explicitly list when not to use it or compare to siblings, but it gives enough context for an AI agent to understand the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_soundingGet radiosonde soundingARead-onlyIdempotentInspect
Nearest RAOB (radiosonde) vertical soundings to a point. Each sounding carries: profile (pressure-indexed thermodynamics: pressure_hpa, height_m, temperature_c, dewpoint_c, wind arrays), wind_profile (height-indexed winds for hodographs/shear), and derived indices (sbcape/mucape/mlcape + cin, lifted_index, k_index, total_totals, pwat_mm, freezing_level_m, lcl/lfc/el, bulk_shear_0_6km_kt). Soundings launch at 00Z/12Z so data can be hours old. Example: {"location": "Norman, OK"}.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of nearest soundings (1-5). Default 1. | |
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| location | Yes | |
| soundings | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds value by disclosing data staleness and detailing the output structure (profile, wind_profile, derived indices). This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, followed by structured details on output and usage notes. It is informative without waste, though the detailed output description might overlap with the output schema. Still, it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of sounding data and the existence of an output schema, the description covers purpose, parameter usage, output structure, data latency, and an example. It is fully complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value with an example ('{"location": "Norman, OK"}') and clarifies mutual exclusivity of location vs lat/lon, which is not fully captured in schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Nearest RAOB (radiosonde) vertical soundings to a point' with specific verb and resource. It clearly distinguishes from sibling 'get_sounding_chart' by focusing on raw data retrieval rather than chart generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context such as 'Soundings launch at 00Z/12Z so data can be hours old', giving guidance on data staleness. However, it does not explicitly state when not to use this tool or suggest alternatives like 'get_sounding_chart'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sounding_chartGet sounding chartARead-onlyIdempotentInspect
Render the nearest RAOB (radiosonde) sounding as a Skew-T log-P + hodograph chart image for visual analysis: temperature/dewpoint traces, wind barbs, height-banded hodograph, and a derived-indices table (CAPE/CIN, lifted index, PWAT, shear, LCL). Soundings launch at 00Z/12Z so data can be hours old. Use get_sounding for the raw profile numbers. Example: {"location": "Norman, OK"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| unit | No | Temperature axis display unit | fahrenheit |
| scale | No | Raster scale factor (2 = retina; higher = larger image payload) | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds value by noting that data can be stale (hours old) and that the output is a rendered chart. No contradictions exist between description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences plus an example. It front-loads key information and avoids redundancy. Every sentence adds value, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no required, no output schema), the description covers essential aspects: what the chart contains, data freshness, and how to use 'location' via an example. It is sufficient for an agent to understand usage, though it lacks details on image format or payload size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters adequately. The description provides general context and an example using 'location', but does not add significant new meaning for individual parameters beyond the schema. A score of 3 is appropriate per guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool renders the nearest RAOB sounding as a Skew-T log-P + hodograph chart, listing specific chart elements. It distinguishes itself from the sibling tool 'get_sounding' by noting that the latter provides raw profile numbers. This makes the purpose highly specific and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes an explicit alternative ('Use get_sounding for the raw profile numbers') and an example. It also hints at timing constraints (data can be hours old due to 00Z/12Z launch times). However, it does not provide explicit conditions for when not to use this tool, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storm_cellsGet storm cellsARead-onlyIdempotentInspect
Radar-identified storm cells near a location, merging NEXRAD Level III algorithm output from the nearest radar site: storm tracks (cell position, movement, forecast positions), hail index (probability of hail/severe hail + max expected size), mesocyclone detections (rotation), and TVS (tornado vortex signatures). Use during active convection to see what the radar algorithms flag. An empty result means no detected cells -- common outside active storms. Example: {"location": "Norman, OK"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| include | No | Which detection families to include. Default: all. | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tracks | No | |
| summary | Yes | Ready-to-use one-liner. States explicitly when nothing was detected. |
| location | Yes | |
| detections | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context by stating it uses NEXRAD Level III algorithm output from the nearest radar site and explains the meaning of empty results. This goes beyond what annotations provide, though it could further detail data freshness or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at three sentences, with the first sentence immediately stating the tool's purpose and key outputs. There is no extraneous information, and the structure is well-organized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 optional parameters, full schema coverage, and an output schema, the description covers the main purpose, usage context, and expected empty result behavior. It could optionally mention that the output includes derived metrics like velocity, but the output schema likely covers that. Overall, it is sufficiently complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters are described in the schema (100% coverage). The description provides an example using the location parameter but adds no additional semantic meaning beyond the schema. Baseline 3 is appropriate as the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns radar-identified storm cells near a location, listing specific outputs like tracks, hail index, mesocyclone detections, and TVS. It includes an example, distinguishing it from sibling tools like get_storm_reports (likely spotter reports) and get_current_conditions (general weather).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using it during active convection and explains that an empty result means no detected cells, which is common outside storms. However, it does not explicitly state when not to use it or contrast with alternatives like get_storm_reports or get_current_conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storm_reportsGet storm reportsARead-onlyIdempotentInspect
Recent NWS Local Storm Reports (LSRs) -- verified reports of tornadoes, hail, damaging winds, flooding near a location. Use to confirm severe weather occurrence or assess reported damage. Example: {"location": "Wichita", "hours": 12, "type": "H"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| type | No | Report type filter: T=tornado, H=hail, W=wind, F=flood, D=damage, S=snow. | |
| hours | No | Lookback window in hours (1-24). Default 6. | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hours | Yes | |
| reports | Yes | |
| location | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, openWorldHint) already indicate safe, read-only, non-destructive behavior. The description adds that reports are 'verified' and includes an example JSON, providing additional context about the data format without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a brief JSON example. Every part adds value: purpose, list of event types, use case, and example. No filler or repetition, efficiently front-loading key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with annotations and output schema (not shown but known), the description is fairly complete. It explains what data is retrieved (verified reports) and hints at query flexibility (location or lat/lon). Could mention report fields (e.g., time, magnitude) but output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already fully documents all parameters. The description adds a minor note that 'Most tools also accept a location string' (already implied in schema) and an example, but does not provide new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent NWS Local Storm Reports, listing specific event types (tornadoes, hail, damaging winds, flooding). It explicitly says 'Use to confirm severe weather occurrence or assess reported damage,' distinguishing it from sibling tools like get_alerts or get_observations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('confirm severe weather occurrence or assess reported damage'). It does not explicitly state when not to use or mention alternatives, but the purpose is sufficiently distinct that an agent can infer appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_contextGet time contextARead-onlyIdempotentInspect
Complete temporal context for a location: local time, timezone, 14-day calendar with day names and Today/Tomorrow offsets, sunrise/sunset/solar times (from the weather pipeline's astro product), and moon phase. Use whenever you need to reason about dates, times, or daylight for a location -- including "what time is sunset?", "is it dark there now?", or "what day of the week is the 4th-day forecast?". Accepts a place name directly. Example: {"location": "Seattle"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| moon | Yes | |
| calendar | Yes | |
| daylight | Yes | |
| location | Yes | |
| current_time | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and non-destructive. The description adds extra behavioral context: data comes from the 'weather pipeline's astro product' and includes sunrise/sunset/solar times and moon phase. This goes beyond the annotations by explaining the data source and scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: first sentence states what it does, second provides usage guidance with examples, third gives a concrete JSON example. It is front-loaded with purpose, concise, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three optional parameters, no required parameters, and an output schema exists, the description fully covers what the tool returns by listing all temporal components (local time, timezone, 14-day calendar, solar times, moon phase). It provides sufficient context for an agent to understand the tool's output without needing to inspect the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description's parameter info is supplementary. It adds value by explicitly stating it 'Accepts a place name directly' and providing an example, which reinforces how to use the location parameter. This enhances usability beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'complete temporal context for a location' and lists specific components (local time, timezone, 14-day calendar, solar times, moon phase). It includes example queries that show its specific use case, distinguishing it from sibling weather tools that focus on forecasts or observations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use whenever you need to reason about dates, times, or daylight for a location' and provides concrete example questions. While it doesn't mention when not to use it or alternative tools, the positive guidance is strong and contextual.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tropicalGet tropical activityARead-onlyIdempotentInspect
Active NHC (National Hurricane Center) tropical systems: forecast cones, track lines, forecast points, coastal watches/warnings, and 7-day Tropical Weather Outlook formation areas -- Atlantic + East Pacific. Each feature carries a kind (cone | track | points | watch_warning | outlook_area) plus storm name, intensity, and timing properties. include_geometry=true adds full GeoJSON geometries (large). An empty result means no active tropical activity. Example: {} or {"include_geometry": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| include_geometry | No | Include full GeoJSON geometries (cone/track polygons). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| active | Yes | |
| features | Yes | |
| feature_count | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by noting that including geometry results in large payloads and that an empty result indicates no activity. It also details the kinds of features and their properties. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with key information. It packs details about features, properties, and parameter behavior in a single paragraph, but could be slightly more structured with bullet points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description adequately covers behavior (e.g., empty result), feature kinds, and parameter effect. It provides sufficient context for a read-only tool, though it omits authentication or rate limits (not required).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, baseline is 3. The description adds context about the 'include_geometry' parameter, noting it adds full GeoJSON geometries (large) and providing example usage, which enhances understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving active NHC tropical systems, listing specific features like forecast cones, track lines, and coastal watches/warnings. It distinguishes from sibling tools by specifying the source (NHC) and region (Atlantic + East Pacific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description does not explicitly state when to use this tool versus alternatives, its specificity about tropical activity from NHC provides clear context. It implies usage for active tropical systems, but lacks explicit exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasetsList datasetsARead-onlyIdempotentInspect
Discover the datasets (model grids, analyses, observations) available at a location, with per-dataset freshness (data age, latest model run). Datasets vary by domain (CONUS/Alaska/Hawaii). Use this to find dataset_id values for query_dataset and describe_dataset, or to assess whether data is current before making decisions. Example: {"location": "Anchorage"}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| include_freshness | No | Include per-dataset data age and run times. Default true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| datasets | Yes | |
| location | Yes | |
| freshness | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint=false. Description adds context about per-dataset freshness and domain variation, enhancing transparency without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences plus an example, front-loaded with core purpose. Every sentence adds value. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool, rich annotations, and output schema, description is complete. Covers purpose, output features, usage context, and provides an example.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds minor value by summarizing location flexibility and include_freshness behavior, but does not significantly extend beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it discovers datasets at a location with freshness info, and distinguishes itself by mentioning it provides dataset_id values for query_dataset and describe_dataset. Verb 'discover' combined with resource 'datasets' is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: to find dataset_id for downstream tools and to assess data currency. Does not explicitly list when not to use or alternatives, but context is clear and helpful. Example further clarifies usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_datasetQuery datasetARead-onlyIdempotentInspect
Raw time series from a specific dataset for specific variables at a point. Power-user access to any gridded product (NBM, HRRR, GFS, RTMA, MRMS, air quality, ...). Time modes: hours (next N hours, default 24), time_start+time_end (explicit ISO-8601 window), or latest=true (single most-recent value). reference_time pins a specific model run, and each returned series reports the run that served it (reference_time, or reference_times when a series mixes runs) — check it before comparing two runs, since a run older than about 48 hours may no longer be available. For blended forecasts use get_forecast instead. Examples: {"location": "Denver", "dataset_id": "hrrr_surface", "variables": ["temperature_2m"], "hours": 18} or {"lat": 41.4, "lon": -92.9, "dataset_id": "rtma_conus", "variables": ["temperature_2m"], "latest": true}.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | No | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). | |
| hours | No | Forecast/lookahead hours from now (1-264). Default 24 when no other time mode set. | |
| latest | No | Return only the most recent value (analysis datasets like RTMA/MRMS). | |
| location | No | Free-text place: city ("Denver"), city+state ("Portland, OR"), US ZIP ("50219"), or "lat,lon" ("39.74,-104.99"). Provide either this OR explicit lat+lon, not both. | |
| time_end | No | ISO 8601 window end (with time_start). | |
| variables | Yes | Standard variable names (e.g. temperature_2m, precipitation). Discover with describe_dataset. | |
| dataset_id | No | Dataset to query. Default: the NBM dataset for the location domain (nbm_conus/nbm_alaska/nbm_hawaii). Discover options with list_datasets. | |
| time_start | No | ISO 8601 window start (with time_end). | |
| reference_time | No | Pin a specific model run (ISO 8601). Default: latest run. |
Output Schema
| Name | Required | Description |
|---|---|---|
| series | Yes | |
| location | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, non-destructive), description adds critical behavioral details: time modes (hours, window, latest), reference_time pinning, and warning about run availability after 48 hours. This provides meaningful context for correct usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, time modes, reference_time note, sibling guidance, examples. Slightly long but each sentence contributes; could be trimmed slightly without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, multiple time modes, output schema), the description covers essential behavioral patterns, warnings, and usage examples. It is complete for the tool's complexity and no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, description adds significant value by explaining the interplay between time-related parameters (hours, latest, time_start/end) and providing concrete examples. This clarifies usage beyond individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns raw time series from specific datasets at a point. It distinguishes itself by mentioning power-user access to gridded products and explicitly directs to use get_forecast for blended forecasts, differentiating from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit alternative for blended forecasts (get_forecast) and implies use for raw data. However, does not cover exclusions for other siblings like get_observations or get_current_conditions, though the description of 'raw time series from gridded products' gives context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reverse_geocodeReverse geocodeARead-onlyIdempotentInspect
Resolve coordinates to a human-readable place (city, state, county, timezone). Use when you have lat/lon but need a display name or the local timezone. Example: {"lat": 39.74, "lon": -104.99} -> Denver, Colorado, America/Denver.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon. | |
| lon | Yes | Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lat | Yes | |
| lon | Yes | |
| place | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the description's job is lighter. It adds value by detailing the output (city, state, county, timezone) and providing an example, which enriches behavioral understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus an example. It is front-loaded with the core function, then usage guidance, then a concrete example. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, annotations, and existing output schema, the description sufficiently covers purpose, usage, and expected output. It could mention error handling for invalid coordinates, but overall it is complete enough for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add parameter-specific meaning beyond the schema; the example uses specific values but does not clarify the lat/lon schema descriptions (which mention 'location place-name string' that is irrelevant to this tool).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Resolve coordinates to a human-readable place' and specifies output types (city, state, county, timezone). It distinguishes itself from siblings like search_locations, which perform forward geocoding, and get_time_context, which deals with time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when you have lat/lon but need a display name or the local timezone', providing clear usage context. However, it does not explicitly mention when not to use or name alternatives like search_locations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_locationsSearch locationsARead-onlyIdempotentInspect
Resolve a place query to candidate locations with coordinates. Accepts city names ("Denver"), city+state ("Portland, OR" via query), ZIP codes ("50219"), or partial input with fuzzy=true for autosuggest-style matching ("bost" -> Boston). Returns ranked candidates with lat/lon. Most weather tools accept a location string directly and geocode internally -- use this tool only to disambiguate ("which Springfield?") or to present location choices to the user. Example: {"query": "Springfield"} returns all major Springfields ranked by population.
| Name | Required | Description | Default |
|---|---|---|---|
| fuzzy | No | Autosuggest mode for partial/misspelled input. Default false (exact search). | |
| limit | No | Maximum candidates to return (1-10). Default 5. | |
| query | Yes | Place query: city, "city, state", ZIP, or partial text with fuzzy=true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| candidates | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context: ranking by population, fuzzy mode for partial input, and internal geocoding in other tools. This adds value beyond annotations, though no mention of rate limits or other edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five well-structured sentences with no wasted words. Front-loads the main purpose, then explains inputs, then usage guidance. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present (context signal), the description need not detail return values. It covers the tool's role among siblings, input types, usage guidelines, and examples. Complete for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds context by listing example queries (city, city+state, ZIP, partial) and explaining fuzzy mode usage, enhancing understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resolves place queries to candidate locations with coordinates. It specifies input types (city names, city+state, ZIP, partial with fuzzy) and distinguishes from siblings by noting that most weather tools geocode internally, so this tool is for disambiguation or presenting choices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'use this tool only to disambiguate or to present location choices to the user.' Also includes an example query for disambiguation, providing clear context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityDmaintenanceEnables to interact with comprehensive weather data through the MCP protocol, including current conditions, multi-day forecasts, hourly forecasts, and geocoding.Last updated11MIT
- AlicenseAqualityBmaintenanceProvides real-time US weather data for AI assistants via MCP, including current conditions, forecasts, alerts, severe weather outlooks, radar, upper-air analysis, and surface analysis. Supports optional personal weather station integration.Last updated94ISC
- FlicenseAqualityDmaintenanceA comprehensive MCP server providing tools for real-time, forecast, and historical weather data, alongside air quality, marine conditions, and climate projections. It also includes geocoding services to search for locations and retrieve precise coordinates for environmental analysis.Last updated7
- AlicenseAqualityAmaintenanceCombines National Weather Service alerts and forecasts with modern USGS water data, enabling weather and hydrology queries through MCP. No API key required, with persistent local caching.Last updated29Creative Commons Zero v1.0 Universal