addedInput schema / description
Added value: +"Give `query` (address / parcel / permit number) OR `contractor` / `license` for a contractor pull-history search; never both."
addedInput schema / properties / contractor
Added value: +{
+ "description": "Contractor company name (substring) — returns what they have pulled across the MyBuildingPermit cities. Use instead of query.",
+ "type": "string"
+}
addedInput schema / properties / license
Added value: +{
+ "description": "WA L&I contractor license number — same search by license. Use instead of query.",
+ "type": "string"
+}
changedInput schema / required
Previous value: -[
- "query"
-]New value: +[]
addedOutput schema / properties / coverage_note
Added value: +{
+ "description": "Contractor searches only: which cities were (and were not) searched",
+ "type": "string"
+}
changedOutput schema / properties / jurisdiction / description
Previous value: -"Which authority the query was routed to and why. basis: city-limits (geocoded point inside the city's polygon — authoritative), geocoder-city (locator's city, outside King County's polygon layer), address-text (the mailing city in the query), null (none). unincorporated=true means county permits only."New value: +"Which authority the query was routed to and why. basis: city-limits (geocoded point inside the city's polygon — authoritative), geocoder-city (locator's city, outside King County's polygon layer), address-text (the mailing city in the query), parcel-site-address (a parcel query, resolved through the Assessor's site address), null (none). unincorporated=true means county permits only."
changedOutput schema / properties / jurisdiction / properties / basis / enum
Previous value: -[
- "city-limits",
- "geocoder-city",
- "address-text",
- null
-]New value: +[
+ "city-limits",
+ "geocoder-city",
+ "address-text",
+ "parcel-site-address",
+ null
+]
changedOutput schema / properties / next_step / properties / query_type / enum
Previous value: -[
- "address",
- "parcel",
- "permit"
-]New value: +[
+ "address",
+ "parcel",
+ "permit",
+ "contractor"
+]
changedOutput schema / properties / next_step / properties / reason / enum
Previous value: -[
- "no_feed",
- "electrical_only",
- "parcel_resolution_failed",
- "source_incomplete",
- "source_blocked"
-]New value: +[
+ "no_feed",
+ "electrical_only",
+ "parcel_resolution_failed",
+ "source_incomplete",
+ "source_blocked",
+ "source_capped"
+]
changedOutput schema / properties / permits / items / properties / is_open / description
Previous value: -"Normalized across vendor status vocabularies: false when finaled/closed/expired/withdrawn/etc., null when the source exposes no status"New value: +"Heuristic, census-tested weekly: false when finaled/closed/expired/withdrawn/etc. (or a finaled_date exists), true for issued/pending/review words, null when the source exposes no status. Check is_open_basis before relying on it."
addedOutput schema / properties / permits / items / properties / is_open_basis
Added value: +{
+ "description": "finaled_date = certain (the record carries a final date); status-vocabulary = regex over the vendor's status word (heuristic); null = no status available",
+ "enum": [
+ "finaled_date",
+ "status-vocabulary",
+ null
+ ],
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / routing_by_type
Added value: +{
+ "description": "Per permit type (building, mechanical_plumbing, electrical, land_use, engineering_row, fire, grading, septic) for the resolved jurisdiction: {system, portal, live, note}. live=true means that system is searched by this tool; otherwise the portal is where to look. Present for address queries and parcel queries that resolved a city.",
+ "type": "object"
+}
changedOutput schema / properties / summary / description
Previous value: -"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 {permit_number,type,status,date,jurisdiction}. Answer from this; drill into permits only when you need rows."New value: +"Computed over every permit matching since/types (not just the returned rows): total, matched, returned, truncated, open, closed, status_unknown, open_basis_counts {finaled_date, status-vocabulary} (how many open/closed verdicts rest on a fact vs the status-word heuristic), by_type, by_status, by_year, years [oldest, newest], latest {permit_number,type,status,date,jurisdiction}. Answer from this; drill into permits only when you need rows."