US parcel boundaries and assessor data: lookup by APN, point, radius or polygon.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <API key>. Needed for parcel lookups; coverage, pricing and area preview work without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Free, no API key. Says whether a county is in the current data release, or lists every covered county in a state when no county is given. Parcel lookups in counties that are not covered cost no credits.
USPS code, state name or 2-digit state FIPS, e.g. 'TX'
Optional county name, 3-digit county code or 5-digit FIPS
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http parcels https://api.getparceldata.com/mcp
Headers
Authorization (optional, not in the config above): Bearer <API key>. Needed for parcel lookups; coverage, pricing and area preview work without it.Free, no API key. Says whether a county is in the current data release, or lists every covered county in a state when no county is given. Parcel lookups in counties that are not covered cost no credits.
| Argument | Type | Description |
|---|---|---|
| state* | string | USPS code, state name or 2-digit state FIPS, e.g. 'TX' |
| county | any | Optional county name, 3-digit county code or 5-digit FIPS |
{
"type": "object",
"title": "check_coverageArguments",
"required": [
"state"
],
"properties": {
"state": {
"type": "string",
"title": "State",
"description": "USPS code, state name or 2-digit state FIPS, e.g. 'TX'"
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "County",
"default": null,
"description": "Optional county name, 3-digit county code or 5-digit FIPS"
}
}
}Finds the parcels that contain a latitude and longitude. Costs 1 credit per request, however many parcels come back. Up to 1,000 parcels per request. Needs an API key. Lookups in counties we do not cover and failed requests cost no credits. Returns parcel records with WKT boundaries in EPSG:4326, owner, address, assessed values, land use and zoning where the county publishes them.
| Argument | Type | Description |
|---|---|---|
| lat* | number | Latitude, decimal degrees |
| lng* | number | Longitude, decimal degrees |
| limit | integer | Parcels per request, 1 to 1,000 |
| offset | integer | Parcels to skip; each page is a new, charged request |
{
"type": "object",
"title": "find_parcels_at_pointArguments",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"title": "Lat",
"maximum": 90,
"minimum": -90,
"description": "Latitude, decimal degrees"
},
"lng": {
"type": "number",
"title": "Lng",
"maximum": 180,
"minimum": -180,
"description": "Longitude, decimal degrees"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 1000,
"minimum": 1,
"description": "Parcels per request, 1 to 1,000"
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Parcels to skip; each page is a new, charged request"
}
}
}Finds parcels by assessor parcel number (APN) in one county. Costs 1 credit per completed request, including no_match and ambiguous results. Up to 100 parcels per request. Validate each candidate before using it. Needs an API key. Lookups in counties we do not cover and failed requests cost no credits. Returns parcel records with WKT boundaries in EPSG:4326, owner, address, assessed values, land use and zoning where the county publishes them.
| Argument | Type | Description |
|---|---|---|
| apn* | string | APN, with any leading zeros |
| limit | integer | Parcels per request, 1 to 100 |
| state | any | USPS code, state name or 2-digit FIPS; needed with a county name |
| county* | string | County name, 5-digit FIPS or 3-digit county code |
| offset | integer | Parcels to skip; each page is a new, charged request |
| match_mode | string | normalized ignores punctuation and case; exact needs the original identifier; contains (alpha) finds identifiers containing the input |
{
"type": "object",
"title": "find_parcels_by_apnArguments",
"required": [
"apn",
"county"
],
"properties": {
"apn": {
"type": "string",
"title": "Apn",
"maxLength": 256,
"minLength": 1,
"description": "APN, with any leading zeros"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Parcels per request, 1 to 100"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "State",
"default": null,
"description": "USPS code, state name or 2-digit FIPS; needed with a county name"
},
"county": {
"type": "string",
"title": "County",
"maxLength": 128,
"minLength": 1,
"description": "County name, 5-digit FIPS or 3-digit county code"
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Parcels to skip; each page is a new, charged request"
},
"match_mode": {
"enum": [
"normalized",
"exact",
"contains"
],
"type": "string",
"title": "Match Mode",
"default": "normalized",
"description": "normalized ignores punctuation and case; exact needs the original identifier; contains (alpha) finds identifiers containing the input"
}
}
}Finds every parcel that intersects a WKT geometry (polygon, multipolygon, line or point). Costs 3 credits per request, however many parcels come back. The geometry's bounding box can be up to 25 km². Up to 1,000 parcels per request. Needs an API key. Lookups in counties we do not cover and failed requests cost no credits. Returns parcel records with WKT boundaries in EPSG:4326, owner, address, assessed values, land use and zoning where the county publishes them.
| Argument | Type | Description |
|---|---|---|
| wkt* | string | WKT in EPSG:4326 lon/lat order, e.g. POLYGON((-97.75 30.26, ...)) |
| limit | integer | Parcels per request, 1 to 1,000 |
| offset | integer | Parcels to skip; each page is a new, charged request |
{
"type": "object",
"title": "find_parcels_in_polygonArguments",
"required": [
"wkt"
],
"properties": {
"wkt": {
"type": "string",
"title": "Wkt",
"minLength": 1,
"description": "WKT in EPSG:4326 lon/lat order, e.g. POLYGON((-97.75 30.26, ...))"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 1000,
"minimum": 1,
"description": "Parcels per request, 1 to 1,000"
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Parcels to skip; each page is a new, charged request"
}
}
}Finds every parcel within a radius of a point, nearest first. Costs 3 credits per request, however many parcels come back. Radius up to 5,000 metres. Up to 1,000 parcels per request. Needs an API key. Lookups in counties we do not cover and failed requests cost no credits. Returns parcel records with WKT boundaries in EPSG:4326, owner, address, assessed values, land use and zoning where the county publishes them.
| Argument | Type | Description |
|---|---|---|
| lat* | number | Latitude, decimal degrees |
| lng* | number | Longitude, decimal degrees |
| limit | integer | Parcels per request, 1 to 1,000 |
| offset | integer | Parcels to skip; each page is a new, charged request |
| radius_m* | number | Radius in metres, up to 5,000 |
{
"type": "object",
"title": "find_parcels_in_radiusArguments",
"required": [
"lat",
"lng",
"radius_m"
],
"properties": {
"lat": {
"type": "number",
"title": "Lat",
"maximum": 90,
"minimum": -90,
"description": "Latitude, decimal degrees"
},
"lng": {
"type": "number",
"title": "Lng",
"maximum": 180,
"minimum": -180,
"description": "Longitude, decimal degrees"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 1000,
"minimum": 1,
"description": "Parcels per request, 1 to 1,000"
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Parcels to skip; each page is a new, charged request"
},
"radius_m": {
"type": "number",
"title": "Radius M",
"maximum": 5000,
"description": "Radius in metres, up to 5,000",
"exclusiveMinimum": 0
}
}
}Free, no API key. Returns the monthly API plans (price, included credits, overage per credit, rate limit), the credit cost of each lookup type and the one-off extract downloads. Statewide and nationwide licences are quoted at https://getparceldata.com/pricing.
No arguments.
{
"type": "object",
"title": "get_pricingArguments",
"properties": {}
}Free, no API key. Counts the parcels inside a bounding box, lists the counties it touches, and says whether the area fits the $49 extract of up to 5,000 parcels. Each side of the box can be up to 2 degrees. Limited to 30 requests per IP address per minute.
| Argument | Type | Description |
|---|---|---|
| east* | number | Eastern longitude, EPSG:4326 |
| west* | number | Western longitude, EPSG:4326 |
| north* | number | Northern latitude, EPSG:4326 |
| south* | number | Southern latitude, EPSG:4326 |
{
"type": "object",
"title": "preview_areaArguments",
"required": [
"west",
"south",
"east",
"north"
],
"properties": {
"east": {
"type": "number",
"title": "East",
"maximum": 180,
"minimum": -180,
"description": "Eastern longitude, EPSG:4326"
},
"west": {
"type": "number",
"title": "West",
"maximum": 180,
"minimum": -180,
"description": "Western longitude, EPSG:4326"
},
"north": {
"type": "number",
"title": "North",
"maximum": 90,
"minimum": -90,
"description": "Northern latitude, EPSG:4326"
},
"south": {
"type": "number",
"title": "South",
"maximum": 90,
"minimum": -90,
"description": "Southern latitude, EPSG:4326"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.