Look up building permit status for King County, WA — searches across city + county jurisdictions. Agent-friendly: pipe, schema, tool.json.
King County Permit Status
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Look up building permit history and status across King County, WA jurisdictions — county-level permits (septic, critical areas, grading) and city-level permits (building, mechanical, electrical) can all apply to the same address. Coverage is live where a jurisdiction offers an open permit feed, and falls back to the correct municipal portal link everywhere else.
**Coverage today:** 🟢 **20/39** cities live (status + history) · 🟠 **19/39** indexed (issued-permit history from the King County Assessor; current status needs the city portal, which next_step names) · plus unincorporated King County. See the coverage scorecard below for the per-city breakdown.
Hosted API + MCP (no install)
The same lookup is served read-only, no auth, from permits-api.secondlandings.ai
(server.py, zero dependencies; see deploy/README.md):
| | |
|---|---|
| **MCP** (Streamable HTTP) | POST https://permits-api.secondlandings.ai/mcp — tool king_county_permit_status, arg query |
| **REST** | GET https://permits-api.secondlandings.ai/api/lookup?q=1817+Morris+Ave+S,+Renton+WA — optional limit, since=YYYY-MM-DD, types=electrical,mechanical |
| **Vendor map** | /vendor-map (and /vendor-map.json) — which permitting system each of the 39 cities runs, how it is queried or why it can't be, electrical authority, per-type routing; generated from the adapter config (scripts/gen_vendor_map.py, also in docs/vendor-map.md) |
| **OpenAPI 3.1** (typed) | /openapi.json · agent orientation /llms.txt · CLI definition /tool.json · /healthz |
Results are live; the server caches each query for 15 minutes and rate-limits
per client (30/min) to protect the municipal portals. **Known hosted-only gap:** Tyler's
hosted Civic Access (Redmond) returns 403 to datacenter IPs, so from the hosted endpoint a
Redmond lookup carries the Assessor index plus a next_step with reason: source_blocked
instead of live Redmond records; run lookup.py locally for those. Every other source
answers from the droplet. Run it yourself with
python3 server.py or docker compose up — server.json is the MCP Registry manifest.
Parcel-number searches query every supported MyBuildingPermit and live city
portal because a bare parcel number does not identify its city jurisdiction.
Address searches are routed by **geometry, not the mailing city**: the address
is geocoded with King County's four-county locator and the point is tested
against the city-limits polygons. A "Kent, WA" address that sits in
unincorporated King County is searched as county, not Kent; an address with no
city in it is routed correctly instead of fanning out to every jurisdiction; and
Pierce-side addresses of Milton/Pacific/Auburn get a pierce: parcel id. The
mailing city is only used when geocoding fails (jurisdiction.basis says which).
What you get
| Field | Description |
|---|---|
| action | found (permits returned), none (no matches), refine (connection issue) |
| permit_count | Unique permits found before any filter (= summary.total) |
| summary | **Answer from this first.** Computed over every permit matching since/types, not just the returned rows: total, matched, returned, truncated, open, closed, status_unknown, by_type, by_status, by_year, years [oldest, newest], latest |
| permits | Up to limit records (default **50**), newest first — a 356-permit commercial parcel is ~56k tokens unshaped; the summary carries the whole picture |
| filters | The limit / since / types that produced this response |
| searched | Which jurisdictions were searched |
| separate_portal | If the city has an unsupported portal: city name + URL + prose note |
| next_step | Structured twin of separate_portal for agents: kind: manual_portal_search, reason (no_feed / electrical_only / parcel_resolution_failed / source_incomplete / source_blocked — the city's live system refused this client with 403), portal_url (the portal's actual search page when known — PermitTrax, LAMA, OpenGov, Kent), vendor, search_by (inputs that page accepts; empty when login-gated), query, query_type, covers_electrical, hint |
| errors | Source errors when a search is incomplete; may accompany permits from successful sources |
| trust_level | live (every applicable source answered), partial (a source errored or hit its result cap — see errors), fallback (nothing searchable). A city that needs a manual portal visit (next_step) is a scope fact, not distrust, and no longer lowers this |