Buildability
us.buildability/mcpbuildability.usstreamable-httpv2.0.0Scanned
Source-cited, address-level answers on zoning, site constraints, permitting and what can be built.
12 tools: 9 change things and 3 only read.
- Reads private data · 0
- Reads text others write · 8
- Can send data out · 0
- No findings
Anlyon alternative
9 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
12 tools
Changes things 9Claude Code: ask
atlas_coverageWhich 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
cost_rangesWhat new construction costs, from U.S.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
envelopeWhat 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.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
flood_zoneThe 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 …Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
outcomesPermit outcomes on record for a zoning district (counts by outcome: built, permitted, denied, stalled, withdrawn) from the jurisdiction's open permit data.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
score_addressThe 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 eve…Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
site_briefingPublic records around a US street address: U.S.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
what_can_i_buildWhether 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 di…Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
zoning_districtThe 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-a…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 3Show 3 read-only tools
compare_addressesOne 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 d…Reads text others writeNo findings
Why it is in this group
- The name "compare_addresses" says "compare": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
fetchReturns 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)…Reads text others writeNo findings
Why it is in this group
- The name "fetch" says "fetch": a word for reading.
What it can reach
- untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
searchSearches Buildability's public pages: Zoning Atlas district pages (cited dimensional standards), city zoning source packs, the canonical product and methodology pages, and articles…No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write8
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 2.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http buildability https://buildability.us/api/mcpclaude mcp add --transport http buildability https://buildability.us/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__buildability__search",
"mcp__buildability__fetch",
"mcp__buildability__compare_addresses"
],
"ask": [
"mcp__buildability__what_can_i_build",
"mcp__buildability__score_address",
"mcp__buildability__envelope",
"mcp__buildability__outcomes",
"mcp__buildability__flood_zone",
"mcp__buildability__zoning_district",
"mcp__buildability__atlas_coverage",
"mcp__buildability__site_briefing",
"mcp__buildability__cost_ranges"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as buildability. Review it before you use it.
Capability tags behind 8 rules
- mcp__buildability__what_can_i_build untrusted-input
- mcp__buildability__score_address untrusted-input
- mcp__buildability__envelope untrusted-input
- mcp__buildability__flood_zone untrusted-input
- mcp__buildability__site_briefing untrusted-input
- mcp__buildability__cost_ranges untrusted-input
- mcp__buildability__fetch untrusted-input
- mcp__buildability__compare_addresses untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/us.buildability/mcp/verify?hash=f783c4b98b0ed1c867b6ae3f8ff62f6932ab97ba6c8a78e3d9bada6de721e6e5" | jq -e '.changed == false'Pinned hash f783c4b98b0e, from Oct 31, 2026, 08:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/us.buildability/mcp/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/us.buildability/mcp)Source: MCP Registry. Synced Oct 31, 2026, 08:17 UTC.