canonical: https://jentic.com/apis/mapserv.utah.gov/mapserv-utah-main

# Mapserv Utah Gov Utah AGRC Web API

Jentic publishes the only available OpenAPI specification for Utah AGRC Web API, keeping it validated and agent-ready. The Utah Geospatial Resource Center (UGRC) Web API exposes statewide geocoding, reverse geocoding, milepost geocoding, and spatial searching across more than 300 SGID (State Geographic Information Datasource) data layers covering parcels, roads, addresses, schools, voting precincts, and other Utah-specific reference data. The API authenticates with an `apikey` query parameter and is designed for civic, real-estate, transport, and field-services applications operating inside Utah.

## For AI agents

Geocode Utah addresses, reverse-geocode coordinates, look up positions on Utah highway mileposts, and query 300+ Utah SGID spatial layers through six endpoints. Authentication is an API key in the query string.

## Scope

Does not handle routing, turn-by-turn directions, addresses outside Utah, or static map rendering - use for Utah geocoding and SGID spatial search only.

## Capabilities

- Geocode a Utah street address to coordinates with `/geocode/{street}/{zone}` including locator scoring
- Reverse geocode an x,y coordinate pair into the closest Utah address through `/geocode/reverse/{x}/{y}`
- Resolve a milepost on a Utah state route to coordinates via `/geocode/milepost/{route}/{milepost}`
- Run a spatial or attribute query across any SGID feature class with `/search/{table}/{fields}`
- Discover the names of all queryable SGID feature classes through `/info/featureClassNames`
- Inspect the available field names for a given SGID feature class with `/info/fieldnames/{tableName}`
- Combine geocoding and SGID search to enrich a Utah address with parcel, school, or precinct attributes

## Use cases

### Utah Address Validation and Geocoding

Civic and government products operating inside Utah call `/geocode/{street}/{zone}` to validate residency on application forms, voter records, and benefits portals. The endpoint returns a match score and the matched address components so a form can flag uncertain hits for manual review. Integration is typically a half-day for a single form.

Example prompt: Call `/geocode/123` Main Street/Salt Lake City and return the coordinate with the locator score, flagging the result if the score is below 80.

### Highway Milepost to Coordinate Conversion

Transport, emergency response, and incident reporting tools call `/geocode/milepost/{route}/{milepost}` to convert mile markers reported by drivers, troopers, or maintenance crews into latitude/longitude. This is the only endpoint of its kind in Utah and replaces brittle internal lookup tables. Wiring it in is a few hours of work.

Example prompt: Call `/geocode/milepost/I-15/318` and return the latitude and longitude of milepost 318 on Interstate 15.

### SGID Spatial Layer Lookups

Real estate, civic engagement, and analytics applications use `/search/{table}/{fields}` against any of the 300+ SGID feature classes to enrich a Utah address with parcel, school, voting, or land-use attributes. The endpoint accepts attribute filters or geometry envelopes and returns matching features. Field-name discovery is supported by `/info/fieldnames` so a query can be built without reading the source dataset documentation.

Example prompt: Call `/info/fieldnames/SchoolBoundaries` to discover the schema, then `/search/SchoolBoundaries/NAME` with a point-in-polygon filter for a customer's coordinate to return the school district name.

### Reverse Geocoding for Utah Field Apps

Inspection and field-services apps used by Utah agencies call `/geocode/reverse/{x}/{y}` to convert a captured GPS coordinate back to the closest street address. The endpoint returns the matched address, distance to the input coordinate, and locator confidence. Integration takes a few hours behind a mobile app's check-in handler.

Example prompt: Call `/geocode/reverse/-111.8910/40.7608` and return the matched street address with the distance offset in metres.

### AI Agent for Utah Civic Workflows

An AI agent automating constituent services, address verification, or routing inside Utah calls the AGRC Web API through Jentic to geocode addresses and resolve them against SGID layers. Jentic exposes each AGRC operation as a typed tool with a discoverable input schema so the agent never has to read api.mapserv.utah.gov directly. Setup runs through search, load, and execute in under an hour.

Example prompt: Search Jentic for 'geocode an address in Utah', load the schema for `/geocode/{street}/{zone}`, and execute the call for '350 N State St' in zone 'Salt Lake City'.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/geocode/{street}/{zone}` | Geocode a Utah street address |
| GET | `/geocode/reverse/{x}/{y}` | Reverse geocode a coordinate |
| GET | `/geocode/milepost/{route}/{milepost}` | Resolve a Utah highway milepost to coordinates |
| GET | `/search/{table}/{fields}` | Query an SGID feature class |
| GET | `/info/featureClassNames` | List all available SGID feature classes |
| GET | `/info/fieldnames/{tableName}` | List fields for a feature class |

## Key resources

- **Geocode** — Forward, reverse, and milepost geocoding under /geocode
- **Search** — Attribute and spatial search against any SGID feature class via `/search/{table}/{fields}`
- **Info** — Schema discovery for SGID feature classes and field names via /info

## Why Jentic

- **Setup:** Wiring the Utah AGRC Web API by hand means appending its apikey query parameter, learning the /geocode, /search, and /info path segments, and handling the SGID table and field lookups yourself. Through Jentic you install once, import the Utah AGRC Web API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** The Utah AGRC endpoints are read-only geocode and spatial-search lookups, so scoping is by operation: you limit the agent to the operations it needs, such as geocoding an address, reverse geocoding coordinates, or searching an SGID table, and leave out the rest. Every operation you allow is one you have chosen, so the agent stays inside that set.
- **Credential handling:** Your Utah AGRC key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'geocode a Utah address' or 'search an SGID table', and Jentic returns the matching Utah AGRC operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Geocodio** — Geocodio offers high-volume US/Canada geocoding without the Utah-only spatial layer access.
- **OpenCage Geocoding API** — OpenCage provides global OSM-based geocoding without Utah's parcel and SGID enrichment.
- **MapQuest API** — MapQuest covers routing and static map images that pair well with UGRC's Utah geocoding and SGID search.
- **TomTom Routing API** — TomTom Routing handles traffic-aware route calculation that complements UGRC's Utah geocoder.

## FAQ

### Why is there no official OpenAPI spec for Utah AGRC Web API?

Utah Geospatial Resource Center does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Utah AGRC Web API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Utah AGRC Web API use?

The API uses a UGRC-issued API key passed as the `apikey` query parameter. Jentic stores the key encrypted in your Jentic One instance and appends it to each request at execution time so the raw key never enters the agent context.

### Can I geocode an address outside Utah with this API?

No. The Utah AGRC Web API is scoped to addresses, mile markers, and SGID feature classes inside the state of Utah. For nationwide US geocoding pair this API with a national geocoder such as Geocodio.

### What are the rate limits for the Utah AGRC Web API?

UGRC enforces per-key quotas rather than a published per-second rate limit. Quotas vary by access tier and can be reviewed in the UGRC developer console; requests beyond the quota return an HTTP 429 response.

### How do I look up a school district for a Utah address through Jentic?

Run `pip install jentic`, then chain two operations: first `/geocode/{street}/{zone}` to convert the address to a coordinate, then `/search/SchoolBoundaries/NAME` with a point filter on that coordinate. Jentic returns the matching feature attributes.

### What spatial datasets are searchable through this API?

The `/info/featureClassNames` endpoint lists every SGID feature class exposed by /search, covering 300+ datasets including parcels, roads, schools, voting precincts, and land use. Use `/info/fieldnames/{tableName}` to discover the queryable fields on each one.

### Can I limit what my agent is allowed to do with the Utah AGRC Web API?

Yes. Because you run Jentic One yourself, your own rules decide which Utah AGRC operations the agent may call, so you can allow only geocoding a street address, reverse geocoding a coordinate, resolving a highway milepost, or searching an SGID feature class, and leave the rest out. Every one of these endpoints is a read-only lookup, so the agent can never write or change data no matter what it calls. The API key stays stored by your own instance and is added at execution time, so the agent uses it only on the operations you have permitted.
