Four things behind one API
Mireye is not a map, a GIS tool, or a data reseller. Four distinct capabilities ship behind the same auth, the same catalog, and the same provenance model.Data
Free public facts at a location. Public agencies (USGS, NOAA, EPA, EIA),
transparent open data (OpenStreetMap/OpenInfraMap, Overture), and
licensed parcel sources — normalized to one schema.
POST /v1/fetchEnrichment
Resolve one parcel from an address or coordinate, then return its selected
attributes and calculations with field-level provenance.
POST /v1/enrichTools
Computation over locations, not lookups at one: drive-time matrices,
nearest-candidate search, proximity screens, labor sheds.
POST /v1/proximityCoverage on demand
The catalog is not fixed. Ask for a field that doesn’t exist and a
genuine gap becomes a queued build that lands for every caller after
you.
POST /v1/field-requestsPOST /v1/ask selects
fields from the Fetch catalog, fetches them in parallel, and writes an answer
with inline citations. The MCP server exposes dedicated
tools for Search, Enrich, Fetch, questions, proximity calculations, and coverage
requests to Claude, Cursor, and custom agents.
The catalog is mostly infrastructure
These counts track the catalog build in this repository. The deployed API is the authoritative list — read it fromGET /v1/meta/fields, which is public and
unauthenticated.
- Fields: 315 across 7 layers (terrain, land cover, built environment, utilities, parcels, climate, hazards). Full catalog at
GET /v1/meta/fields. - Presets: 15 use-case bundles (
terrain,flood_risk,wildfire_underwrite,land_cover,site_selection,building_lookup,points_of_interest,utilities,boundaries,solar_siting,wind_siting,storage_siting,data_center_siting,grid_interconnect,natural_hazard).
What we won’t do
No black-box scores
No proprietary risk score, no “AI-derived” number dressed as data.
Every value traces to a record you can re-fetch and verify.
Absence is an answer
Where the record doesn’t exist, you get
absent with the reason — not
a plausible guess. Source failures surface in partial_failures with a
retryable flag.Coverage
/v1/ask, /v1/fetch, and their MCP tools are United States only. Primary
bounds are lat ∈ [18, 72], lng ∈ [-180, -65]; the Western Aleutians
additionally accept lat ∈ [51, 54], lng ∈ [172, 180). Out-of-bounds
requests return 400 coord_out_of_bounds. Drive-time tools in
/v1/proximity additionally cover Canada; other
endpoint pages document their own locator coverage.
Start here
Quickstart
First cited answer in five minutes. curl and jq, no SDK.
MCP install
One command to give Claude Code or Cursor the physical world.
Pricing in dollars
What each call costs, and how to quote a job before you run it.
API reference
Every endpoint, with try-it panels.
Find parcels by requirements
POST /v1/search finds the first parcels meeting all supplied
stored parcel and Fetch filters. Include a state or state2 filter with eq
for one two-letter US state code or in for a nonempty list (50 states and DC);
ne alone is insufficient. Acreage, county, situs city, and a polygon can further
narrow the search. Check status and
completion_reason to distinguish an exhausted search from one stopped by a
result limit, work limit, timeout, or failure. Each response includes next_cursor
to continue when more parcels are known; page size defaults to 10 and can be set
from 1 to 100 on every request. Continue with the same filters, fields and
enrichment mode; cursors expire after one hour. Each page is a separate paid
Search operation. Reuse that page’s idempotency key for retries.
Basic Search returns scalar filter values plus explicitly requested public Search
or Enrich extras in fields, excluding duplicate top-level identity values. Extras
are included in the query price. Set enrich: true to attempt the complete current
Enrich catalog regardless of fields, returning compact enriched_fields instead.
Both modes reuse the selected parcel’s stored parcel lat/lon unchanged. On Free,
Search costs $0.20 per query plus $0.02 per successfully enriched delivered parcel
when full enrichment is enabled; paid-plan discounts apply. Both modes share the
180-second Search budget; allow at least 210 seconds on the client. See
Search for examples, dollar ceilings, failures and pagination.
Use POST /v1/enrich to investigate a shortlisted
parcel separately. Pass its address or stored analysis_point, select a few fields
or a preset, then confirm parcel_match.parcel identifies the intended property.
Search and Enrich have their own Search field reference
and Enrich field reference; /v1/meta/fields
describes the Fetch catalog.