Skip to main content
Glama

Transform coordinates (official datums)

transform_coordinates
Read-onlyIdempotent

Convert coordinates between CRSs as the official transformation does: GDA94 to GDA2020, MGA zones, British National Grid (OSTN15), NAD27 to NAD83 (NADCON), ITRF at an epoch, and any other EPSG pair. Uses national grids (downloaded once), refuses PROJ's ballpark approximations, and returns the operation and its stated accuracy. Use this instead of applying datum parameters yourself.

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": {
      "source_crs": "<source_crs>",
      "target_crs": "<target_crs>",
      "coordinates": "<coordinates>"
    },
    "name": "transform_coordinates"
  }
}

Input Schema

NameRequiredDescriptionDefault
epochNoDecimal year, for ITRF/ATRF frames
source_crsYesCRS name or EPSG code, e.g. 'GDA94 / MGA zone 55' or EPSG:28355
target_crsYesCRS name or EPSG code, e.g. 'GDA2020 / MGA zone 55' or EPSG:7855
coordinatesYes[x, y] or [x, y, z]: [lon, lat] or [easting, northing]

Output Schema

NameRequiredDescriptionDefault
gridsNoOfficial grid files the operation used
unitsNoUnit of each numeric field
methodYesThe EPSG operation used
statusNook
warningsNoCaveats to tell the user
accuracy_mYesThe operation's stated accuracy; null for an exact conversion
provenanceNoSource, licence, attribution, retrieval time and method
source_crsYes
target_crsYes
area_of_useNo
coordinatesYesTransformed points, in the target CRS's x/y(/z) order

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / source_crs / description
      Previous value: -"e.g. EPSG:28355 (GDA94 / MGA zone 55)"New value: +"CRS name or EPSG code, e.g. 'GDA94 / MGA zone 55' or EPSG:28355"
    • changedInput schema / properties / target_crs / description
      Previous value: -"e.g. EPSG:7855 (GDA2020 / MGA zone 55)"New value: +"CRS name or EPSG code, e.g. 'GDA2020 / MGA zone 55' or EPSG:7855"
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that national grids are downloaded once (explaining the openWorldHint), that it refuses PROJ's ballpark approximations rather than silently degrading accuracy, and that the response includes the operation used plus its stated accuracy. The refusal behavior is exactly the kind of trait an agent must know before calling.

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?

The verb and resource are front-loaded and the supported-transformation list earns its place by supporting retrieval matching. The enumeration is dense and slightly over-long for a single sentence, but nothing is redundant.

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?

Required params, formats, and the output schema are all covered by structured fields, and the description adds the non-structured essentials: grid download cost, approximation refusal, and accuracy reporting. An agent has everything needed to call this correctly and interpret results.

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 source_crs, target_crs, coordinates, and epoch are already fully documented, including the ITRF/ATRF meaning of epoch. The description's mention of 'ITRF at an epoch' and CRS pairs reinforces but does not extend the schema.

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 verb and resource ('Convert coordinates between CRSs') and then enumerates the exact transformation families supported (GDA94→GDA2020, MGA zones, OSTN15, NADCON, ITRF epochs, any EPSG pair). This clearly separates it from siblings like convert_height (vertical datums) and spatial_operation.

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?

'Use this instead of applying datum parameters yourself' names the alternative approach it replaces and the reason (official transformation vs. hand-rolled parameters). It does not explicitly route against sibling tools such as convert_height or spatial_operation, so it stops short of a full when/when-not statement.

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.