Utah: Parcel Search by Attribute
utahparcels/query-features
Searches Utah parcels by site address, city, ZIP, parcel id, county or account number, from the Utah Statewide Parcels polygon layer of the State Geographic Information Database (SGID), about 1.6 million parcels. Returns up to 100 records per page with the parcel id, site address, city and ZIP, ownership type, county, county account number, the recorder's phone number and the date the county data is current to (owner names are not returned). Matching is case-insensitive and finds the text anywhere in the chosen column. Says when more rows remain. Data from the State of Utah, SGID (Utah Geospatial Resource Center statewide parcels). Passed through unmodified and served by Eden Engine; not an official State of Utah product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Data source
Data from the State of Utah, SGID (Utah Geospatial Resource Center statewide parcels). Passed through unmodified and served by Eden Engine; not an official State of Utah product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "utahparcels/query-features" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "utahparcels/query-features" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "utahparcels/query-features", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "utahparcels/query-features", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 25, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"field",
"value"
],
"properties": {
"field": {
"enum": [
"PARCEL_ADD",
"PARCEL_CITY",
"PARCEL_ZIP",
"PARCEL_ID",
"County",
"ACCOUNT_NUM"
],
"type": "string",
"description": "Column to search: PARCEL_ADD (site address), PARCEL_CITY, PARCEL_ZIP, PARCEL_ID, County or ACCOUNT_NUM."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Most rows to return in one call, 1 to 100. Defaults to 10."
},
"value": {
"type": "string",
"pattern": "^(?!.*--)[A-Za-z0-9 .,#/&-]{1,100}$",
"description": "Text to find anywhere in the chosen column, 1 to 100 characters: letters, digits, spaces and . , # / & - only, no double hyphen. Case does not matter."
},
"offset": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Number of matching rows to skip, for the next page. Leave out for the first page."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"features"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Field definitions (name, alias, type) for the attributes below; the upstream leaves them out of an empty answer."
},
"features": {
"type": "array",
"items": {
"type": "object",
"required": [
"attributes"
],
"properties": {
"attributes": {
"type": "object",
"required": [
"OBJECTID"
],
"properties": {
"County": {
"type": [
"string",
"null"
],
"description": "County name written without spaces, for example SaltLake or BoxElder."
},
"OBJECTID": {
"type": "integer",
"description": "Layer row id."
},
"OWN_TYPE": {
"type": [
"string",
"null"
],
"description": "Ownership type: Federal, Private, State or Tribal; null or empty when not supplied."
},
"RECORDER": {
"type": [
"string",
"null"
],
"description": "Telephone number of the county recorder that supplies the parcel."
},
"PARCEL_ID": {
"type": [
"string",
"null"
],
"description": "Parcel identifier as the county assigns it."
},
"PARCEL_ADD": {
"type": [
"string",
"null"
],
"description": "Parcel site address; null when the county does not supply one."
},
"PARCEL_ZIP": {
"type": [
"string",
"null"
],
"description": "Parcel ZIP code; null when not supplied."
},
"ParcelsCur": {
"type": [
"integer",
"null"
],
"description": "Date the county's parcel data is current to, in milliseconds since 1970-01-01 UTC."
},
"ACCOUNT_NUM": {
"type": [
"string",
"null"
],
"description": "County account number."
},
"PARCEL_CITY": {
"type": [
"string",
"null"
],
"description": "Parcel city; an empty string when not supplied."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"fieldAliases": {
"type": "object",
"additionalProperties": true
},
"geometryType": {
"type": "string"
},
"displayFieldName": {
"type": "string"
},
"spatialReference": {
"type": "object",
"additionalProperties": true
},
"objectIdFieldName": {
"type": "string"
},
"exceededTransferLimit": {
"type": "boolean",
"description": "True when more rows matched than were returned; call again with a higher offset."
}
},
"description": "The ArcGIS query response: `features` holds one record per match under `attributes`; an empty `features` list means nothing matched; `exceededTransferLimit` is true when more rows matched than were returned.",
"additionalProperties": true
}