Skip to main content
Glama

Criora: climate & disaster risk for any place

Where the weather ahead is most dangerous: cities and countries

rank_by_forecast
Read-onlyIdempotent

The cities (of 100,000 or more) or the countries where the next 1 to 7 days' weather is most dangerous, ranked by how high the risk reaches and how many people it reaches: heat, cold, wind, heavy rain, snow and freezing rain.

Use for "where will it be hottest this week", "which European cities face storms in the next two days", "which countries have the most people at high risk". One place: get_forecast; disasters now: list_hazards; countries' long-term risk: rank_countries.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "rank_by_forecast"
  }
}

Input Schema

NameRequiredDescriptionDefault
daysNoThe window: the next 1 to 7 days from now
limitNoHow many to list
scopeNoRank cities (places) or countriesplaces
hazardNoOnly this hazard; every hazard when omitted
regionNoOnly this UN region, e.g. Asia
countryNoPlaces in this country or territory only: its ISO 3166-1 alpha-3 code (e.g. JPN) or its name
subregionNoOnly this UN M49 subregion, e.g. Southern Asia
min_populationNoPlaces of at least this many people; every place listed has 100,000

Output Schema

NameRequiredDescriptionDefault
runYes
scopeYes
creditYes
placesNo
sourceYes
windowYes
filtersYes
matchedYes
countriesNo
truncatedNo
risk_scaleYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed66 schema fields changed
    • removedOutput schema / $defs / Credit / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / Credit / properties / attribution / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / Credit / properties / attribution / default
      Removed value: -null
    • removedOutput schema / $defs / Credit / properties / attribution / description
      Removed value: -"The credit the licence asks for when it is retold"
    • addedOutput schema / $defs / Credit / properties / attribution / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / Credit / properties / licence / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / Credit / properties / licence / default
      Removed value: -null
    • addedOutput schema / $defs / Credit / properties / licence / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / Credit / properties / name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / Credit / properties / name / default
      Removed value: -null
    • removedOutput schema / $defs / Credit / properties / name / description
      Removed value: -"The feed's name as it is cited"
    • addedOutput schema / $defs / Credit / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastCountry / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / ForecastCountry / properties / hazard / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / ForecastCountry / properties / hazard / description
      Removed value: -"The hazard that holds most of them then"
    • addedOutput schema / $defs / ForecastCountry / properties / hazard / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastCountry / properties / iso2 / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / ForecastCountry / properties / iso2 / default
      Removed value: -null
    • removedOutput schema / $defs / ForecastCountry / properties / iso2 / description
      Removed value: -"ISO 3166-1 alpha-2"
    • addedOutput schema / $defs / ForecastCountry / properties / iso2 / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastCountry / properties / land_share_at_high_or_above / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastCountry / properties / land_share_at_high_or_above / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastCountry / properties / level / description
      Removed value: -"The worst class any of its people reach in the window"
    • removedOutput schema / $defs / ForecastCountry / properties / name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastCountry / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastCountry / properties / people / description
      Removed value: -"Residents, GHS-POP 2025"
    • removedOutput schema / $defs / ForecastCountry / properties / people_at_level / description
      Removed value: -"Its people at that class or above, at the window's worst hour for it"
    • removedOutput schema / $defs / ForecastCountry / properties / share_at_high_or_above / description
      Removed value: -"Of its people, at the window's worst hour for High"
    • removedOutput schema / $defs / ForecastCountry / properties / worst_at / description
      Removed value: -"That hour, UTC"
    • removedOutput schema / $defs / ForecastCountry / properties / worst_place / description
      Removed value: -"Its city most at risk, ranked as places are"
    • removedOutput schema / $defs / ForecastPlace / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / ForecastPlace / properties / admin1 / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastPlace / properties / admin1 / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastPlace / properties / country / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastPlace / properties / country / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastPlace / properties / country_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastPlace / properties / country_name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastPlace / properties / hazard / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastPlace / properties / hazard / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastPlace / properties / hours_at_level / description
      Removed value: -"Hours of the window spent at that class"
    • removedOutput schema / $defs / ForecastPlace / properties / level / description
      Removed value: -"The worst risk class the place reaches in the window"
    • removedOutput schema / $defs / ForecastPlace / properties / peak_at / description
      Removed value: -"The first hour at that class, UTC"
    • removedOutput schema / $defs / ForecastPlace / properties / peak_local_time / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / ForecastPlace / properties / peak_local_time / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / ForecastPlace / properties / reading / description
      Removed value: -"The physical reading behind the class at its first hour"
    • removedOutput schema / $defs / ForecastPlace / properties / risk_by_hazard / description
      Removed value: -"The worst class each hazard reaches in the window"
    • removedOutput schema / $defs / ForecastSource / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / RankWindow / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / RankWindow / properties / partial / description
      Removed value: -"True when the run ends before the window does"
    • removedOutput schema / $defs / RankWindow / properties / steps / description
      Removed value: -"Forecast steps inside the window"
    • removedOutput schema / $defs / Reading / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / Reading / properties / variable / description
      Removed value: -"utci, the felt temperature; wind_gust_10m; or precip_intensity_mmh"
    • removedOutput schema / $defs / Truncated / description
      Removed value: -"Set when an answer was held under its size: the tail of its main list left out."
    • removedOutput schema / $defs / Truncated / properties / field / description
      Removed value: -"The answer's list that was cut"
    • removedOutput schema / $defs / Truncated / properties / left_out / description
      Removed value: -"How many of its entries, the least important, were left out"
    • removedOutput schema / $defs / Truncated / properties / left_out_names / default
      Removed value: -null
    • removedOutput schema / $defs / Truncated / properties / left_out_names / description
      Removed value: -"Each entry left out, where the list is not ordered by importance"
    • removedOutput schema / $defs / Truncated / properties / why / description
      Removed value: -"The limit, and how to ask for the rest"
    • removedOutput schema / additionalProperties
      Removed value: -true
    • removedOutput schema / properties / countries / default
      Removed value: -null
    • removedOutput schema / properties / credit / description
      Removed value: -"How a retelling credits the answer: Source: Criora with a link to the page the answer is about, then each originator whose data it quotes in the words its licence asks for. Concise, each credit once; detailed, by source with its name and licence, criora first"
    • removedOutput schema / properties / filters / additionalProperties
      Removed value: -true
    • removedOutput schema / properties / matched / description
      Removed value: -"Every place or country that reaches Low or above and passed the filters"
    • removedOutput schema / properties / places / default
      Removed value: -null
    • removedOutput schema / properties / truncated / default
      Removed value: -null
    • removedOutput schema / properties / truncated / description
      Removed value: -"Absent unless the answer was cut to fit"
  2. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds behavior the annotations do not: the ranking is multi-hazard by default, driven jointly by risk magnitude and exposed population, and places are restricted to populations of 100,000 or more. It does not say anything about result ordering ties or how the two ranking factors are weighted, which keeps it from a 5.

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

Conciseness4/5

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

Two paragraphs: the first front-loads scope and ranking logic, the second handles disambiguation. No filler sentences, though the inline hazard enumeration ("heat, cold, wind, heavy rain, snow and freezing rain") partly repeats the hazard enum in the schema and could be trimmed.

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

Completeness5/5

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

With eight optional parameters, a fully described schema and an output schema in place, the description covers everything an agent needs before calling: the ranking unit, the time window, the default multi-hazard behavior, and the sibling boundaries. Return-value details are correctly left to the output schema.

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%, so all eight parameters (including the two enums for scope and hazard) are already documented in structured form, and this sets the baseline at 3. The description restates the hazard list and the 1-7 day window, which largely duplicates the schema; its only genuine addition is framing the ranking basis, which is about output rather than parameter meaning.

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 names a specific verb (rank), an exact resource (forecast danger over the next 1-7 days), the unit of ranking (cities of 100,000+ or countries), and the ranking criteria (peak risk and population reached). It also enumerates the hazard types covered, so the agent knows precisely what the tool returns compared with unrelated siblings.

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

Usage Guidelines5/5

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

It gives three concrete use-case phrasings ("where will it be hottest this week", "which European cities face storms in the next two days", "which countries have the most people at high risk") and explicitly routes away to three named siblings: get_forecast for a single place, list_hazards for current disasters, and rank_countries for long-term risk. That is an explicit when-to-use and when-to-use-something-else mapping.

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.