Skip to main content
Glama

Criora: climate & disaster risk for any place

Climate risk of many sites at once (portfolio table)

get_climate_table
Read-onlyIdempotent

A list of sites, a portfolio, addresses or spreadsheet rows screened in one call: the long-term layers of get_climate_profile at up to 200 places, as a table, a row per place and a column per layer and band. By default the headline exposures: river and coastal flood depth, sea level rise, heat, heavy rain, water stress, drought, wildfire, earthquake hazard and the climate zone; narrow it with categories (flooding...) or layer ids. Each row carries a home's damage band there.

Use it whenever two or more places are asked about, rather than a profile per place: rank sites on the bands and columns, or compare places on the same layers. One place in depth: get_climate_profile.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "places": "<places>"
    },
    "name": "get_climate_table"
  }
}

Input Schema

NameRequiredDescriptionDefault
layersNoThese layers, by the ids get_climate_profile takes (fetch catalog:layers)
placesYes2 to 200 places, each a place_name or latitude and longitude
languageNoLanguage code for the name of the place found (resolved_from); the rest of the answer is Englishen
categoriesNoThe layers of these categories; the headline exposures when neither this nor layers

Output Schema

NameRequiredDescriptionDefault
rowsYes
creditYes
layersYes
classesYes
columnsYes
truncatedNo
damage_bandsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed52 schema fields changed
    • changedInput schema / properties / places / description
      Previous value: -"2 to 50 places, each a place_name or latitude and longitude"New value: +"2 to 200 places, each a place_name or latitude and longitude"
    • changedInput schema / properties / places / maxItems
      Previous value: -50New value: +200
    • removedOutput schema / $defs / BuiltGround / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / BuiltGround / properties / share_by_band / description
      Removed value: -"How the place's built ground shares out among the bands, low, moderate and high: where its homes stand, which a point cannot say"
    • 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 / DamageStanding / additionalProperties
      Removed value: -true
    • removedOutput schema / $defs / DamageStanding / properties / asset_class / description
      Removed value: -"The asset the bands are for; other classes: estimate_financial_impact"
    • removedOutput schema / $defs / DamageStanding / properties / band / description
      Removed value: -"XDI's rating of a home's expected annual damage from flood and cyclone wind at the resolved point: low under 0.2 % of its value a year, moderate to 1 %, high above. Of that point alone"
    • removedOutput schema / $defs / DamageStanding / properties / built_ground / default
      Removed value: -null
    • removedOutput schema / $defs / DamageStanding / properties / built_ground / description
      Removed value: -"Given for a place asked by name; quote this for a city, not `band`"
    • removedOutput schema / $defs / DamageStanding / properties / higher_at_high_end / description
      Removed value: -"The hazards whose range's high end rates above their central rating, and that rating: a wider risk than `band` says, to be told beside it"
    • removedOutput schema / $defs / DamageStanding / properties / material / description
      Removed value: -"The hazards rated moderate or above at the point"
    • removedOutput schema / $defs / TableColumn / properties / band / description
      Removed value: -"The layer's band: a scenario and year, a threshold, or value"
    • removedOutput schema / $defs / TableColumn / properties / layer / description
      Removed value: -"The layer's id, as get_climate_profile and fetch catalog:layers name it"
    • removedOutput schema / $defs / TableColumn / properties / unit / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / TableColumn / properties / unit / description
      Removed value: -"null for a class, given as its label"
    • addedOutput schema / $defs / TableColumn / properties / unit / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / TableColumn / properties / values / description
      Removed value: -"One per row, in the rows' order: a number, a class by its code (classes), or null where the layer has no value there, does not describe the place (sea level rise inland) or the place was not found"
    • removedOutput schema / $defs / TableColumn / properties / values / items / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / TableColumn / properties / values / items / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / $defs / TableFailure / properties / asked / additionalProperties
      Removed value: -true
    • changedOutput schema / $defs / TableRow / properties / damage / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/$defs/DamageStanding"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/DamageStanding"
      +  },
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / $defs / TableRow / properties / damage / description
      Removed value: -"Null where no estimate is made, as at sea"
    • addedOutput schema / $defs / TableRow / properties / damage_at_high_end
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / $defs / TableRow / properties / resolved_from / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / $defs / TableRow / properties / resolved_from / description
      Removed value: -"What a place name was resolved to; null when coordinates were given"
    • addedOutput schema / $defs / TableRow / properties / resolved_from / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • 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 / properties / classes / description
      Removed value: -"Each class layer's codes in the rows, with their labels"
    • removedOutput schema / properties / columns / description
      Removed value: -"One per layer and band, each with its values at every row"
    • 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"
    • addedOutput schema / properties / damage_bands
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / layers / description
      Removed value: -"Each layer's id with what it measures and its source"
    • removedOutput schema / properties / rows / description
      Removed value: -"One per place, in the order asked"
    • 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.6/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 substantive behavior beyond that: the 200-place cap, the row/column table layout, the default headline layer set and the narrowing behavior via categories or layer ids. It does not discuss cost/latency of a 200-place screen, which is the only notable omission.

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?

Front-loaded with what the tool returns, then defaults, then the sibling routing rule — a sensible order with no filler sentences. Slight wordiness in the opening clause ('addresses or spreadsheet rows screened in one call') and the ambiguous 'a home's damage band' keep it from a 5.

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 rich annotations, a fully described schema, an output schema, and siblings covered by explicit routing, the description supplies everything an agent needs to select and call this tool correctly. Remaining details (field names, response envelope) are properly delegated to the output schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description still adds meaning: layer ids are tied to the ids get_climate_profile takes (catalog:layers), and it clarifies that categories/layers narrow from a default headline set rather than being required. The language parameter is left entirely to the schema, which is acceptable given its clear description.

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?

States a specific resource and shape: 'a list of sites, a portfolio... the long-term layers of get_climate_profile at up to 200 places, as a table, a row per place and a column per layer and band.' It also enumerates the default layers, so an agent knows exactly what comes back and how it differs from a single-place profile.

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?

Explicit routing rule: 'Use it whenever two or more places are asked about, rather than a profile per place,' plus the inverse 'One place in depth: get_climate_profile.' It also names the intended analyses (rank sites on bands and columns, compare places on the same layers), leaving no ambiguity against the sibling.

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.