king-county-permit-status

Live permit history + status for any King County, WA address, parcel or permit number. Read-only.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
100%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,743토큰 (도구 정의)
~19.5 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.36%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "king-county-permit-status": {
      "url": "https://permits-api.secondlandings.ai/mcp"
    }
  }
}

원격 엔드포인트

https://permits-api.secondlandings.ai/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (1)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢king_county_permit_status(query, limit, since, types)

Look up building permit history and status for any King County, WA property. Accepts a street address, 10-digit parcel number, or permit number. Live sources: MyBuildingPermit (14 cities + unincorporated King County), Seattle and Bellevue open data, Renton EnerGov, Redmond Civic Access, Shoreline eTRAKiT, Woodinville + King County Accela, Normandy Park and Carnation SmartGov, SeaTac LAMA, WA State L&I (electrical), plus the King County Assessor's issued-permit index for every parcel (covers the 19 cities without a public portal; history only, no status). Jurisdiction is derived from the city-limits polygon, not the mailing city. Returns all matching permits sorted newest-first. Use for due diligence, permit tracking, or verifying contractor pull history.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "One of: street address ('1817 Morris Ave S, Renton WA 98055'), 10-digit parcel number (plain '7222000353' or formatted '722200-0353'), or permit number ('B25000947', 'ADDC21-0275', '23-127651-LP', '6145915-CN'). Input type is auto-detected."
    },
    "limit": {
      "type": "integer",
      "minimum": 0,
      "default": 50,
      "description": "Max permits to return (newest first). summary always covers the whole matched set, so start small and raise only if you need the rows."
    },
    "since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only permits applied/issued on or after this date (YYYY-MM-DD)."
    },
    "types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Case-insensitive substrings matched against each permit's type, e.g. ['electrical', 'mechanical']."
    }
  },
  "required": [
    "query"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "found",
        "none",
        "refine",
        "reject"
      ],
      "description": "found — permits[] is populated; none — no permits found; refine — connection issue, retry; reject — bad input"
    },
    "permit_count": {
      "type": "integer",
      "description": "Unique permits found before any since/types filter (= summary.total)"
    },
    "summary": {
      "type": "object",
      "description": "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."
    },
    "filters": {
      "type": "object",
      "description": "The limit/since/types that produced this response"
    },
    "permits": {
      "type": "array",
      "description": "Up to `limit` permit records, newest first (applied_date, else issued_date).",
      "items": {
        "type": "object",
        "properties": {
          "permit_number": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "Permit category (e.g. 'Residential Electrical Permit')"
          },
          "status": {
            "type": "string",
            "description": "e.g. Issued, Complete, On Hold, Withdrawn, Expired"
          },
          "description": {
            "type": "string",
            "description": "Scope of work"
          },
          "address": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string"
          },
          "applied_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "YYYY-MM-DD"
          },
          "issued_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "YYYY-MM-DD"
          },
          "finaled_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "YYYY-MM-DD"
          },
          "expires_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "YYYY-MM-DD"
          },
          "portal": {
            "type": [
              "string",
              "null"
            ],
            "description": "Source permit or portal URL when available"
          },
          "record_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL of this specific permit record when the source exposes one; null when portal is only a search page"
          },
          "is_open": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Normalized across vendor status vocabularies: false when finaled/closed/expired/withdrawn/etc., null when the source exposes no status"
          }
        }
      }
    },
    "trust_level": {
      "type": "string",
      "enum": [
        "live",
        "partial",
        "fallback"
      ],
      "description": "live — every applicable source answered; partial — a source errored or hit its result cap (see errors); fallback — nothing searchable, use next_step. A city needing manual follow-up (next_step) does not by itself lower trust."
    },
    "fetched_at": {
      "type": "string",
      "description": "UTC ISO-8601 timestamp of this query; records are live, not cached"
    },
    "parcel_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "County-namespaced parcel id, e.g. 'king:7222000353' or 'pierce:5985002900', when the query was or resolved to a parcel"
    },
    "jurisdiction": {
      "type": "object",
      "description": "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.",
      "properties": {
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "basis": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "city-limits",
            "geocoder-city",
            "address-text",
            null
          ]
        },
        "county": {
          "type": [
            "string",
            "null"
          ]
        },
        "unincorporated": {
          "type": [
            "boolean",
            "null"
          ]
        }
      }
    },
    "address_resolution": {
      "type": "object",
      "description": "How well the geocoder matched an address query. match_type: point (exact address point), interpolated (number placed along the street; no parcel), street (street only). partial_match is true for anything but point; street_number_snapped when the matched house number differs from the one given.",
      "properties": {
        "matched_address": {
          "type": [
            "string",
            "null"
          ]
        },
        "score": {
          "type": "number"
        },
        "match_type": {
          "type": "string",
          "enum": [
            "point",
            "interpolated",
            "street"
          ]
        },
        "partial_match": {
          "type": "boolean"
        },
        "street_number_snapped": {
          "type": "boolean"
        },
        "parcel_basis": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "address-point",
            "parcel-polygon",
            "nearby-parcel",
            null
          ],
          "description": "How the parcel was found: the locator's address point; the parcel polygon under an interpolated point; or the nearest parcel within 40 ft (check candidate_parcels)"
        },
        "candidate_parcels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Present when several parcels sit within 40 ft of an interpolated point; the first was used"
        }
      }
    },
    "cite_as": {
      "type": "string",
      "description": "One-line attribution string for generated text"
    },
    "searched": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Jurisdictions searched (e.g. ['King County', 'Renton (EnerGov)'])."
    },
    "separate_portal": {
      "type": "object",
      "description": "Present when manual follow-up at a city portal is needed, including when a live city search is incomplete. Includes city, portal URL, note."
    },
    "next_step": {
      "type": "object",
      "description": "Structured twin of separate_portal: the exact follow-up an agent can take. kind=manual_portal_search; reason in no_feed|electrical_only|parcel_resolution_failed|source_incomplete; portal_url (the portal's search page when known); vendor; search_by (inputs that page accepts, empty when login-gated); query/query_type to re-use; covers_electrical; hint.",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "manual_portal_search"
          ]
        },
        "reason": {
          "type": "string",
          "enum": [
            "no_feed",
            "electrical_only",
            "parcel_resolution_failed",
            "source_incomplete"
          ]
        },
        "city": {
          "type": [
            "string",
            "null"
          ]
        },
        "portal_url": {
          "type": [
            "string",
            "null"
          ]
        },
        "vendor": {
          "type": [
            "string",
            "null"
          ]
        },
        "search_by": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "address",
              "permit",
              "parcel"
            ]
          }
        },
        "query": {
          "type": "string"
        },
        "query_type": {
          "type": "string",
          "enum": [
            "address",
            "parcel",
            "permit"
          ]
        },
        "covers_electrical": {
          "type": "boolean"
        },
        "hint": {
          "type": "string"
        }
      }
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Source errors when a search is incomplete; may accompany permits from sources that succeeded."
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "action",
    "message"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 1개