Skip to main content
Glama

data.us-weather-forecast

Read-onlyIdempotent

Get a global weather forecast for a city/locality name or exact coordinates. Returns normalized day/night or hourly periods worldwide: NOAA/NWS is preferred within supported U.S. coverage for optional station conditions and active alerts, while MET Norway provides an attributed open-data fallback globally.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
placeNoCity or locality name, optionally followed by country and first-level region qualifiers, for example London, GB or Paris, Texas, US. Provide either place or both latitude and longitude.
unitsNoUS customary or SI units requested from the NWS APIus
periodsNoMaximum periods to return; day_night supports at most 14 and hourly at most 48
latitudeNoLatitude in decimal degrees, rounded to four decimal places. Provide with longitude instead of place.
timezoneNoOptional IANA time zone used to group MET Norway day/night periods. Place-name requests use the matched GeoNames zone; coordinate requests default to UTC; NWS returns its authoritative point time zone.
longitudeNoLongitude in decimal degrees, rounded to four decimal places. Provide with latitude instead of place.
forecast_typeNoDay/night forecast periods or hourly forecast periodsday_night
source_preferenceNoPrefer NWS within its U.S. coverage and fall back to MET Norway globally, or explicitly select one sourceauto
include_active_alertsNoInclude up to 10 currently active NWS alerts whose affected area contains the requested point
include_current_conditionsNoInclude the latest observation from the nearest available NWS station; kept opt-in to preserve baseline latency

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesStructured Global weather forecast result
metaYes
serviceYes
versionYes
request_idYesUnique request identifier

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "required": [
      -      "place"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "latitude",
      -      "longitude"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "latitude"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "longitude"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "place"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "required": [
      +        "place"
      +      ]
      +    },
      +    "required": [
      +      "latitude",
      +      "longitude"
      +    ]
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / data / properties / location / properties / resolvedPlace / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "admin1Code": {
      -        "maxLength": 20,
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "ambiguous": {
      -        "type": "boolean"
      -      },
      -      "attribution": {
      -        "const": "GeoNames (CC BY 4.0; https://www.geonames.org/).",
      -        "type": "string"
      -      },
      -      "candidateCount": {
      -        "maximum": 1000,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "countryCode": {
      -        "pattern": "^[A-Z]{2}$",
      -        "type": "string"
      -      },
      -      "geonameId": {
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "name": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "query": {
      -        "maxLength": 100,
      -        "minLength": 2,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "query",
      -      "geonameId",
      -      "name",
      -      "countryCode",
      -      "admin1Code",
      -      "candidateCount",
      -      "ambiguous",
      -      "attribution"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "admin1Code": {
      +        "maxLength": 20,
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "ambiguous": {
      +        "type": "boolean"
      +      },
      +      "attribution": {
      +        "const": "GeoNames (CC BY 4.0; https://www.geonames.org/).",
      +        "type": "string"
      +      },
      +      "candidateCount": {
      +        "maximum": 1000,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "countryCode": {
      +        "pattern": "^[A-Z]{2}$",
      +        "type": "string"
      +      },
      +      "geonameId": {
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "licenseUrl": {
      +        "const": "https://creativecommons.org/licenses/by/4.0/",
      +        "type": "string"
      +      },
      +      "name": {
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "query": {
      +        "maxLength": 100,
      +        "minLength": 2,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "query",
      +      "geonameId",
      +      "name",
      +      "countryCode",
      +      "admin1Code",
      +      "candidateCount",
      +      "ambiguous",
      +      "attribution",
      +      "licenseUrl"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed23 schema fields changed
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "required": [
      +      "place"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "latitude",
      +      "longitude"
      +    ]
      +  }
      +]
    • addedInput schema / properties / latitude / anyOf
      Added value: +[
      +  {
      +    "maximum": 90,
      +    "minimum": -90,
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / latitude / default
      Added value: +null
    • changedInput schema / properties / latitude / description
      Previous value: -"Latitude in decimal degrees, rounded to four decimal places"New value: +"Latitude in decimal degrees, rounded to four decimal places. Provide with longitude instead of place."
    • removedInput schema / properties / latitude / maximum
      Removed value: -90
    • removedInput schema / properties / latitude / minimum
      Removed value: --90
    • removedInput schema / properties / latitude / type
      Removed value: -"number"
    • addedInput schema / properties / longitude / anyOf
      Added value: +[
      +  {
      +    "maximum": 180,
      +    "minimum": -180,
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / longitude / default
      Added value: +null
    • changedInput schema / properties / longitude / description
      Previous value: -"Longitude in decimal degrees, rounded to four decimal places"New value: +"Longitude in decimal degrees, rounded to four decimal places. Provide with latitude instead of place."
    • removedInput schema / properties / longitude / maximum
      Removed value: -180
    • removedInput schema / properties / longitude / minimum
      Removed value: --180
    • removedInput schema / properties / longitude / type
      Removed value: -"number"
    • addedInput schema / properties / place
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 100,
      +      "minLength": 2,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "City or locality name, optionally followed by country and first-level region qualifiers, for example London, GB or Paris, Texas, US. Provide either place or both latitude and longitude.",
      +  "examples": [
      +    "London, GB"
      +  ],
      +  "title": "Place"
      +}
    • addedInput schema / properties / timezone / anyOf
      Added value: +[
      +  {
      +    "maxLength": 100,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / timezone / default
      Previous value: -"UTC"New value: +null
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA time zone used to group MET Norway day/night periods; NWS returns its authoritative point time zone"New value: +"Optional IANA time zone used to group MET Norway day/night periods. Place-name requests use the matched GeoNames zone; coordinate requests default to UTC; NWS returns its authoritative point time zone."
    • removedInput schema / properties / timezone / maxLength
      Removed value: -100
    • removedInput schema / properties / timezone / minLength
      Removed value: -1
    • removedInput schema / properties / timezone / type
      Removed value: -"string"
    • removedInput schema / required
      Removed value: -[
      -  "latitude",
      -  "longitude"
      -]
    • addedOutput schema / properties / data / properties / location / properties / resolvedPlace
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "admin1Code": {
      +          "maxLength": 20,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "ambiguous": {
      +          "type": "boolean"
      +        },
      +        "attribution": {
      +          "const": "GeoNames (CC BY 4.0; https://www.geonames.org/).",
      +          "type": "string"
      +        },
      +        "candidateCount": {
      +          "maximum": 1000,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "countryCode": {
      +          "pattern": "^[A-Z]{2}$",
      +          "type": "string"
      +        },
      +        "geonameId": {
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "name": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "query": {
      +          "maxLength": 100,
      +          "minLength": 2,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "query",
      +        "geonameId",
      +        "name",
      +        "countryCode",
      +        "admin1Code",
      +        "candidateCount",
      +        "ambiguous",
      +        "attribution"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / data / properties / location / required
      Previous value: -[
      -  "latitude",
      -  "longitude",
      -  "city",
      -  "state",
      -  "timezone",
      -  "grid"
      -]New value: +[
      +  "latitude",
      +  "longitude",
      +  "city",
      +  "state",
      +  "timezone",
      +  "grid",
      +  "resolvedPlace"
      +]
  4. Changed19 schema fields changed
    • addedInput schema / properties / source_preference
      Added value: +{
      +  "default": "auto",
      +  "description": "Prefer NWS within its U.S. coverage and fall back to MET Norway globally, or explicitly select one source",
      +  "enum": [
      +    "auto",
      +    "nws",
      +    "met"
      +  ],
      +  "title": "Source Preference",
      +  "type": "string"
      +}
    • addedInput schema / properties / timezone
      Added value: +{
      +  "default": "UTC",
      +  "description": "IANA time zone used to group MET Norway day/night periods; NWS returns its authoritative point time zone",
      +  "examples": [
      +    "Europe/London"
      +  ],
      +  "maxLength": 100,
      +  "minLength": 1,
      +  "title": "Timezone",
      +  "type": "string"
      +}
    • changedOutput schema / properties / data / description
      Previous value: -"Structured US weather forecast result"New value: +"Structured Global weather forecast result"
    • changedOutput schema / properties / data / properties / location / properties / grid / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
    • removedOutput schema / properties / data / properties / source / properties / dataset / const
      Removed value: -"NWS API forecast with optional observations and active alerts"
    • addedOutput schema / properties / data / properties / source / properties / dataset / enum
      Added value: +[
      +  "NWS API forecast with optional observations and active alerts",
      +  "Locationforecast 2.0 compact point forecast"
      +]
    • removedOutput schema / properties / data / properties / source / properties / disclaimerUrl / const
      Removed value: -"https://www.weather.gov/disclaimer"
    • addedOutput schema / properties / data / properties / source / properties / disclaimerUrl / enum
      Added value: +[
      +  "https://www.weather.gov/disclaimer",
      +  "https://docs.api.met.no/doc/TermsOfService.html"
      +]
    • removedOutput schema / properties / data / properties / source / properties / documentationUrl / const
      Removed value: -"https://www.weather.gov/documentation/services-web-api"
    • addedOutput schema / properties / data / properties / source / properties / documentationUrl / enum
      Added value: +[
      +  "https://www.weather.gov/documentation/services-web-api",
      +  "https://api.met.no/weatherapi/locationforecast/2.0/documentation"
      +]
    • changedOutput schema / properties / data / properties / source / properties / forecastUrl / pattern
      Previous value: -"^https://api\\.weather\\.gov/gridpoints/"New value: +"^https://(?:api\\.weather\\.gov/gridpoints/|api\\.met\\.no/weatherapi/locationforecast/2\\.0/compact)"
    • addedOutput schema / properties / data / properties / source / properties / pointsUrl / anyOf
      Added value: +[
      +  {
      +    "format": "uri",
      +    "pattern": "^https://api\\.weather\\.gov/points/",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / data / properties / source / properties / pointsUrl / format
      Removed value: -"uri"
    • removedOutput schema / properties / data / properties / source / properties / pointsUrl / pattern
      Removed value: -"^https://api\\.weather\\.gov/points/"
    • removedOutput schema / properties / data / properties / source / properties / pointsUrl / type
      Removed value: -"string"
    • removedOutput schema / properties / data / properties / source / properties / provider / const
      Removed value: -"NOAA/National Weather Service"
    • addedOutput schema / properties / data / properties / source / properties / provider / enum
      Added value: +[
      +  "NOAA/National Weather Service",
      +  "MET Norway"
      +]
    • removedOutput schema / properties / data / properties / source / properties / upstreamAccess / const
      Removed value: -"free open data"
    • addedOutput schema / properties / data / properties / source / properties / upstreamAccess / enum
      Added value: +[
      +  "free open data",
      +  "open data under NLOD 2.0 and CC BY 4.0"
      +]
  5. Changed6 schema fields changed
    • addedInput schema / properties / include_active_alerts
      Added value: +{
      +  "default": false,
      +  "description": "Include up to 10 currently active NWS alerts whose affected area contains the requested point",
      +  "title": "Include Active Alerts",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_current_conditions
      Added value: +{
      +  "default": false,
      +  "description": "Include the latest observation from the nearest available NWS station; kept opt-in to preserve baseline latency",
      +  "title": "Include Current Conditions",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / data / properties / activeAlerts
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "alertCount": {
      +      "maximum": 10,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "alerts": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "certainty": {
      +            "maxLength": 50,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "effective": {
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "ends": {
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "event": {
      +            "maxLength": 200,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "expires": {
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "headline": {
      +            "maxLength": 500,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "maxLength": 300,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "onset": {
      +            "format": "date-time",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "severity": {
      +            "maxLength": 50,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "sourceUrl": {
      +            "format": "uri",
      +            "maxLength": 500,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "urgency": {
      +            "maxLength": 50,
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "event",
      +          "headline",
      +          "severity",
      +          "certainty",
      +          "urgency",
      +          "effective",
      +          "onset",
      +          "expires",
      +          "ends",
      +          "sourceUrl"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 10,
      +      "type": "array"
      +    },
      +    "alertsTruncated": {
      +      "type": "boolean"
      +    },
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "requested": {
      +      "type": "boolean"
      +    },
      +    "sourceUrl": {
      +      "format": "uri",
      +      "maxLength": 500,
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "updatedAt": {
      +      "format": "date-time",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "warning": {
      +      "maxLength": 500,
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "requested",
      +    "available",
      +    "updatedAt",
      +    "alertCount",
      +    "alertsTruncated",
      +    "alerts",
      +    "sourceUrl",
      +    "warning"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / currentConditions
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "description": {
      +      "maxLength": 300,
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "dewpoint": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "heatIndex": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "observedAt": {
      +      "format": "date-time",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "relativeHumidityPercent": {
      +      "maximum": 100,
      +      "minimum": 0,
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "requested": {
      +      "type": "boolean"
      +    },
      +    "sourceUrl": {
      +      "format": "uri",
      +      "maxLength": 500,
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "stationId": {
      +      "pattern": "^[A-Z0-9]{3,10}$",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "stationName": {
      +      "maxLength": 200,
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "temperature": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "visibility": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "warning": {
      +      "maxLength": 500,
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "windChill": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "windDirection": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "windGust": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "windSpeed": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "unitCode": {
      +          "maxLength": 100,
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "value": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value",
      +        "unitCode"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "requested",
      +    "available",
      +    "stationId",
      +    "stationName",
      +    "observedAt",
      +    "description",
      +    "temperature",
      +    "dewpoint",
      +    "relativeHumidityPercent",
      +    "heatIndex",
      +    "windChill",
      +    "windDirection",
      +    "windSpeed",
      +    "windGust",
      +    "visibility",
      +    "sourceUrl",
      +    "warning"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / data / properties / source / properties / dataset / const
      Previous value: -"NWS API forecast"New value: +"NWS API forecast with optional observations and active alerts"
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "location",
      -  "forecastType",
      -  "units",
      -  "generatedAt",
      -  "updatedAt",
      -  "periodCount",
      -  "periodsTruncated",
      -  "periods",
      -  "source",
      -  "retrievedAt",
      -  "limitations"
      -]New value: +[
      +  "location",
      +  "forecastType",
      +  "units",
      +  "generatedAt",
      +  "updatedAt",
      +  "periodCount",
      +  "periodsTruncated",
      +  "periods",
      +  "currentConditions",
      +  "activeAlerts",
      +  "source",
      +  "retrievedAt",
      +  "limitations"
      +]
  6. Changed7 schema fields changed
    • addedOutput schema / properties / meta / properties / next_actions / items / properties / checkout_path
      Added value: +{
      +  "pattern": "^/try/",
      +  "type": "string"
      +}
    • addedOutput schema / properties / meta / properties / next_actions / items / properties / executes_automatically
      Added value: +{
      +  "const": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / meta / properties / next_actions / items / properties / handoff_path
      Added value: +{
      +  "description": "Free full contract and spend-capped command handoff; reading it does not execute or purchase the follow-up.",
      +  "pattern": "^/catalog/",
      +  "type": "string"
      +}
    • addedOutput schema / properties / meta / properties / next_actions / items / properties / handoff_payment_required
      Added value: +{
      +  "const": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / meta / properties / next_actions / items / properties / maximum_atomic_usdc
      Added value: +{
      +  "pattern": "^[1-9][0-9]*$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / meta / properties / next_actions / items / properties / sample_path
      Added value: +{
      +  "pattern": "^/samples/",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / meta / properties / next_actions / items / required
      Previous value: -[
      -  "service",
      -  "title",
      -  "reason",
      -  "method",
      -  "path",
      -  "price",
      -  "input_template",
      -  "use_output",
      -  "authorization_required"
      -]New value: +[
      +  "service",
      +  "title",
      +  "reason",
      +  "method",
      +  "path",
      +  "price",
      +  "input_template",
      +  "use_output",
      +  "handoff_path",
      +  "checkout_path",
      +  "sample_path",
      +  "maximum_atomic_usdc",
      +  "handoff_payment_required",
      +  "executes_automatically",
      +  "authorization_required"
      +]
  7. Added

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, open-world, idempotent, and non-destructive behavior. The description adds meaningful source-selection behavior: NOAA/NWS preferred for U.S. coverage, MET Norway attributed fallback globally, and optional inclusion of station conditions and active alerts. No contradiction 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the core purpose, the dual input modes, the output period types, and the source strategy without wasted verbiage. Every clause earns its place.

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

Completeness4/5

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

For a moderately complex tool with 10 parameters and an output schema, the description covers the key decision-relevant context: global scope, forecast period kinds, source precedence, and optional alert/condition augmentation. The schema handles remaining details like the oneOf constraint and exact parameter bounds, so the description does not need to repeat them.

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

Parameters3/5

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

Schema description coverage is 100%, with detailed per-parameter descriptions for place, coordinates, units, periods, timezone, forecast type, source preference, and alerts. The description adds a high-level summary of accepted inputs (place vs coordinates) but does not materially augment the schema's parameter semantics.

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

Purpose5/5

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

The description opens with 'Get a global weather forecast for a city/locality name or exact coordinates', clearly stating the verb, resource, and input modes. It further distinguishes the tool by specifying normalized day/night or hourly periods and the dual-source NWS/MET-only behavior.

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

Usage Guidelines3/5

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

The context is clear: this is a global weather forecast tool with NWS preferred in U.S. areas and MET Norway fallback. However, there is no explicit mention of when to prefer this tool over the sibling data.current-weather tool or other weather-related alternatives, so usage guidance is implied rather than explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources