API access
Your AI client reaches US Municipal Open Data Discovery through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.
Where it came from
Freshness and coverage
What this source cannot tell you
- ⚠ Anything outside United States, where a participating publisher exposes a Socrata dataset. A request past that edge comes back empty rather than approximated.
- ⚠ Which years it spans, because the covered period is not declared.
- ⚠ Anything Socrata US Open Data Catalog and participating municipal portals does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
- ⚠ Schemas, publishers, update practices, licenses, and attribution requirements vary by dataset.
- ⚠ A catalog record may describe a viewer or download rather than a stable tabular API.
- ⚠ Municipal free text is treated as untrusted data and passes through ParcelOps response scanning.
- ⚠ Curated building-operations workflows normalize a small fixed set of city feeds; they are not a complete national permit, inspection, or violation history.
Methods (8)
A method is one call your agent can make against this source.
searchDatasets
readFind municipal real-estate datasets in the US Socrata catalog.
What you must provideqRecords returnedopen-data-datasetHow to get more resultsnone (limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "q": { "type": "string", "minLength": 1, "maxLength": 200 }, "portal": { "type": "string", "maxLength": 253, "description": "Optional exact portal hostname without scheme, path, or port." }, "limit": { "type": "integer", "minimum": 1, "maximum": 100 } }, "required": [ "q" ], "additionalProperties": false }- ⚠ Catalog resultSetSize is discovery metadata, not a claim that every record is queryable.
getDatasetSchema
readInspect one catalog-verified Socrata dataset’s portal-specific columns and published license.
What you must provideportaldatasetIdFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "portal": { "type": "string", "minLength": 3, "maxLength": 253 }, "datasetId": { "type": "string", "pattern": "^[A-Za-z0-9]{4}-[A-Za-z0-9]{4}$" } }, "required": [ "portal", "datasetId" ], "additionalProperties": false }queryDataset
readQuery one catalog-verified dataset with structured fields and filters; raw SoQL is not accepted.
What you must provideportaldatasetIdRecords returnedportal-specific-open-data-rowHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "portal": { "type": "string", "minLength": 3, "maxLength": 253 }, "datasetId": { "type": "string", "pattern": "^[A-Za-z0-9]{4}-[A-Za-z0-9]{4}$" }, "fields": { "type": "array", "minItems": 1, "maxItems": 100, "items": { "type": "string", "pattern": "^:?[A-Za-z_][A-Za-z0-9_]*$" } }, "filters": { "type": "array", "maxItems": 10, "items": { "type": "object", "properties": { "field": { "type": "string", "pattern": "^:?[A-Za-z_][A-Za-z0-9_]*$" }, "operator": { "type": "string", "enum": [ "eq", "neq", "gt", "gte", "lt", "lte", "contains", "startsWith" ] }, "value": { "oneOf": [ { "type": "string", "maxLength": 500 }, { "type": "number" }, { "type": "boolean" }, { "type": "null" } ] } }, "required": [ "field", "operator", "value" ], "additionalProperties": false } }, "orderBy": { "type": "object", "properties": { "field": { "type": "string", "pattern": "^:?[A-Za-z_][A-Za-z0-9_]*$" }, "direction": { "type": "string", "enum": [ "asc", "desc" ] } }, "required": [ "field" ], "additionalProperties": false }, "fullText": { "type": "string", "minLength": 1, "maxLength": 200 }, "limit": { "type": "integer", "minimum": 1, "maximum": 1000 }, "offset": { "type": "integer", "minimum": 0, "maximum": 100000 } }, "required": [ "portal", "datasetId" ], "additionalProperties": false }- ⚠ Rows retain the upstream portal schema; no cross-city field normalization is implied.
listMunicipalBuildingOperationsSources
readList curated city permit, inspection, and violation feeds for the normalized workflow.
Records returnedmunicipal-building-operations-sourceHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }- ⚠ Coverage, history, update cadence, and reuse terms differ by city and source feed.
queryMunicipalBuildingOperations
readSearch normalized permits, inspections, or violations for one curated city and property phrase.
What you must providemarketpropertySearchRecords returnedbuilding-permit, building-inspection, property-violationHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "market": { "type": "string", "enum": [ "chicago", "seattle", "austin", "san-francisco", "los-angeles" ] }, "propertySearch": { "type": "string", "minLength": 2, "maxLength": 200, "description": "Address, parcel identifier, or other property phrase supported by the selected municipal feed." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200 }, "offset": { "type": "integer", "minimum": 0, "maximum": 100000 } }, "required": [ "market", "propertySearch" ], "additionalProperties": false }- ⚠ Normalized public events are screening context, not proof of present permit, inspection, or code status.
- ⚠ ParcelOps excludes personal and contractor contact fields.
listNewConstructionPermitSources
readList curated new-construction permit sources with live-verified compound filter recipes.
Records returnednew-construction-permit-sourceHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }- ⚠ Recipes were verified live on the listed date; portals can rename fields or freeze datasets afterward.
- ⚠ Sources cover the listed jurisdictions only and record different construction-timeline stages.
queryNewConstructionPermits
readQuery one curated source with its verified new-residential-construction recipe applied server-side.
What you must providesourceIdRecords returnedbuilding-permitHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "sourceId": { "type": "string", "enum": [ "chicago-new-construction", "seattle-new-residential", "marin-county-new-residential", "baton-rouge-new-residential", "cincinnati-new-single-family", "cincinnati-new-multifamily", "mesa-new-residential", "austin-new-residential-construction", "austin-new-residential-building", "los-angeles-new-residential-applications", "los-angeles-new-residential-completions", "cambridge-new-residential", "honolulu-new-residential-historical", "norfolk-new-residential", "pierce-county-new-residential", "new-jersey-new-residential", "san-francisco-new-residential", "nyc-new-building-permits", "nyc-new-building-completions", "philadelphia-new-residential", "san-antonio-new-residential", "san-jose-new-residential", "boston-new-residential", "milwaukee-new-residential", "columbus-new-residential", "charlotte-new-residential", "nashville-new-residential", "el-paso-new-residential", "louisville-new-residential", "detroit-new-residential", "sacramento-new-residential", "raleigh-new-residential", "virginia-beach-new-residential", "minneapolis-new-residential", "memphis-new-residential", "new-orleans-new-residential", "plano-new-residential", "orlando-new-residential", "cleveland-new-residential", "greensboro-new-residential", "pittsburgh-new-residential", "durham-new-residential", "scottsdale-new-residential", "gilbert-new-residential", "winston-salem-new-residential", "buffalo-new-residential", "kansas-city-new-residential", "portland-new-residential", "chesapeake-new-residential-projects", "dfw-nctcog-new-residential-projects", "california-hcd-apr-new-residential" ] }, "issuedAfter": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "description": "ISO date lower bound; only accepted for sources whose listing reports supportsIssuedAfter." }, "limit": { "type": "integer", "minimum": 1, "maximum": 1000 }, "offset": { "type": "integer", "minimum": 0, "maximum": 100000 } }, "required": [ "sourceId" ], "additionalProperties": false }- ⚠ Rows retain the upstream portal schema; no cross-city normalization is implied.
- ⚠ A permit or certificate record is screening context, not proof construction started or finished.
getServiceInfo
readReturn the discovery workflow, security controls, limits, auth option, and license caveats.
FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }
Where this source is used
- Land research
Parcel records, ground conditions, and what reaches the property line, for raw and rural land.
- Data center siting
Power, water, transport, airspace, and hazard screening for a site before anyone signs anything.
- Commercial real estate
Parcel and assessment records, building programs, and the entity on the other side of the deal.
- Residential real estate
The parcel record, the housing programs that touch an address, and the conditions a buyer asks about.
- Real estate law
Federal rule text, rulemaking dockets, party records, and the property facts a filing has to state.
- Realtors and brokerages
The facts behind a listing, the programs a buyer may qualify for, and your own files in the same place.
- What building permits have been pulled near this property?
