AI connector tools
Kadrin for AI is a connector for AI assistants, using the Model Context Protocol (MCP, a standard way for assistants to use outside tools). It lives at https://mcp.kadrindata.com/mcp and takes the same API keys. To set it up, see the quickstart.
What the assistant is told
Kadrin answers questions about any place in the United States (the 50 states, DC and Puerto Rico) with numbers from public sources such as the U.S. Census Bureau: people, income, housing, jobs, businesses, health, schools, getting around, tax incentive zones, internet service, spending, time use, environmental hazards and oil and gas wells, for a point, a radius, a drive-time area, an outline or an official area. Use find_geography to turn a place name into an official area, and search_variables to find measures. For a site report or a submarket report, ask enrich_area or compare_areas for that preset. Report each number with its source and years, and its margin of error when it matters. Oil and gas wells are counts and distances, not a measure of health risk: say "people living within 1 km of an active or idle well", never "at risk"; where a state isn't covered there's no number, not zero, and coverage says how much of a place is covered. Flood zones, regulated sites, fuel tanks and drinking water records say where something is mapped or recorded, never the risk to a person or a home; health measures describe an area's residents, never one person. Calls with numbers cost credits (one per group of measures per place, plus 2 to draw a drive-time area); dry_run says what a call would cost for free, and a call over 200 credits needs the person's confirmation first.
find_geography
Finds official US areas by name, ZIP code, GEOID (the official ID number the government gives each area) or location, with their GEOIDs, so enrich_area and compare_areas can use them. A name finds states, counties and cities or towns (add a state after a comma: "Springfield, IL"); a point finds every area it falls in, from its state down to its census block group. Up to 10 matches. Free.
What it takes
| Field | Type | What it is |
|---|---|---|
query | string | A name ("Cook County, IL"), a 5-digit ZIP code or a GEOID. |
lat | number | |
lon | number | |
levels | array of string | Only these kinds of area: state, county, tract (a census tract, a neighborhood-sized area of about 4,000 people), block_group (a smaller piece of a tract), place (a city or town) or zcta (a ZIP code area). |
Send at least one of query or lat and lon.
What it answers
| Field | Type | What it is |
|---|---|---|
matchesrequired | array of object |
search_variables
Searches the measures Kadrin has (such as median household income or jobs located in an area) by keyword, topic or group, with their IDs, what they count and where they come from. Use the IDs with enrich_area. Credits are charged per group, so measures in the same group cost one credit together. Free.
What it takes
| Field | Type | What it is |
|---|---|---|
query | string | Words to look for, such as "rent" or "jobs". |
topic | string | One of |
group | string | A group, such as income.household. |
limit | integer | Default |
What it answers
| Field | Type | What it is |
|---|---|---|
variablesrequired | array of object | |
morerequired | boolean | True if more measures match than were returned. |
enrich_area
Returns numbers for one US place: a point, a radius, a drive-time area, your own outline, or an official area such as a county (by GEOID). Ask for a ready-made report (preset), or for whole topics, groups or single measures (find them with search_variables). Each number comes with its margin of error (how far the true number could reasonably be from the estimate), its unit, and its source and years; cite the source when you report a number. Costs one credit per group of measures, plus 2 to draw a drive-time area; a call over 200 credits asks for confirmation first, and a place that fails costs nothing.
What it takes
| Field | Type | What it is |
|---|---|---|
arearequired | object | The place. Set kind, then the fields that kind needs. |
preset | string | A ready-made report, on its own or with topics, groups or measures: site_report (who lives and works there, what they earn and the businesses nearby; 8 groups, usually for a 10-minute drive-time area, so 10 credits a place) or submarket_report (growth, jobs and workers, income and housing costs; 7 groups, usually for a 3-mile radius, so 7 credits a place). Both add county, state and US comparisons. The place is still the one you send: when the person hasn't said what area, suggest the report's usual one. |
topics | array of string | Whole topics: demographics (population, age, households, education), income (income and poverty), housing (homes, owners and renters, values and rents), labor (jobs located in the area, residents' employment, and job growth over 5 and 10 years), businesses (counts of places such as grocery stores), environment (oil and gas wells by status, people and homes within 1 km of an active or idle well, and new drilling permits, in the states we have them for). One credit for each group in the topic. One of |
groups | array of string | Groups of related measures, such as housing.costs. One credit each. search_variables shows each measure's group. |
variables | array of string | Single measures by ID, such as income.household.median, from search_variables. You pay for the group each one belongs to, once. |
benchmarks | array of string | Also return each number for the county, state or whole country, for comparison, and for rates and medians where the place ranks among census tracts (neighborhood-sized areas). Free. |
release | string | A data release (a frozen snapshot of our data), such as 2026.11.1, to get the same answer every time. The newest unless you name one. Default |
dry_run | boolean | Only say what the call would cost. Free. Default |
confirm_cost | boolean | Needed to run a call that would cost more than 200 credits. Ask the person first. Default |
Send at least one of preset, topics, groups or variables.
What it answers
| Field | Type | What it is |
|---|---|---|
statusrequired | string | done: the answer is here. estimate: only the cost (dry_run). needs_confirmation: the call would cost more than 200 credits; ask the person, then call again with confirm_cost. |
releaserequired | string | |
area | object | |
values | array of object | |
warnings | array of object | |
sources | array of object | |
creditsrequired | object | |
citation | string |
compare_areas
Returns the same numbers for 2 to 10 US places side by side, each measure ranked from highest to lowest, such as candidate sites or nearby towns. Places, presets and measures are given as in enrich_area. Costs the same as enrich_area for each place; a call over 200 credits asks for confirmation first, and places that fail cost nothing.
What it takes
| Field | Type | What it is |
|---|---|---|
areasrequired | array of object | The places. Give each a name so the comparison is easy to read. |
preset | string | A ready-made report, on its own or with topics, groups or measures: site_report (who lives and works there, what they earn and the businesses nearby; 8 groups, usually for a 10-minute drive-time area, so 10 credits a place) or submarket_report (growth, jobs and workers, income and housing costs; 7 groups, usually for a 3-mile radius, so 7 credits a place). Both add county, state and US comparisons. The place is still the one you send: when the person hasn't said what area, suggest the report's usual one. |
topics | array of string | Whole topics: demographics (population, age, households, education), income (income and poverty), housing (homes, owners and renters, values and rents), labor (jobs located in the area, residents' employment, and job growth over 5 and 10 years), businesses (counts of places such as grocery stores), environment (oil and gas wells by status, people and homes within 1 km of an active or idle well, and new drilling permits, in the states we have them for). One credit for each group in the topic. One of |
groups | array of string | Groups of related measures, such as housing.costs. One credit each. search_variables shows each measure's group. |
variables | array of string | Single measures by ID, such as income.household.median, from search_variables. You pay for the group each one belongs to, once. |
benchmarks | array of string | Also return each number for the county, state or whole country, for comparison, and for rates and medians where the place ranks among census tracts (neighborhood-sized areas). Free. |
release | string | A data release (a frozen snapshot of our data), such as 2026.11.1, to get the same answer every time. The newest unless you name one. Default |
dry_run | boolean | Only say what the call would cost. Free. Default |
confirm_cost | boolean | Needed to run a call that would cost more than 200 credits. Ask the person first. Default |
Send at least one of preset, topics, groups or variables.
What it answers
| Field | Type | What it is |
|---|---|---|
statusrequired | string | done: the answer is here. estimate: only the cost (dry_run). needs_confirmation: the call would cost more than 200 credits; ask the person, then call again with confirm_cost. |
releaserequired | string | |
areas | array of object | |
measures | array of object | |
warnings | array of object | |
sources | array of object | |
creditsrequired | object | |
citation | string |
get_isochrone
Draws a drive-time area (everywhere you can reach from a point within a set number of minutes by car, on foot or by bike, without traffic delays) and returns its outline as GeoJSON and its size, without any numbers. To get numbers for one, use enrich_area with kind isochrone instead. Costs 2 credits; nothing if it fails. Wherever you show the outline, credit "© OpenStreetMap contributors".
What it takes
| Field | Type | What it is |
|---|---|---|
latrequired | number | Latitude. Needed for point, buffer and isochrone. |
lonrequired | number | Longitude. Needed for point, buffer and isochrone. |
mode | string | One of |
minutesrequired | integer | Needed for isochrone: travel time, 1 to 60 minutes (walking and biking up to 30). The starting point must be within 3 miles (5 km) of a road. |
release | string | A data release (a frozen snapshot of our data), such as 2026.11.1, to get the same answer every time. The newest unless you name one. Default |
What it answers
| Field | Type | What it is |
|---|---|---|
statusrequired | string | One of |
releaserequired | string | |
center | object | |
moderequired | string | |
minutesrequired | integer | |
km2required | number | |
outlinerequired | object | A GeoJSON Polygon or MultiPolygon. |
attribution | string | |
creditsrequired | object |
check_usage
Shows the credits used today, the free credits left today, the balance, and how much more this connection may use today before its daily limit. Free.
It takes nothing.
What it answers
| Field | Type | What it is |
|---|---|---|
test_keyrequired | boolean | |
balancerequired | integer | |
free_left_todayrequired | integer | |
used_todayrequired | integer | |
account_daily_cap | integer or null | |
connectionrequired | object |