Quickstart
Pick your client and run the line. The client opens a browser so you can sign in, or create an account, and approve access. There is no key to paste, and the free plan needs no card.
npx add-mcp https://askatria.ai/mcpDetects the agents on your machine, such as Claude Code, Cursor, VS Code, Codex and Gemini CLI, and adds Atria to each. Your client opens a browser to sign in and approve; the free plan needs no card.
For any other MCP client, add the server to its configuration file:
MCP configuration
{
"mcpServers": {
"atria": {
"type": "http",
"url": "https://askatria.ai/mcp"
}
}
}Then ask your agent something about a place, for example: “Who owns 4405 Michigan Ave Rd NE in Cleveland, Tennessee, and how much of it is in the floodplain?”
Authentication
OAuth is the default for interactive clients. Atria supports dynamic client registration, so a client that speaks MCP authorization registers itself, opens the sign-in page and keeps its own tokens. The metadata is at /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource.
API keys are for servers, scripts and clients without OAuth. Create one under Scout, then Agents in your dashboard and send it as a bearer token. Keys start with atria_sk_ and are shown once.
MCP configuration with an API key
{
"mcpServers": {
"atria": {
"type": "http",
"url": "https://askatria.ai/mcp",
"headers": { "Authorization": "Bearer atria_sk_..." }
}
}
}Keys carry scopes: lookup, screen, search (which also covers atria_result), coverage and crawl. A call outside the key’s scopes is refused and costs nothing.
Calling over HTTP
The server speaks MCP over streamable HTTP and is stateless: every request is a JSON-RPC message POSTed to the endpoint. MCP clients handle this for you; without one, list the tools and call them directly.
List the tools
curl -s https://askatria.ai/mcp \
-H "Authorization: Bearer $ATRIA_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Call a tool
curl -s https://askatria.ai/mcp \
-H "Authorization: Bearer $ATRIA_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "atria_lookup",
"arguments": { "address": "4405 Michigan Ave Rd NE, Cleveland, TN" }
}
}'GET /mcp/info returns the server’s name, version and tool list without authentication.
Responses
Every value is wrapped in an envelope so an agent can cite it and can tell a real gap from a source that did not answer:
ok: the value, withsource(name and URL) andfetched_at.absent: the source answered and has nothing at this location, with areason.failed: the source did not answer. This says nothing about the site; retry later or check another source.
An ok envelope
{
"status": "ok",
"value": { "zones": [{ "zone": "A", "acres": 4.29, "percent": 7.2 }], "sfhaPercent": 7.2 },
"source": { "name": "floodZone", "url": "https://services.arcgis.com/.../FeatureServer/0" },
"fetched_at": "2026-10-01T00:00:00.000Z"
}The server instructs agents never to fill an absent or failed value in from general knowledge.
Tools
atria_lookup
100 creditsscope lookup
Parcel lookup
Resolve an address, a coordinate, or an assessor parcel number to the parcel of record: owner, acreage, zoning, land use, assessed, land and improvement values, year built and the parcel outline.
| Argument | Type | Description |
|---|---|---|
| address | string | Street address with city and state or ZIP. |
| lat | number | Latitude, WGS84. |
| lng | number | Longitude, WGS84. |
| apn | string | Assessor parcel number. Requires county and state. |
| county | string | County name without the word "County", e.g. Bradley. |
| state | string | Two-letter state code, e.g. TN. |
Example arguments
{
"address": "4405 Michigan Ave Rd NE, Cleveland, TN"
}Pass one of address, lat and lng together, or apn with county and state.
atria_screen
10 per national module, 25 per county module, 400 at most creditsscope screen
Site diligence screen
Run diligence modules at a point or on a parcel. Each module comes back in its own envelope. Pass geometry_rings from atria_lookup so outline-based modules, such as flood zones, measure the whole parcel rather than its centre.
| Argument | Type | Description |
|---|---|---|
| latrequired | number | Latitude, WGS84. |
| lngrequired | number | Longitude, WGS84. |
| county | string | County name without the word "County", e.g. Bradley. |
| state | string | Two-letter state code, e.g. TN. |
| parcel_id | string | Parcel id from atria_lookup. |
| acreage | number | Parcel acreage. |
| geometry_rings | number[][][] | Parcel outline as [lng, lat] rings, from atria_lookup. |
| modules | string[] | Modules to run. Defaults to every module except exhibits. See the module list below. |
Example arguments
{
"lat": 35.194,
"lng": -84.8118,
"state": "TN",
"modules": [
"floodZone",
"transmissionLines",
"waterSewer"
]
}atria_search
20 per page creditsscope search
Search your Scout results
Query the parcels your organization has crawled and scored in Scout, with their scores and screen results. Results are limited to your organization.
| Argument | Type | Description |
|---|---|---|
| state | string | Two-letter state code, e.g. TN. |
| county | string | County name without the word "County", e.g. Bradley. |
| bbox | [w, s, e, n] | Bounding box, WGS84. |
| thesis_id | uuid | Limit to one thesis run. |
| min_acres | number | Minimum acreage. |
| max_acres | number | Maximum acreage. |
| min_score | integer | Minimum thesis score, 0 to 100. |
| owner_contains | string | Owner name contains. |
| zoning_contains | string | Zoning code contains. |
| land_use_contains | string | Land use contains. |
| screened_only | boolean | Only parcels with a diligence screen. |
| limit | integer | Page size, 1 to 100. |
| offset | integer | Pass next_offset from the previous page. |
Example arguments
{
"state": "TN",
"min_acres": 20,
"min_score": 80
}atria_result
20 creditsscope search
Scout result
One crawled parcel with its score, the reasoning behind it, and its full diligence screen.
| Argument | Type | Description |
|---|---|---|
| idrequired | uuid | Result id from atria_search. |
atria_coverage
Freescope coverage
Coverage
Which parcel and GIS sources Atria reads for a county, and which screen modules are national.
| Argument | Type | Description |
|---|---|---|
| countyrequired | string | County name without the word "County", e.g. Bradley. |
| staterequired | string | Two-letter state code, e.g. TN. |
atria_crawl_start
250,000 creditsscope crawl
Start a thesis run
Needs the Team or Enterprise plan. Run a written thesis over a county or a drawn polygon. Scout pulls the parcel records, measures infrastructure, scores every parcel against the thesis and screens the best ones. A run started by an agent returns an approval link; an owner of your organization approves it before any credits are charged. Then poll atria_crawl_status and read results with atria_search.
| Argument | Type | Description |
|---|---|---|
| namerequired | string | A name for the run. |
| staterequired | string | Two-letter state code, e.g. TN. |
| county | string | County to search, or pass polygon. |
| polygon | [lng, lat][] | Search area ring, WGS84. |
| thesisrequired | string | What a matching parcel looks like, in plain language. |
| vertical | string | custom, data_center, data_center_retrofit, mixed_use, retail, telecom_tower or infill_redevelopment. |
| min_acres | number | Minimum acreage. |
| max_acres | number | Maximum acreage. |
| max_parcels | integer | Parcels to score, 100 to 3,000. |
atria_crawl_status
Freescope crawl
Run status
Progress and result count for a thesis run.
| Argument | Type | Description |
|---|---|---|
| job_idrequired | uuid | From atria_crawl_start. |
Screen modules
Pass any of these in atria_screen’s modules. National modules cost 10 credits and county modules, which read the county’s own GIS, cost 25.
| Module | Reads | Credits |
|---|---|---|
| floodZone | FEMA flood hazard layer, on the parcel outline | 10 |
| floodPanel | FEMA FIRM panel and effective date | 10 |
| transmissionLines | Atria grid layer | 10 |
| electricState | Electric utility territory and tariffs | 10 |
| interconnectionQueue | ISO and RTO queues | 10 |
| waterSewer | EPA water systems and ECHO permits | 10 |
| broadband | FCC broadband map | 10 |
| elevation | USGS 3DEP | 10 |
| landCover | NLCD | 10 |
| environmentalFacilities | EPA ECHO | 10 |
| airQuality | EPA Green Book | 10 |
| transportAccess | Highway, rail and airport distances | 10 |
| incentivePrograms | State incentives and opportunity zones | 10 |
| zoningJurisdiction | Who zones the site | 25 |
| assessorRecord | County assessor | 25 |
| adjoiningParcels | County parcel layer | 25 |
| easementIndicators | County GIS layers | 25 |
| countyContext | County GIS layers | 25 |
| exhibits | Static map exhibits; opt-in | 10 |
Credits and plans
Calls are priced in credits; 1 credit is $0.001. Credits belong to your organization and reset on the first of each month (UTC). A call that would exceed what is left is refused and costs nothing.
Free
$0
5,000 credits a month
Agents only. About 50 lookups or a dozen full screens a month; no card needed.
Builder
$49 a month
75,000 credits a month
Agents and the API, with overage at $1 per 1,000 credits up to a cap you set.
Team
$399 a month
600,000 credits a month
Adds Scout (thesis crawls, chat, data rooms, pipeline, outreach) on the same balance; overage at $0.80 per 1,000.
Enterprise
Custom
Annual agreement
Scout seats across your organization, bulk exports, support terms and the advisory team.
Manage your plan in the dashboard.
Errors and limits
- 401 with a
WWW-Authenticateheader: no valid token or key. OAuth clients use the header to start sign-in. - Insufficient credits: the call would exceed your organization’s remaining credits. Nothing is charged; credits reset on the first of the month, or raise your plan.
- Rate limits apply per key per minute. A limited call is refused and costs nothing.
- Tool errors come back as MCP tool results with
isErrorset and a message the agent can read.