Documentation menu
Available tools
Tools for parcels, zoning, permits, cases, jurisdictions and usage.
The Placestack MCP server gives AI assistants such as Claude, ChatGPT and Cursor access to parcels, zoning, permits and zoning cases.
Tools
whoami
Returns the organization, plan, scopes and credit balance of this connection, and whether it is a person or an API key.
Call it first when a call is refused, to see which scope or credit is missing. Free.
Takes no arguments.
Returns
The response of GET /v1/me.
get_usage
Returns the organization's credit balance, the credits its plan includes each period, and spending by day and by operation.
Check it before a large or repeated request. Free.
Arguments
Returns
The response of GET /usage.
find_request
Lists the organization's requests to the /v1 routes, newest first, with who made each one, what it cost and its status.
Use it to see what a charge was for or why a call failed. The totals in get_usage add up these requests. Not available to a connection made with an API key. Free.
Arguments
Returns
The response of GET /usage/request.
find_event
Lists permits and cases filed on the places of the organization's watched lists, newest first, as events.
Each event's data holds the permit or case id; get_permit or get_case returns the record. Free.
Arguments
Returns
The response of GET /v1/event.
find_jurisdiction
Finds jurisdictions that contain a point, match a Census code, or fit a filter such as state, county, name or type. Free.
Each result has its id, its fips (the Census GEOID with its level named), its identifiers, within (the jurisdictions that contain it), and coverage. coverage.parcel and coverage.zoning each give a count, or null when there is no data. A count includes every jurisdiction inside, so a state's is the total across its counties. To check whether a county is covered, find it and read its coverage. A county's statistics.parcel gives its parcel count, median market value, lot size, year built and sale price, sales in the last year, and parcels by land use.
Arguments
Returns
The response of GET /v1/jurisdiction.
get_jurisdiction
Retrieves a jurisdiction by its jur_ id, with its fips, identifiers, within (the jurisdictions that contain it), coverage and statistics. Free.
coverage.parcel and coverage.zoning each give a count, or null when there is no data. A count includes every jurisdiction inside. A jurisdiction can have parcels without zoning, or zoning without parcels. statistics.parcel gives a county's median market value, lot size, year built and sale price, its sales in the last year and its parcels by land use, computed daily; it is null for anything but a county with parcels. To search by Census code or name, use find_jurisdiction.
Arguments
Returns
The response of GET /v1/jurisdiction/{jurisdiction_id}.
find_parcel
Finds parcels by address, parcel number or point, lists the parcels in an area, or filters parcels within a county.
Each parcel has its number and identifiers, jurisdiction, area, addresses, owners, latest assessment, buildings, sales and legal description, plus match, which says how it was found. An address that fits several parcels returns each of them, and a point on a condo lot returns every parcel on it. Send one locator at a time. A list needs a jurisdiction, fips, area or filter. To see how many parcels a list holds, call with size=1 and total=true.
An address, parcel number or point costs one credit, however many parcels it returns. A search costs 1 credit per 20 results.
Arguments
Returns
The response of GET /v1/parcel.
get_parcel
Retrieves a parcel by its prc_ id, with its identifiers, jurisdiction, area, addresses, owners, latest assessment, buildings, sales and legal description. One credit. Repeat requests within a day are free.
In a client that renders MCP Apps, the parcel appears as a card with its boundary over aerial imagery. To look up an address, parcel number or point, use find_parcel.
Arguments
Returns
The response of GET /v1/parcel/{parcel_id}.
resolve_parcel_batch
Looks up a list of addresses or parcel numbers in one call, such as a spreadsheet column.
Returns one entry per locator, in the order sent, with its status (matched, ambiguous, unmatched or invalid), how many parcels fit, and the best parcel with its match. One credit per locator matched. Locators that match nothing are free.
Arguments
Returns
The response of POST /v1/parcel/batch.
find_zoning
Finds the zoning at a place, or lists every zoning classification a jurisdiction defines.
A place (address, lat and lon, parcel or bbox) returns its base classification and any overlays, base first. A jurisdiction or fips returns every classification it defines, and code narrows that to one district.
allowances and standards are included only with include=allowance or include=standard, each entry with its citation. A use missing from allowances is not prohibited: unlisted_uses, always included, gives the ordinance's rule for unlisted uses.
One credit per place, however many classifications apply. A jurisdiction's full list is charged per page.
Arguments
Returns
The response of GET /v1/zoning.
get_zoning
Retrieves a zoning classification by its zon_ id, with the jurisdiction and ordinance that adopted it and the dates it is in effect. One credit. Repeat requests within a day are free.
To find the zoning at a place, use find_zoning.
Arguments
Returns
The response of GET /v1/zoning/{zoning_id}.
find_permit
Finds building and trade permits on a parcel, near a point, in an area or in a jurisdiction.
Needs one of parcel, lat and lon, bbox, jurisdiction or fips. Each permit has its number, type, status, parcels, addresses, parties, dates, declared value, fees and decision. A null decision means the permit is pending. The outcome is the permit's status, so a permit that was issued and has since expired shows Expired.
1 credit per 20 results. Repeat requests within a day are free.
Arguments
Returns
The response of GET /v1/permit.
get_permit
Retrieves a permit by its pmt_ id, with its parcels, addresses, parties, dates, declared value, fees and decision. One credit. Repeat requests within a day are free.
A null decision means the permit is pending. To find permits on a parcel or at a place, use find_permit.
Arguments
Returns
The response of GET /v1/permit/{permit_id}.
find_case
Finds zoning and development cases (rezonings, variances, special uses, subdivisions and site plans) on a parcel, near a point, in an area or in a jurisdiction.
Needs one of parcel, lat and lon, bbox, jurisdiction or fips. Each case has its number, type, status, parcels, addresses, parties, dates, decision and conditions, and the zoning it concerns: for a rezoning, the from and to districts. A null decision means the case is pending. A case can be closed with no decision published.
1 credit per 20 results. Repeat requests within a day are free.
Arguments
Returns
The response of GET /v1/case.
get_case
Retrieves a case by its cas_ id, with its parcels, addresses, parties, dates, decision, conditions and zoning. One credit. Repeat requests within a day are free.
A null decision means the case is pending. To find cases on a parcel or at a place, use find_case.
Arguments
Returns
The response of GET /v1/case/{case_id}.
find_list
Lists the organization's saved lists of places, most recently updated first, each with its name and item_count. Free.
With parcel, only the lists that hold it, to see whether a parcel is already saved. To read what a list holds, use find_list_item.
Arguments
Returns
The response of GET /v1/list.
find_list_item
Lists every item on a saved list, most recently added first, with its kind, name, status, notes and who added it. Free.
An item is a site (one or more parcels), a city or county, a ZIP code or a drawn area, and a city, county, ZIP code or area can carry parcel filters. A site keeps the address, parcel numbers and acres it had when saved: retrieve each parcel with get_parcel for its current record.
Arguments
Returns
The response of GET /v1/list/{list_id}/item.
create_list
Creates an empty saved list and returns it with its id. Add places to it with add_list_item. Free.
Arguments
Returns
The response of POST /v1/list.
update_list
Renames a saved list and returns it. Free.
Arguments
Returns
The response of PATCH /v1/list/{list_id}.
add_list_item
Adds sites, cities, counties, ZIP codes or areas to a saved list, and returns the items added.
A site is one or more parcels; find their ids with find_parcel or resolve_parcel_batch first. Each parcel saved in a site costs a credit, as a lookup. A place already on the list is returned as is and not added twice. On a watched list, new items count toward the organization's monitoring limits.
Arguments
Returns
The response of POST /v1/list/{list_id}/item.
update_list_item
Updates a list item's name, status, notes, tags, parcels or filter, and returns the item.
Arguments left out are unchanged. Replacing a site's parcels costs a credit per parcel, as a lookup.
Arguments
Returns
The response of PATCH /v1/list/{list_id}/item/{item_id}.
remove_list_item
Removes one item from a saved list. The list and its other items are unchanged. Free.
Arguments
Returns
The response of DELETE /v1/list/{list_id}/item/{item_id}.
Prompts
Prompts are ready-made questions in your client’s slash menu. In Claude Code they are /placestack commands. In Claude Desktop they are in the connector’s menu. State, county, day range and radius arguments autocomplete.
Check coverage
county, state
- Whether Placestack has parcels and zoning for one county, and how many of each.
Locate a point
latitude, longitude
- The state, county and city at a point, with the data Placestack has for each.
Spending report
days
- The organization's credit spend over a window, what is left, and whether it will last.
Property report
address
- The county's record for one address: owner, size, value, building, last sale and legal description.
Find land
county, state, criteria
- Parcels in one county that fit a size, use, value or owner, counted before they are listed.
Owner portfolio
owner, county, state
- Every parcel one name holds in a county, with the total acreage and the owner's mailing address.
Batch lookup
items, state
- A pasted list turned into parcel records, with what matched, what was ambiguous and what was not found.
Zoning for a site
address, use
- What the zoning at one address allows, with the section of the code for each answer.
Where a use is allowed
use, county, state
- The districts in one city or county that allow a use, separated from the ones that allow it only with conditions.
Nearby parcels
latitude, longitude, radius
- The parcels within a distance of a point, nearest first, summarized by use and owner.
Skill
The server provides one resource, skill://placestack/SKILL.md, a guide for assistants on when to use Placestack, how to find parcels, what searches cost and how to read results. No setup is needed.