# Tanod utilpeek Geocoding

> Tanod utilpeek Geocoding is a paid API for AI agents from tanod.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-11).

Converts a city name to up to 5 geographic coordinate candidates (forward geocoding) or coordinates to the nearest city name (reverse geocoding), using an offline GeoNames cities15000 dataset.

## Facts

- Endpoint: POST https://tanod.dev/v1/geocode?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-utilpeek-geocoding-46092239
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_taIT52nkFRCZuKTFmM0gx

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-utilpeek-geocoding-46092239 -d '<json body>'
```

Example prompt: What are the coordinates for Manila, PH? I need up to 5 candidate cities from GeoNames in case there are multiple matches.

## When to prefer this

Choose this endpoint when you need lightweight, offline-safe city geocoding without relying on Google Maps or other commercial geocoding services — especially useful for AI agents needing to enrich structured data with coordinates, or to reverse-geocode a lat/lon to a human-readable city name, at very low cost ($0.001 per call). It covers all cities with 15,000+ inhabitants globally via GeoNames, which is sufficient for most city-level routing and enrichment tasks.

## Known failure modes

- No candidates found if the city name is misspelled or too small (below 15,000 population threshold)
- Ambiguous city names without a country/state qualifier may return unexpected candidates
- Coordinates out of range (-90 to 90 lat, -180 to 180 lon) will be rejected
- Providing both place and lat/lon simultaneously is invalid — only one mode at a time
- Payment failure or insufficient USDC balance prevents the call from completing

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

Returns up to 5 candidate city records for a forward geocoding request (each with city name, country, latitude, longitude, and population), or the single nearest city record for a reverse geocoding request, all sourced from the GeoNames cities15000 dataset (cities with 15,000+ inhabitants).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "lat": {
   "anyOf": [
    {
     "type": "number",
     "maximum": 90,
     "minimum": -90
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Reverse: latitude (-90..90); give lat and lon together, or place."
  },
  "lon": {
   "anyOf": [
    {
     "type": "number",
     "maximum": 180,
     "minimum": -180
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Reverse: longitude (-180..180); give lat and lon together, or place."
  },
  "place": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 120,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Forward: city name, optionally \", CC\" with an ISO country code or a US state code (e.g. \"Manila, PH\", \"Paris, TX\"); cities with 15,000+ people. Give place alone, or lat and lon."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "mode": "forward",
  "query": "Manila, PH",
  "total": 1,
  "filter": "country",
  "results": [
   {
    "lat": 14.6042,
    "lon": 120.9822,
    "name": "Manila",
    "timezone": "Asia/Manila",
    "matched_on": "name",
    "population": 1600000,
    "admin1_code": "NCR",
    "country_code": "PH"
   }
  ],
  "attribution": {
   "places": "GeoNames (geonames.org), CC BY 4.0",
   "changes": "cities15000 table reduced to selected columns and alternate names (see the API docs)",
   "license": "https://creativecommons.org/licenses/by/4.0/"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-utilpeek-geocoding-46092239/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
