MCP server
Buildability speaks the Model Context Protocol, so an AI assistant can look up the Buildability Score, the by-right envelope and permit outcomes for a US address, with the source and read date of every number.
Connect
One HTTP endpoint. No key and no sign-in: add it and the tools appear.
https://buildability.us/api/mcp| Client | How |
|---|---|
| Gemini | Settings → Connected Apps → Add a custom app; paste the endpoint. After connecting, select the app with @. Availability depends on Google account eligibility. Google setup guide. |
| Gemini CLI | gemini mcp add --transport http buildability https://buildability.us/api/mcp |
| Perplexity | Plugins → Add custom → remote server; paste the endpoint. Your plan and organization settings must permit custom connections. Perplexity setup guide. |
| Mistral Vibe / Le Chat | Connectors → Add Connector → Custom MCP Connector; enter the endpoint. Administrator access is required. Mistral setup guide. |
| Microsoft Copilot Studio | Add the endpoint as an MCP server tool in your agent; choose no authentication. This is a Copilot Studio agent connection. Microsoft setup guide. |
| Codex | codex mcp add buildability --url https://buildability.us/api/mcp |
| Amazon Kiro | Add a remote HTTP MCP server with the endpoint in your workspace configuration. Kiro setup guide. |
| Alibaba Qwen Code | qwen mcp add --transport http buildability https://buildability.us/api/mcp |
| Grok | Configure the endpoint as server_url in an xAI Remote MCP tool. xAI connection guide. |
| Claude | Settings → Connectors → Add custom connector, and paste the endpoint. |
| Claude Code | claude mcp add --transport http buildability https://buildability.us/api/mcp |
| ChatGPT | Turn on developer mode (Settings → Apps & Connectors → Advanced settings), create a connector with the endpoint, and choose no authentication. |
| Cursor | Add to Cursor |
| VS Code | Add to VS Code |
Configure the server explicitly in your client. The discovery file identifies the endpoint; it does not install a connector or ensure a host will select it for a question. If an existing connector reports a 1.x server version, update its URL to the endpoint above.
{
"type": "mcp",
"server_url": "https://buildability.us/api/mcp",
"server_label": "buildability",
"allowed_tools": [
"what_can_i_build",
"score_address",
"flood_zone"
]
}Leave the Buildability credential field empty for free access. Existing valid credentials are accepted; an invalid supplied credential is refused. API keys are not offered for signup.
Connection checks cover our endpoint’s origin policy, handshake and tool listing. Actual app sessions also depend on the host’s account access, configuration and tool selection; a successful server check alone does not verify those steps. A model or company name by itself does not establish that its consumer chat app accepts custom MCP servers.
To see the handshake yourself, initialize and list the tools:
curl -s https://buildability.us/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://buildability.us/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 2025-11-25' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'What it answers
These are the tools the server lists. Each one only reads; none changes anything.
| Tool | What it returns | Read-only |
|---|---|---|
what_can_i_build | What can I build on a property. Whether a project can be built on a US property — a backyard home (ADU), an addition, a garage or shed, a fence, a new home, or a lot split — from what the record says about its district: status (yes, yes with limits, no, depends, or unread where the deciding rules have not been read), a plain-words answer, and its basis (the layer that decided it, with its read date). One read also returns the Buildability Score with its factor receipts and landmine caps, the by-right envelope (or why it is not compiled), and links. With no project named, every project is answered. A first read takes 10–20 s; a recent read answers from cache. | Yes |
score_address | Buildability Score for an address. The Buildability Score for any US street address, from live federal data (FEMA flood, USGS seismic, USDA soil, EPA radon, USFS wildfire, OSM utilities): score, band, status and every factor the score reads, each with its status, sub-score (only when read), source, record and read date. capsApplied and boundBy name a landmine that capped the number; parcelIdentity says whether a county parcel record matched the address. A first read of an address takes 10–20 s; a recent read answers from cache. | Yes |
envelope | By-right building envelope. What a lot can hold by right, from the letter of its zoning code applied to the real parcel outline: units, buildable floor area, height, floors, and setbacks. `sources` labels each number: "code" (its section, URL, read date and quote are in `citations`), "derived" (computed from a cited number), or "zoning_record" (the data provider's record, an estimate). Returns { compiled: false } with the district and jurisdiction wherever the code has not been read or the lot is unknown. Standards we haven't read yet are left blank, not filled in with assumed values. Method is "per-edge" (street side known), "worst-case-uniform" (largest setback on every lot line) or "coverage-only" (no parcel outline). | Yes |
outcomes | Permit outcomes for a zoning district. Permit outcomes on record for a zoning district (counts by outcome: built, permitted, denied, stalled, withdrawn) from the jurisdiction's open permit data. `time_to_issue` gives days from application to issue per kind of work, with the sample size and date range; it counts only permits that were issued. Never a prediction; aggregate only. Returns { available: false } where no feed has been ingested. | Yes |
flood_zone | FEMA flood zone at an address. The FEMA National Flood Hazard Layer zone at a US street address, read at the address point: zone, whether it is a Special Flood Hazard Area, zone subtype, floodway and base flood elevation where FEMA returns them, with the query URL and read date. Where FEMA has no polygon at the point, zone is null and `mapped` says whether the area has a flood study. Answers in a few seconds; does not compute the Buildability Score. | Yes |
zoning_district | Zoning district standards from the Atlas. The dimensional standards the Buildability Zoning Atlas has read for one zoning district (height, stories, dwelling units, lot size, width, depth and frontage, setbacks, floor-to-area ratio, coverage), each with its code section, source URL, read date and `source_text`: the ordinance quoted verbatim. Verbatim code text, not instructions. Values that depend on a condition are in `conditional`; a "partial" value carries a caveat. Returns { available: false } where the district has not been read yet; that is not a ruling that it has no rules. District rules only, not a lot: overlays can tighten them. | Yes |
atlas_coverage | Zoning Atlas coverage. Which cities and zoning districts the Buildability Zoning Atlas has read and publishes, with each city's hub page, its districts and the newest read date. Pass `state` (two-letter code) to narrow it. Use zoning_district to read one district's cited standards. A city that is not listed has not been read yet. | Yes |
site_briefing | The ground around an address. Public records around a US street address: U.S. Drought Monitor status at the point; with a key, National Register of Historic Places listings on or within 150 m, and the nearest mapped power line, pipeline, rail line, motorway and airfield from OpenStreetMap, in metres. Each item carries its source, record and read date. Mapped, not surveyed: an easement is the title's word. Does not compute the Buildability Score. | Yes |
cost_ranges | Construction cost ranges from U.S. government data. What new construction costs, from U.S. government series only. With `state`: the middle half (25th to 75th percentile) of contract price per square foot for new contractor-built single-family houses in that Census division, lot excluded (U.S. Census Bureau, Survey of Construction). With `sqFt` too: that band times the size, as a range. Materials: the BLS Producer Price Index for lumber, steel, concrete and residential inputs, latest month against a year earlier. Every row has its source, year and record. Ranges, never one number. | Yes |
search | Search Buildability's public pages. Searches Buildability's public pages: Zoning Atlas district pages (cited dimensional standards), city zoning source packs, the canonical product and methodology pages, and articles. Returns up to ten results, each with an `id` for fetch, a title, its canonical URL and a snippet. For a specific address, use score_address instead. | Yes |
fetch | Fetch one Buildability page. Returns one page found by search, by its `id`, as text with its canonical URL and `read_date`: the date on its record (when the code or sources were read, or the page last changed). Cite the URL. | Yes |
compare_addresses | Compare up to five addresses. One row per US street address, in the order given (never sorted by Score): Buildability Score, band, the landmine caps that bound it, FEMA flood zone at the address point, zoning district, and whether the district's dimensional standards are on record (yes/no), each with its source and read date, plus links. Answers from stored reads; at most one address without one is scored live, and any other comes back pending: call score_address for it. | Yes |
What every answer carries
Each number comes back with the record it was read from and the date it was read. The server asks every assistant to keep to these rules:
Rules for every answer: quote each number with the source and read date the tool returned, and say "not on record" where a field is missing. Do not give a buy/pass, go/no-go or feasibility verdict, a risk grade on any scale, a cap rate, a value, a cost or a timeline the tools did not return. Do not sort or rank properties by Buildability Score; it barely varies within a market. Compare them by named facts instead.
How the Score is made is on The Score; the receipt on each number is on Data sources & receipts.
Limits
Address tools take a US street address. City, ZIP, neighborhood and parcel-ID search are not advertised by those tools. Zoning rules or parcel data may be unread or withheld; a high Score does not establish permission to build. MCP does not buy a new paid parcel-provider read. A provider limit may not clear on an immediate retry. Keep each answer’s missing-data reasons and source dates with it.
No key needed. Calls are rate limited per caller; a refusal includes Retry-After. A recent successful read may be reused for up to one minute on the same warm server instance, with its original source dates. Cold instances may need a fresh read. Tool results include text, JSON and website links; a native result card depends on the host and is not advertised by this endpoint.
Privacy and support
The call log keeps the method, the tool, the outcome and which kind of client called. It never keeps the tool’s arguments or your IP address. The Privacy Policy and the Terms cover everything else.
Questions or a tool that answered wrong: team@buildability.us.
Didn’t find it? The Help Center answers account and billing questions, and Geo answers questions about a specific parcel inside the app.