Skip to main content
Glama

Official areas and zones for each address

get_location_facts
Read-onlyIdempotent

For up to 200 addresses or points, the official areas each one falls in, from our own copies of the official maps. Name the fields you need to keep the answer short. US: census tract (GEOID) and FFIEC income level (LMI), county, metro area, SBA HUBZone, Opportunity Zone, USDA Rural Development eligibility, FEMA flood zone (high-risk SFHA, base flood elevation). Great Britain: conservation area, listed buildings within 60 m, the nearest UPRN, and England's Environment Agency flood zone (1, 2 or 3); in England also the council, green belt, Article 4 directions and tree preservation orders (where the council has published them: otherwise "not published by this council", never none), and national landscapes. Controlled parking zones (London Borough of Haringey so far, all its zones): the zone, its hours, whether the controls are on right now (UK time, bank holidays), null with depends_on when it turns on something we can't see (a stadium event, a pay bay's own hours, a spot on a zone's edge, a weekend Christmas), how far the spot is from the zone's edge and the nearest pay-by-phone bays, with a sentence to read out (says; lists over 25 rows get the short form: zone, hours, controls_now, depends_on): for "which parking zone am I in, can I park here now?" send the person's "lat,lng" or a full address with its postcode. For a whole road ("when is Pellatt Grove permit holders only? any pay and display?"), send roads (names, with the postcode district if you know it): each stretch of the road with its zone, the hours its resident bays are for permit holders only and whether that is on now, and every pay-by-phone bay on it with its paying hours (Haringey's pay-and-display became pay by phone, RingGo: those are its paid bays; TfL red routes on it are said), with a sentence to read out; two roads of one name both come back, each with its district. An address placed only on its street gets the whole road's answer (whole_road: true). A spot on or beside a TfL red route says so (red_route). When the account asking has a resident permit on file, each spot or road also says whether the permit covers it (permit_covers, with_your_permit; parking.your_permit names it). Each record says how it was placed; addresses we cannot place are listed with the reason. A guide, not an official determination.

Input Schema

NameRequiredDescriptionDefault
roadsNoParking along whole roads, by name (Haringey so far): "Pellatt Grove", "Park Road, N8", "Lordship Lane". Answers come back in roads, not records; no addresses needed. A road we don't hold, or a place or district that rules it out, comes back ok:false with the reason and did_you_mean; one answered under another name says so first (note, matched_as).
fieldsNoOnly these facts (default: all that apply). flood is FEMA in the US, the Environment Agency in England. parking_zone answers inside Haringey by default; named, it says "held for Haringey only so far" elsewhere.
regionNoOptional; worked out per address from its postcode or ZIP.
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.
recordsNo{id, address} or {id, lat, lng}. Send your own ids to merge results back.
addressesNoOr plain addresses/postcodes, numbered from 1.
backgroundNoWith source: run as a background job and answer at once with job_id (automatic past 150 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. Changed1 schema field changed
    • addedInput schema / properties / roads
      Added value: +{
      +  "description": "Parking along whole roads, by name (Haringey so far): \"Pellatt Grove\", \"Park Road, N8\", \"Lordship Lane\". Answers come back in roads, not records; no addresses needed. A road we don't hold, or a place or district that rules it out, comes back ok:false with the reason and did_you_mean; one answered under another name says so first (note, matched_as).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 10,
      +  "type": "array"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / fields / description
      Previous value: -"Only these facts (default: all that apply). flood is FEMA in the US, the Environment Agency in England."New value: +"Only these facts (default: all that apply). flood is FEMA in the US, the Environment Agency in England. parking_zone answers inside Haringey by default; named, it says \"held for Haringey only so far\" elsewhere."
    • changedInput schema / properties / fields / items / enum
      Previous value: -[
      -  "tract",
      -  "income",
      -  "county",
      -  "metro",
      -  "hubzone",
      -  "opportunity_zone",
      -  "usda",
      -  "flood",
      -  "conservation_area",
      -  "listed_buildings",
      -  "uprn",
      -  "council",
      -  "green_belt",
      -  "article4",
      -  "tpo",
      -  "national_landscape"
      -]New value: +[
      +  "tract",
      +  "income",
      +  "county",
      +  "metro",
      +  "hubzone",
      +  "opportunity_zone",
      +  "usda",
      +  "flood",
      +  "conservation_area",
      +  "listed_buildings",
      +  "uprn",
      +  "council",
      +  "green_belt",
      +  "article4",
      +  "tpo",
      +  "national_landscape",
      +  "parking_zone"
      +]
  3. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, closed-world and non-destructive, so the description is free to add what they cannot. It does: coverage gaps are stated explicitly ('held for Haringey only so far', council data that is 'not published by this council', never none), null-with-depends_on cases are spelled out (stadium events, pay bays, edge-of-zone, Christmas weekend), unplaceable addresses are returned with a reason, and background execution kicks in automatically past 150 rows via get_job. The density is a readability cost, but the behavioral disclosure is well above the annotation baseline.

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

Conciseness2/5

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

The intent is front-loaded and the opening line is strong, but the body collapses into a single run-on paragraph of stacked parentheticals and semicolon chains covering parking, permits, red routes, UPRNs and flood zones. Content that matters is present but not scannable; headers or bullet grouping by region/use case would cut length and raise comprehension.

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

Completeness4/5

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

For a seven-parameter tool with nested source/records objects and no output schema, the description carries a lot: it enumerates which facts come back per country, describes the shape of parking answers and the read-aloud sentence, notes permit_covers/with_your_permit, red_route, matched_as and did_you_mean, and covers the background-job path. It does not describe the general record-level result envelope (ok/errors) that the roads path gets, which is the main remaining gap.

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 schema already documents roads, records, source and background. The description still adds meaning: it explains that naming fields shortens the answer, maps field meaning by region (FEMA vs Environment Agency flood, parking_zone defaulting to Haringey), and clarifies that roads answers return in 'roads' rather than 'records' and that a street-only address yields whole_road: true.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource: 'For up to 200 addresses or points, the official areas each one falls in, from our own copies of the official maps.' The per-country field lists (census tract, HUBZone, conservation area, flood zone) make clear this is an authoritative-areas lookup rather than a geocoder. It never names or excludes a sibling such as find_official_places or get_area_risk, so an agent must infer the boundary itself.

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?

Usage is routed by user intent rather than left abstract: 'for "which parking zone am I in, can I park here now?" send lat,lng or a full address with its postcode' and 'For a whole road ... send roads.' It also sets scope limits (200 records, Haringey-only parking, 'a guide, not an official determination'), but gives no when-not-to-use cases and no comparison against sibling tools that also answer location questions.

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