Products API & Data Search Coverage Property History Alerts For Contractors Data Exports
Solutions Solar & Energy Roofing HVAC Real Estate Insurance Lenders & CRE Contractors
Pricing Refer & Earn API Docs Sign In Get Started
Documentation

Connect PermitStack to Claude, ChatGPT and other AI apps

PermitStack has a hosted MCP (Model Context Protocol) server, so an AI app can look up U.S. building permits for you in plain language: "roofing permits filed in Austin last month", "the permit history of 123 Main St, Boise", "which solar installers pull the most permits in Phoenix".

Connector URL: https://mcp.permit-stack.com/mcp
The connector is read-only. It looks things up; it never changes anything in your account.

What you need

Claude (claude.ai, Claude Desktop, mobile)

  1. In Claude, open Settings > Connectors. If PermitStack is listed, click Connect. Otherwise click Add custom connector, name it PermitStack, and paste https://mcp.permit-stack.com/mcp.
  2. A PermitStack sign-in window opens. Enter your account email and click Email me a sign-in code.
  3. Enter the code from the email. Its subject is "Your PermitStack sign-in code", and it says which app is being connected: Claude, ChatGPT, or "an app on your own computer".
  4. Check the request: it names the app, the account email, what the app can read, and that you will be sent back to claude.ai. Click Allow.
  5. Ask Claude a permit question. Claude may ask before it runs a PermitStack tool.

Claude Code

claude mcp add --transport http permitstack https://mcp.permit-stack.com/mcp

Then run /mcp in Claude Code and choose PermitStack to sign in. Your browser opens the same sign-in page. The consent screen says you are being sent back to an address on your own computer (localhost or 127.0.0.1). That is expected for Claude Code. Only allow it if you just started the sign-in from Claude Code.

ChatGPT

Once PermitStack is available in ChatGPT's app directory, open the apps and connectors settings in ChatGPT, find PermitStack and connect. The sign-in steps are the same as for Claude. Afterwards you are sent back to chatgpt.com.

Other MCP apps

Cursor, VS Code and other apps that support remote MCP servers: add a remote MCP server with the URL https://mcp.permit-stack.com/mcp. Any app that supports MCP sign-in (OAuth 2.1 with dynamic client registration and PKCE) can connect. Apps that run on your own computer use a local return address, as Claude Code does.

What the connector can do

ToolWhat it doesSign-in needed
get_coverageWhich cities, counties and states PermitStack covers, and how current the data isNo (more detail when signed in)
search_permitsSearch permits by city, state, ZIP, category (roofing, solar, HVAC, ...), status, dates, value, location radius, contractor or keywordYes
get_permitLook up one permit by its permit numberYes
get_property_historyThe permits we hold for one street address, newest firstYes
search_contractorsFind contractors by name, city, state or tradeYes
get_contractor_permitsThe permits a contractor has pulledYes

Each answer holds at most 25 records; ask for the next page to see more. The data, and how far back it goes, is what your PermitStack account can access through the API, except the owner and applicant fields below. When your account covers only recent permits, a property history says from which date it covers.

What the app receives

The app, and the AI provider that runs it, receive the results of the lookups it makes. It does not receive a permit's owner name, owner mailing address or applicant name (on many permits the applicant is the owner), even where your account can read them with its API key: PermitStack removes those fields from every answer it gives a connected app. Other text in a record is passed on as the city published it, so a permit description can occasionally mention a person. The app never receives your API key, your billing details or your webhooks.

What the connector cannot do

It cannot change your account, your API key, billing, webhooks or saved searches, and it cannot download bulk exports. The access PermitStack gives a connected app is limited to the read-only lookups listed above, and the API refuses a connected app's token everywhere else.

Limits

Requests made through a connected app count against your account's daily and per-minute request limits, the same as requests made with your API key, and appear in your usage. One account can have up to 25 connected apps at a time, and connect up to 10 different apps in a day; disconnect one you no longer use to make room.

See and disconnect connected apps

App names are not verified. An app registers itself with PermitStack and chooses its own name, so the sign-in page and the dashboard label it "the name this app gave itself" (names that look like a web address are shown as "Unnamed app"). Check where you will be sent back to before you click Allow, and allow a connection only if you started it yourself just now.

Troubleshooting

No code arrived.
Codes can take a minute; check spam. We send at most 3 sign-in codes to one email in 10 minutes (dashboard sign-ins included). If you asked for several, use the newest code we emailed for this sign-in; if a new one does not arrive, the code you already have still works until it expires (10 minutes). If you have no PermitStack account for that email, no code is sent: create one, then connect again.
"That code is not right."
Type the code from the newest email. Each sign-in allows 5 tries; after that, start again from the app.
"That code has expired."
Click Send a new code. If the page says this sign-in cannot send another one, start again from the app.
"This sign-in attempt has expired."
Sign-in pages last 15 minutes. Start again from the app.
"This sign-in page belongs to a different browser window."
Finish the sign-in in the browser window the app opened, or start again from the app.
"This connection link is not valid for PermitStack."
The app sent a return address we do not accept, or a registration we no longer have. Remove the connector from the app and add it again; if it keeps happening, email support with the app's name.
"This connection has expired because it was set up a while ago and not used."
An app registers with PermitStack when you add the connector. A registration nobody signs in with is removed after a day (a week for Claude and ChatGPT), and one no connection uses is removed after it has gone unused for a while. Remove the connector from the app and add it again, then connect: the app registers anew.
The app says PermitStack is unavailable.
It is temporary; try again in a minute. You do not need to sign in again.
The app asks you to sign in again.
This happens after you disconnect it, after you recover your API key, after 180 days, or if the app has not been used for 30 days.

Privacy

What we collect when you connect an app, the one sign-in cookie, and how long we keep it: Privacy Policy, "Connecting AI apps". What the AI app does with the results is governed by its provider's privacy policy.

Support

support@permit-stack.com