Skip to content
Docs menu (sections and pages; this page: MCP server)

API and agents

MCP server

The remote MCP server for AI assistants: connect Claude, Codex or Cursor, sign in in the browser, and the tools it offers.

View as Markdown

Cadastre's remote MCP server lets AI assistants such as Claude Code, Codex and Cursor read Cadastre's datasets, metro profiles, screens and rankings, with the same access, rights and attribution as the API. It needs no account: add the address and your assistant can use the public datasets at once, at 30 requests a minute. Sign in once in the browser for higher limits (there is no key to copy or manage). It is read-only and free while in beta.

Connect

The server's address is:

text
https://getcadastre.com/mcp

It speaks MCP's Streamable HTTP transport, and answers without a sign-in: your assistant connects with the address alone.

For higher limits, sign in with the sign-in address instead:

text
https://getcadastre.com/mcp?auth=required

It is the same server, but it asks a client without a token to sign in (MCP clients start signing in only when asked). The first time your assistant uses it, the assistant opens a Cadastre page in your browser: sign in if you need to, choose which of your accounts it may use, and approve. That is all. Only an account with API access turned on can be chosen (it is what gives the higher limits; write to support@getcadastre.com to ask for it); the page marks the others.

The Cadastre CLI prints, and with --write makes, the setup for Claude Code, Codex, Cursor and VS Code: cadastre mcp add claude-code (or codex, cursor, vscode).

Claude Code

sh
claude mcp add --transport http cadastre https://getcadastre.com/mcp

That is all; add --scope user to have it in every project. To sign in for higher limits, add the sign-in address instead, then run /mcp in Claude Code, choose cadastre and Authenticate:

sh
claude mcp add --transport http cadastre "https://getcadastre.com/mcp?auth=required"

Codex

sh
codex mcp add cadastre --url https://getcadastre.com/mcp

Or in ~/.codex/config.toml:

toml
[mcp_servers.cadastre]
url = "https://getcadastre.com/mcp"

To sign in for higher limits, use https://getcadastre.com/mcp?auth=required as the URL and run codex mcp login cadastre.

Cursor

In ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

json
{
  "mcpServers": {
    "cadastre": { "url": "https://getcadastre.com/mcp" }
  }
}

With the sign-in address as the url, Cursor offers to sign in to the server; that opens Cadastre's sign-in page in your browser.

VS Code

sh
code --add-mcp '{"name":"cadastre","type":"http","url":"https://getcadastre.com/mcp"}'

That adds it to your user profile. For one workspace, put it in .mcp.json at the workspace root:

json
{
  "mcpServers": {
    "cadastre": { "type": "http", "url": "https://getcadastre.com/mcp" }
  }
}

With the sign-in address as the url, VS Code opens the sign-in in your browser on first use.

Any other client

Any MCP client that supports Streamable HTTP connects with the address alone, and one that supports the MCP authorization flow signs in with the sign-in address (Gemini CLI, OpenCode and others sign in the same way). Clients register themselves through dynamic client registration; Cadastre does not yet accept client ID metadata documents, so a client that prefers them falls back to registering. Registration is for public clients (token_endpoint_auth_method none, with PKCE). A client that can only send a fixed header can use an API key instead of signing in:

sh
claude mcp add --transport http cadastre https://getcadastre.com/mcp --header "Authorization: Bearer cad_key_..."

Treat a key like a password: it acts as you, in the account it was made in, until you revoke it.

How sign-in works

The server follows the MCP authorization specification (opens in a new tab), so clients find everything themselves:

  1. At the sign-in address, a request without a token is answered 401 with WWW-Authenticate: Bearer resource_metadata="https://getcadastre.com/.well-known/oauth-protected-resource/mcp", scope="read" (at https://getcadastre.com/mcp it is served without a sign-in). A token or key that is not valid is answered 401 at either address, never served as if there were none.
  2. That protected resource metadata names the resource (https://getcadastre.com/mcp) and the authorization server, whose metadata lists its endpoints.
  3. The client registers itself (dynamic client registration), sends you to the consent page with PKCE, and asks for a token for https://getcadastre.com/mcp.

The only scope is read: the assistant can read data and run screens and rankings, never see or change your projects, account or settings. A token for the MCP server does not work on the API, and the reverse. Access tokens last an hour and are refreshed without asking you again; the approval itself lasts 90 days. Settings > Authorized apps lists every app you approved, with Disconnect. Leaving an account, or changing your password, disconnects its apps at once.

If the account's API access is turned off, the app keeps working with the limits of no sign-in (whoami says so); write to support@getcadastre.com. If Cadastre's Terms were updated, it answers 403 terms_required until you accept them in a browser.

Tools

Every tool is read-only (readOnlyHint), returns a short Markdown summary for the assistant to read and the same JSON the API returns as structured content, and ends with the credit its sources require. A tool that cannot answer (an unknown metro, a measure that is not served) returns an error that says what to try instead.

whoami

Says who this connection acts as: the Cadastre user, the account whose access it uses (and their role in it), and the credential (an OAuth connection or an API key) with its scopes, or that it is not signed in (anonymous: public datasets only); and its rate limits. Use it to check the connection works and which limits apply. It returns no data figures.

No arguments.

list_datasets

Lists the datasets Cadastre serves: each one's key, name, publisher, licence, the years (vintages) its values are for, the geographies it has values at (msa = metro areas, county, state) and how many measures it has. Use it to see what data Cadastre has; it lists datasets, not their measures.

No arguments.

describe_dataset

Describes one dataset: publisher, licence, source link, refresh cadence, vintages, geographies, and every measure it provides (name, label, unit, and the geographies each has values at).

ArgumentTypeRequiredWhat it is
datasetstringyesThe dataset's key, as list_datasets gives it (e.g. acs, bls-unemployment).

search_measures

Searches the measures (named figures such as unemployment_rate, population or fema_nri_risk_index) by words in their name, label or unit, optionally only those with values at one geography or from one dataset. Returns each measure's name (the identifier a measure is asked for by), label, unit, dataset and the geographies it has values at. With no query it lists every measure, a page at a time.

ArgumentTypeRequiredWhat it is
querystringnoWords to find in a measure's name, label or unit, e.g. unemployment, gdp, obesity, percent.
geographyone of msa, county, statenoOnly measures with values at this geography. msa = U.S. metro areas (OMB core-based statistical areas, by five-digit CBSA code); county = counties (five-digit FIPS); state = states (two-digit FIPS).
datasetstringnoOnly this dataset's measures (a key from list_datasets).
pageintegernoPage number, from 1.
per_pageintegernoRows per page (default 50, at most 200).

describe_measure

Describes one measure: its label, unit and dataset, and at each geography (msa, county, state) how a value is made (published by the source, or computed by Cadastre, e.g. a population-weighted mean of a metro's counties), which years (vintages) the values are for, and how many regions have one.

ArgumentTypeRequiredWhat it is
measurestringyesThe measure's name, as search_measures gives it.

measure_values

Gives every region's value of one measure at one geography: metro areas (the default), counties or states, optionally only those in one state, in order of geographic code. Use it to see a measure across all metros, or across the counties of a state. Says the unit, the vintages and whether Cadastre computed the values. Paged, 50 rows by default.

ArgumentTypeRequiredWhat it is
measurestringyesThe measure's name, as search_measures gives it.
geographyone of msa, county, statenoThe geography to list (default msa). msa = U.S. metro areas (OMB core-based statistical areas, by five-digit CBSA code); county = counties (five-digit FIPS); state = states (two-digit FIPS).
statestring (52 codes)noOnly regions in this state (USPS code); for metros, those partly in it.
pageintegernoPage number, from 1.
per_pageintegernoRows per page (default 50, at most 200).

find_metros

Finds U.S. metro areas (MSAs, the current OMB delineations) by words in their name and/or by state. Returns each metro's CBSA code (the identifier a metro is asked for by), name, states, whether all its states have right-to-work laws, and population where it is served. With neither filter it lists all of them (about 390), a page at a time.

ArgumentTypeRequiredWhat it is
querystringnoWords in the metro's name, e.g. Dallas, Austin, Salt Lake.
statestring (52 codes)noOnly metros that lie at least partly in this state (USPS code).
pageintegernoPage number, from 1.
per_pageintegernoRows per page (default 50, at most 200).

get_metro

Gives one metro area's profile: its name, CBSA code, states and right-to-work status, and every measure Cadastre serves that the metro has a value for, with the value, unit, the years (vintages) it is for and how it was made (published for the metro, or computed by Cadastre from its counties).

ArgumentTypeRequiredWhat it is
metrostring or integeryesA metro's five-digit CBSA code (e.g. 12420 for Austin-Round Rock-San Marcos, TX), its region id (a UUID) or its slug, as find_metros returns them.

compare_metros

Puts up to 25 metro areas side by side on up to 50 measures. Without measures it uses the standard site-selection figures (population, growth, manufacturing share of GDP, unemployment, hazard risk, industrial power price, where served).

ArgumentTypeRequiredWhat it is
metroslist of strings or integersyesThe metros to compare. Each one is given as a metro's five-digit CBSA code (e.g. 12420 for Austin-Round Rock-San Marcos, TX), its region id (a UUID) or its slug, as find_metros returns them.
measureslist of stringsnoMeasure names (from search_measures) with metro values. Default: the standard figures.

screen_metros

Screens the U.S. metro areas by pass/fail Requirements, as Cadastre's project page does: an optional list of states (a metro partly in one is in scope), a minimum population tier, a minimum manufacturing share of GDP, a maximum unemployment rate, a minimum five-year population growth, a maximum FEMA hazard risk score, a maximum industrial electricity price and right-to-work states only. Returns the funnel (how many metros remain after each step) and the metros that pass, with the values the Requirements read. It filters; it does not order the metros. Read-only.

ArgumentTypeRequiredWhat it is
stateslist of strings (codes)noLimit the scope to metros in these states (USPS codes). Omit for the whole country.
requirementsobject: tier, min_mfg_share, max_unemployment, min_growth, max_hazard, max_elec_price, rtw_onlynoPass/fail Requirements; omit any not wanted. Percentages are percent (4.5 means 4.5%).
limitintegernoHow many passing metros to list (default 25); the count and funnel cover all of them.

rank_metros

Ranks the U.S. metro areas that pass an optional screen (states and pass/fail Requirements: population tier, manufacturing share, unemployment, growth, hazard, power price, right-to-work) on weighted criteria, as Cadastre's project page does: each criterion is a measure with metro values (given by name), a direction (higher_better or lower_better) and a weight; each metro's value is scored 0-100 by percentile among the metros that pass, and the scores are blended by weight into a composite. A criterion's optional cutoff eliminates the metros it holds for. Returns the ranked metros with their composite and, per criterion, value, score and contribution to the composite (the contributions add up to it). Read-only.

ArgumentTypeRequiredWhat it is
stateslist of strings (codes)noLimit the scope to metros in these states (USPS codes). Omit for the whole country.
requirementsobject: tier, min_mfg_share, max_unemployment, min_growth, max_hazard, max_elec_price, rtw_onlynoPass/fail Requirements applied before ranking; omit any not wanted.
criterialist of objectsyesThe weighted criteria, each on a different measure with metro values.
include_eliminatedbooleannoAlso list the metros a criterion's cutoff eliminated, after the ranked ones (default false).
limitintegernoHow many metros to list (default 25); the count and funnel cover all of them.

incentive_programs

Lists the economic-development incentive programs that federal, state and local governments offer businesses (tax credits, grants, loans, loan guarantees, property tax abatements, sales and use tax exemptions, training grants, infrastructure, bond financing, zones), read from their official pages and reviewed by Cadastre. Filter by state, by metro (federal, the metro's states and its local governments) and by mechanism. Every value comes with the sentence it was quoted from and the page; a field the page does not state is null. A program is not an award or proof that a site qualifies, and a place with none listed is not covered yet. Requires API access.

ArgumentTypeRequiredWhat it is
statestring (52 codes)noFederal programs, the state's own and its local governments' (USPS code).
metrostring or integernoA metro's five-digit CBSA code (e.g. 12420 for Austin-Round Rock-San Marcos, TX), its region id (a UUID) or its slug, as find_metros returns them. Federal, the metro's states' and its local governments' programs.
mechanismstring (11 codes)noOnly programs of this kind.
pageintegernoPage number, from 1.
per_pageintegernoRows per page (default 50, at most 200).

Measures are named the way search_measures lists them (for example unemployment_rate or population). Metros are named by their five-digit CBSA code, which find_metros gives. Geographies are msa (metro areas), county and state.

Attribution

Every tool result ends with Sources and required credit: for each dataset behind the figures, its credit line, publisher, licence, the date Cadastre retrieved it, and any disclaimer or condition its publisher sets (CDC's "Source: CDC" and its no-endorsement statement, for example). The same list is in the structured content as attribution. When you, or your assistant, show or publish figures from Cadastre, show that credit with them. Values marked as computed by Cadastre are Cadastre's aggregates of county figures or its own derivations, not figures the publisher printed. Use of the server and what it returns is governed by the Terms of Service. Rights and attribution explains each source's terms.

Limits

  • Without a sign-in, 30 requests a minute and 2,000 a day per network address, shared with the API.
  • Signed in, with an account that has API access, 60 requests a minute and 10,000 a day per connected app or API key, and 50,000 a day per account across all of them, shared with the API.
  • Every message counts, including the client's start-up messages (a session starts with about four). Over a limit the server answers 429 with Retry-After.
  • An assistant that connects from its maker's servers (Claude on claude.ai, ChatGPT) has a larger allowance without a sign-in, 600 requests a minute and 50,000 a day per address, but everyone whose requests leave from that address shares it. A shared network (an office, a mobile carrier) shares its address's ordinary allowance. Sign in, with the sign-in address, for an allowance of your own.
  • Paged tools return 50 rows by default and at most 200; ask for the next page or narrow by state, geography or dataset. Screens and rankings list the first 25 metros unless asked for more with limit; their counts and funnels always cover every metro.
  • Comparisons take up to 25 metros and 50 measures; a ranking up to 20 criteria.

What is not served

  • Geometry: answers carry names and codes, never boundaries, points or lines.
  • Parcel data: property-level records are not part of the MCP server or the API.
  • Restricted sources: datasets whose terms do not allow it (County Health Rankings, for example) are never served; see Rights and attribution.
  • Listings: Cadastre does not hold property listings.

Only datasets whose terms Cadastre has approved for programmatic access are served; list_datasets shows which.