Skip to main content
Glama

validate_geodata

Check whether a dataset's DECLARED coordinate reference system actually describes its own coordinates, before you draw it on a map. Catches the failures that are otherwise silent: swapped lat/lon axes, degrees labelled as metres, and Web Mercator or another projection mislabelled with a UTM or national-grid code. Pass the declared CRS (e.g. "EPSG:4326") and a sample of the raw coordinates as {x, y} in the dataset's OWN units, deliberately not named lon/lat, because whether they are degrees is the question. Returns a verdict (consistent / suspect / impossible), what is wrong in plain language, and where the numbers actually point when read another way. This is a sanity check, not a reprojection: it never transforms coordinates. Local computation: no network call, no quota.

Input Schema

NameRequiredDescriptionDefault
coordinatesYesA sample of the dataset's coordinates. A few dozen is plenty; the check is about ranges and spans, not volume.
declared_crsYesThe CRS the dataset claims, e.g. `"EPSG:4326"`, `"EPSG:32610"`, `"EPSG:3857"`, `"EPSG:27700"`.

Output Schema

NameRequiredDescriptionDefault
extentYesObserved extent of the sample, in the dataset's own units.
verdictYes
problemsYesPlain-language findings, most important first. Empty when consistent.
suggestionsYesWhat the numbers look like, when they do not match the declaration.
interpreted_asYesThe CRS family the declaration was understood as.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $defs / XY / description
      Previous value: -"One coordinate from the dataset, in the dataset's own units — NOT\nnecessarily degrees. Named `x`/`y` rather than `lon`/`lat` precisely\nbecause whether they are degrees is the thing in question."New value: +"One coordinate from the dataset, in the dataset's own units, NOT\nnecessarily degrees. Named `x`/`y` rather than `lon`/`lat` precisely\nbecause whether they are degrees is the thing in question."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and meets it: it discloses the return shape (verdict consistent/suspect/impossible plus plain-language explanation), the local no-network/no-quota execution model, and the absolute guarantee that coordinates are never transformed. Nothing about the tool's behavior is left implicit.

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?

It is longer than average but front-loaded with purpose and every clause adds information — failure modes, the not-a-reprojection boundary, return values, and compute profile. Slightly dense, but no sentence is filler.

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

Completeness5/5

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

For a two-parameter, deterministic check with an output schema, the description covers purpose, boundary conditions, input semantics, and execution model. An agent has everything needed to decide and call correctly.

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 baseline is 3, but the description adds genuine meaning beyond the schema: that coordinates must be supplied in the dataset's OWN units, the rationale for x/y naming ('whether they are degrees is the question'), and the sampling sufficiency ('a few dozen is plenty').

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 precise verb and resource — checking whether a declared CRS actually describes a dataset's coordinates — and names the specific failure classes it catches (swapped axes, degrees-as-metres, mislabelled projections). It also explicitly distinguishes itself from reprojection tools, so no sibling is confusable.

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

Usage Guidelines4/5

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

Gives a clear trigger ('before you draw it on a map') and a strong when-not ('This is a sanity check, not a reprojection: it never transforms coordinates'). It does not name a specific sibling alternative, but no sibling performs CRS validation, so the guidance is sufficient.

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