Skip to main content
Glama

Geocode a list of addresses

geocode_batch
Read-onlyIdempotent

Place up to 100 addresses in one call. Each record comes back with a status (placed, review, unplaced), the location and its precision (rooftop, interpolated, street, postcode, town), a confidence with the evidence behind it (the score is our estimate of how often an answer that sure is right, being refitted against public address records; the same input always gets the same answer), the address quality, the admin parts (street, city, county, state, postcode, country), a stable record_key and the map version, and where one is close enough to be sure, the building at the point (residential or not: house, business, farm…). Coordinates in any common format ("53.8008, -1.5491", 51°30'03"N 0°07'40"W, "48.8584 N 2.2945 E"), or records with lat and lng, are placed as given and come back with the address at the point (nearest_address and the admin parts): this is also how to turn coordinates into addresses. Flats, units and suites are matched to their building. Every row carries its address parts (admin: house number, street, city, county, state, postcode, country); format "csv" also returns them as CSV to save in Drive or a sheet, and write_to_sheet puts them in the sheet as columns. Every row sent comes back in the order sent: unplaced rows with the reason, and rows past 100 as not looked up.

Input Schema

NameRequiredDescriptionDefault
formatNocsv: also return every row as CSV text (csv), one line per row in the order sent, to save as a file in Drive or paste into a sheet.json
sourceNoInstead of typing rows: { sheet: "<Google Sheets link>", tab?: "Sites" } (shared with the InstaMaps service account, or viewable by anyone with the link), { file: "<Drive link to a CSV or Excel file>" }, or { run: "<run_id from an earlier answer>" }. Columns are found by their headers (id, name, address or its parts, lat/lng); name them if they aren't obvious (id_column, address_column, lat_column, lng_column; from_column and to_column for road distances). Rows with coordinates are used as they are.
columnsNoThe fields for the CSV and for write_to_sheet, in order (CSV default: status, lat, lng, precision, confidence, reason, house_number, street, city, county, state, postcode, country, council, uprn, record_key; write_to_sheet default: lat, lng, status, address, city, county, state, postcode, country, precision, confidence). ID and input always lead the CSV. council (Great Britain: the local authority) and uprn (Great Britain: the nearest UPRN to a pin on a building, within 15 m) are blank elsewhere.
recordsNoOr rows with your own ids.
addressesNoAddresses, one per row.
backgroundNoWith source: run as a background job and answer at once with job_id (automatic past 100 rows). Check with get_job; write_to_sheet with the job_id puts the results in the sheet as they finish.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it explains determinism ('the same input always gets the same answer'), what the confidence score means, the status taxonomy, the precision taxonomy, that ordering is preserved, that unplaced rows carry a reason, and that overflow rows are not looked up. It also gives concrete coordinate formats accepted. Nothing an agent would be surprised by 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.

Conciseness3/5

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

Front-loaded with the core action, which is good, but it is a dense wall of long parenthetical sentences. The confidence explanation ('our estimate of how often an answer that sure is right, being refitted against public address records') is verbose and could be one clause; several admin-field lists are repeated twice.

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 no output schema, the description carries the full burden of explaining returns, and it does: per-row status, coordinates, precision, confidence with evidence, building classification, admin parts, record_key, map_version, nearest_address for reverse geocoding, and CSV output columns. An agent knows what comes back in every mode.

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 coverage is 100%, so the six parameters are already documented in detail, and the description largely restates behavior rather than adding per-parameter meaning. It does add the accepted coordinate formats and the notion that flats/units match to their building, but it does not explain 'background', 'records' vs 'addresses', or 'columns' beyond what the schema says, so baseline 3 is right.

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 opening sentence gives a specific verb, resource, and scope ('Place up to 100 addresses in one call'), and the description also carves out a second capability ('this is also how to turn coordinates into addresses'), which no sibling tool name suggests. An agent can tell exactly what this does without reading the schema.

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?

It gives clear usage signals: batch up to 100, coordinates are placed as given, and rows past 100 come back as not looked up, with 'background' triggered automatically past 100 rows. It points at the write_to_sheet sibling for sheet output, but never explicitly says when to prefer find_nearby or get_location_facts instead, so routing is implied rather than stated.

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