Docs

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.

Endpoint
https://buildability.us/api/mcp
ClientHow
GeminiSettings → 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 CLIgemini mcp add --transport http buildability https://buildability.us/api/mcp
PerplexityPlugins → Add custom → remote server; paste the endpoint. Your plan and organization settings must permit custom connections. Perplexity setup guide.
Mistral Vibe / Le ChatConnectors → Add Connector → Custom MCP Connector; enter the endpoint. Administrator access is required. Mistral setup guide.
Microsoft Copilot StudioAdd the endpoint as an MCP server tool in your agent; choose no authentication. This is a Copilot Studio agent connection. Microsoft setup guide.
Codexcodex mcp add buildability --url https://buildability.us/api/mcp
Amazon KiroAdd a remote HTTP MCP server with the endpoint in your workspace configuration. Kiro setup guide.
Alibaba Qwen Codeqwen mcp add --transport http buildability https://buildability.us/api/mcp
GrokConfigure the endpoint as server_url in an xAI Remote MCP tool. xAI connection guide.
ClaudeSettings → Connectors → Add custom connector, and paste the endpoint.
Claude Codeclaude mcp add --transport http buildability https://buildability.us/api/mcp
ChatGPTTurn on developer mode (Settings → Apps & Connectors → Advanced settings), create a connector with the endpoint, and choose no authentication.
CursorAdd to Cursor
VS CodeAdd 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.

xAI Remote MCP configurationjson
{
  "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:

initialize, then tools/listbash
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.

ToolWhat it returnsRead-only
what_can_i_buildWhat 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_addressBuildability 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
envelopeBy-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
outcomesPermit 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_zoneFEMA 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_districtZoning 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_coverageZoning 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_briefingThe 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_rangesConstruction 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
searchSearch 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
fetchFetch 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_addressesCompare 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.