Skip to content
All data sources

US Municipal Open Data Discovery API and MCP server

No authsocrata-discovery

Federated discovery and bounded querying of real-estate datasets across participating US Socrata portals, plus curated city building-permit feeds on ArcGIS, CKAN, Carto, and OpenDataSoft.

US Municipal Open Data Discovery is published by Socrata US Open Data Catalog and participating municipal portals and covers United States, where a participating publisher exposes a Socrata dataset.

It refreshes on a schedule the publisher sets.

Last verified . That is when these facts were last rebuilt from the ParcelOps source registry, not when Socrata US Open Data Catalog and participating municipal portals last refreshed the data itself.

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

PublisherSocrata US Open Data Catalog and participating municipal portals

Freshness and coverage

FreshnessScheduled · Each portal and dataset publishes on its own cadence.
Places coveredUnited States, where a participating publisher exposes a Socrata dataset
Time coveredNot declared
CredentialsNo credentials required

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

    read

    Find municipal real-estate datasets in the US Socrata catalog.

    What you must provideq
    Records returnedopen-data-dataset
    How 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

    read

    Inspect one catalog-verified Socrata dataset’s portal-specific columns and published license.

    What you must provideportaldatasetId
    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}$"
        }
      },
      "required": [
        "portal",
        "datasetId"
      ],
      "additionalProperties": false
    }
  • queryDataset

    read

    Query one catalog-verified dataset with structured fields and filters; raw SoQL is not accepted.

    What you must provideportaldatasetId
    Records returnedportal-specific-open-data-row
    How 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

    read

    List curated city permit, inspection, and violation feeds for the normalized workflow.

    Records returnedmunicipal-building-operations-source
    How to get more resultsnone
    FreshnessScheduled (source-level)
    Input schema
    {
      "type": "object",
      "properties": {},
      "required": [],
      "additionalProperties": false
    }
    • Coverage, history, update cadence, and reuse terms differ by city and source feed.
  • queryMunicipalBuildingOperations

    read

    Search normalized permits, inspections, or violations for one curated city and property phrase.

    What you must providemarketpropertySearch
    Records returnedbuilding-permit, building-inspection, property-violation
    How 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

    read

    List curated new-construction permit sources with live-verified compound filter recipes.

    Records returnednew-construction-permit-source
    How to get more resultsnone
    FreshnessScheduled (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

    read

    Query one curated source with its verified new-residential-construction recipe applied server-side.

    What you must providesourceId
    Records returnedbuilding-permit
    How 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

    read

    Return 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