Skip to main content
Glama

Permit requirements lookup

check_permit_requirements
Read-onlyIdempotent

Check whether a residential construction project in King/Pierce/Snohomish counties requires a permit. Each result carries verdict — required / exempt / depends / unknown — computed from the jurisdiction's own thresholds, the parcel's overlays (when address is given) and the facts you pass; when it is depends, verdict.questions names the facts to ask the homeowner and pass back. requiresPermit is the rule's default posture, not the answer. Also returns timeline, fees, inspections, submittals and the official source URL. Use for "Do I need a permit to build a deck in Seattle?". Pass address to also get the per-item submittal set (submittals_v2).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
factsNoWhat the homeowner has said about the scope, keyed by fact. Each result carries `verdict.questions` naming the facts still open, with their keys; pass the answers back here. Parcel facts (inCriticalArea, inFloodZone, inShoreline, historicOrLandmark) are read from the parcel when `address` is given; pass them only without an address.
limitNoMax matching rules to return (default 25). Narrow with projectType/location before raising it.
addressNoFull street address — when provided, the response includes `submittals_v2` from the unified resolver (per-item triggers, source citations, filler actor). Overrides `location` for jurisdiction routing.
locationNoCity or jurisdiction slug, e.g. "Seattle", "Bellevue", "Tacoma", "king-county-unincorporated"
projectTypeNoProject type — canonical: kitchen, bathroom, basement, deck, fence, siding, windows, flooring, adu, roofing, hvac, electrical, plumbing, addition
guardRunLengthFtNoTotal guard/railing run in the scope of work, feet. A guard is separately permittable from the surface it stands on; a deck exemption does not carry it.
deckOverStoryBelowNoTrue if any part of the deck is over a basement or a story below. A deck under 30 in is still NOT exempt in Kirkland if it sits over a story.
deckOnAccessibleRouteNoTrue if the deck is part of an accessible route to a building entrance — an independent permit trigger, separate from height.
deckHeightAboveGradeInNoDeck walking surface above grade, inches — measured to the grade below at any point within 36 in of the outer edge.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nextNo
totalNo
parcelNo
messageNo
resultsNo
routingNo
coverageNoPresent on an unfiltered call: the jurisdictions and project types the catalog covers.
overlaysNo
returnedNo
importantNo
disclaimerNo
trustLevelNo"authoritative" when every returned rule is the city's own rule; "mixed" when some are the Washington state floor or not verified for the city (each rule carries its own `source` and `verdict`); or a LEGACY_LLM_SEED warning. Relay the warning or the mixed note if present.
attributionNo
recommendationNo
overlayDisclaimerNo
authoritativeRulesCountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • changedInput schema / properties / facts / description
      Previous value: -"What the homeowner has said about the scope, keyed by fact. Each result carries `verdict.questions` naming the facts still open; pass them back here. Keys: deckHeightAboveGradeIn, deckAreaSqft, deckAttached, deckOverStoryBelow, deckOnAccessibleRoute, deckServesRequiredExit, roofDeck, deckCovered, deckingBoardsOnly, fenceHeightFt, masonryWallHeightFt, fenceInFrontYard, cosmeticOnly, plumbingMovedOrAdded, newCircuits, gasOrMechanicalWork, structuralOrWallChange, tubOrShowerReplaced, surfacesOpened, windowNewOrEnlargedOpening, windowStructuralChange, windowEgressAffected, windowEnergyDowngrade, sidingStructuralChange, sidingInsulationOrWrbChange, sidingStuccoOrVeneer, roofSheathingReplaced, roofMaterialTypeChange, roofLayersAfter, roofUnitWeightPsf, roofMaterialWeightIncreasePsf, roofFramingChange, roofSkylightsOrMechanical, buildingUnreinforcedMasonry, subfloorOrJoistChange, radiantHeat, plumbingLeakRepairOnly, plumbingLikeForLikeSameLocation, plumbingFixtureInstalledOrReplaced, plumbingFixtureAddedOrMoved, waterHeaterReplaced, plumbingNewOrRelocatedPiping, plumbingConcealedPipeReplaced, electricalLikeInKindMinor, newCircuitsOrPanel, hardwiredFixtureOrAppliance, portableAppliance, hvacMinorPartReplacement, treeDbhIn, treeAlderOrCottonwood, treesRemovedThisYear. Parcel facts (inCriticalArea, inFloodZone, inShoreline, historicOrLandmark) are read from the parcel when `address` is given; pass them only without an address."New value: +"What the homeowner has said about the scope, keyed by fact. Each result carries `verdict.questions` naming the facts still open, with their keys; pass the answers back here. Parcel facts (inCriticalArea, inFloodZone, inShoreline, historicOrLandmark) are read from the parcel when `address` is given; pass them only without an address."
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / additionalProperties
      Removed value: -true
    • removedOutput schema / properties / attribution / additionalProperties
      Removed value: -true
  2. Changed1 schema field changed
    • changedOutput schema / properties / trustLevel / description
      Previous value: -"\"authoritative\" or a LEGACY_LLM_SEED warning. Relay the warning if present."New value: +"\"authoritative\" when every returned rule is the city's own rule; \"mixed\" when some are the Washington state floor or not verified for the city (each rule carries its own `source` and `verdict`); or a LEGACY_LLM_SEED warning. Relay the warning or the mixed note if present."
  3. Changed1 schema field changed
    • addedOutput schema / properties / routing
      Added value: +{}
  4. Changed1 schema field changed
    • addedInput schema / properties / facts
      Added value: +{
      +  "additionalProperties": {
      +    "type": [
      +      "number",
      +      "boolean"
      +    ]
      +  },
      +  "description": "What the homeowner has said about the scope, keyed by fact. Each result carries `verdict.questions` naming the facts still open; pass them back here. Keys: deckHeightAboveGradeIn, deckAreaSqft, deckAttached, deckOverStoryBelow, deckOnAccessibleRoute, deckServesRequiredExit, roofDeck, deckCovered, deckingBoardsOnly, fenceHeightFt, masonryWallHeightFt, fenceInFrontYard, cosmeticOnly, plumbingMovedOrAdded, newCircuits, gasOrMechanicalWork, structuralOrWallChange, tubOrShowerReplaced, surfacesOpened, windowNewOrEnlargedOpening, windowStructuralChange, windowEgressAffected, windowEnergyDowngrade, sidingStructuralChange, sidingInsulationOrWrbChange, sidingStuccoOrVeneer, roofSheathingReplaced, roofMaterialTypeChange, roofLayersAfter, roofUnitWeightPsf, roofMaterialWeightIncreasePsf, roofFramingChange, roofSkylightsOrMechanical, buildingUnreinforcedMasonry, subfloorOrJoistChange, radiantHeat, plumbingLeakRepairOnly, plumbingLikeForLikeSameLocation, plumbingFixtureInstalledOrReplaced, plumbingFixtureAddedOrMoved, waterHeaterReplaced, plumbingNewOrRelocatedPiping, plumbingConcealedPipeReplaced, electricalLikeInKindMinor, newCircuitsOrPanel, hardwiredFixtureOrAppliance, portableAppliance, hvacMinorPartReplacement, treeDbhIn, treeAlderOrCottonwood, treesRemovedThisYear. Parcel facts (inCriticalArea, inFloodZone, inShoreline, historicOrLandmark) are read from the parcel when `address` is given; pass them only without an address.",
      +  "type": "object"
      +}
  5. Changed9 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Max matching rules to return (default 25). Narrow with projectType/location before raising it.",
      +  "maximum": 200,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • removedOutput schema / properties / attribution / properties / contractorLicense
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / attribution / properties / note
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / attribution / properties / organization
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / attribution / properties / retrievedFrom
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / attribution / properties / url
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / attribution / required
      Previous value: -[
      -  "organization",
      -  "contractorLicense",
      -  "url",
      -  "sourceUrl",
      -  "citeAs",
      -  "retrievedFrom",
      -  "note"
      -]New value: +[
      +  "sourceUrl",
      +  "citeAs"
      +]
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "description": "Present on an unfiltered call: the jurisdictions and project types the catalog covers."
      +}
    • addedOutput schema / properties / returned
      Added value: +{
      +  "type": "number"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "description": "Either a rule set, or a documented coverage gap carrying `important` + `next`. A gap is never evidence that no permit is required.",
      +  "properties": {
      +    "attribution": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "citeAs": {
      +          "description": "Ready-made citation line. Use verbatim.",
      +          "type": "string"
      +        },
      +        "contractorLicense": {
      +          "type": "string"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "organization": {
      +          "type": "string"
      +        },
      +        "primarySource": {
      +          "description": "Present when Kolmo verified but does not author the fact — cite both.",
      +          "type": "string"
      +        },
      +        "retrievedFrom": {
      +          "type": "string"
      +        },
      +        "sourceUrl": {
      +          "description": "The specific page these facts render on. Link this, not the site root.",
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "organization",
      +        "contractorLicense",
      +        "url",
      +        "sourceUrl",
      +        "citeAs",
      +        "retrievedFrom",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "authoritativeRulesCount": {
      +      "type": "number"
      +    },
      +    "disclaimer": {
      +      "type": "string"
      +    },
      +    "important": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "next": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "overlayDisclaimer": {
      +      "type": "string"
      +    },
      +    "overlays": {},
      +    "parcel": {},
      +    "recommendation": {
      +      "type": "string"
      +    },
      +    "results": {},
      +    "total": {
      +      "type": "number"
      +    },
      +    "trustLevel": {
      +      "description": "\"authoritative\" or a LEGACY_LLM_SEED warning. Relay the warning if present.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  7. Changed4 schema fields changed
    • addedInput schema / properties / deckHeightAboveGradeIn
      Added value: +{
      +  "description": "Deck walking surface above grade, inches — measured to the grade below at any point within 36 in of the outer edge.",
      +  "type": "number"
      +}
    • addedInput schema / properties / deckOnAccessibleRoute
      Added value: +{
      +  "description": "True if the deck is part of an accessible route to a building entrance — an independent permit trigger, separate from height.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / deckOverStoryBelow
      Added value: +{
      +  "description": "True if any part of the deck is over a basement or a story below. A deck under 30 in is still NOT exempt in Kirkland if it sits over a story.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / guardRunLengthFt
      Added value: +{
      +  "description": "Total guard/railing run in the scope of work, feet. A guard is separately permittable from the surface it stands on; a deck exemption does not carry it.",
      +  "type": "number"
      +}
  8. Changed1 schema field changed
    • addedInput schema / properties / address
      Added value: +{
      +  "description": "Full street address — when provided, the response includes `submittals_v2` from the unified resolver (per-item triggers, source citations, filler actor). Overrides `location` for jurisdiction routing.",
      +  "type": "string"
      +}
  9. Changed2 schema fields changed
    • changedInput schema / properties / location / description
      Previous value: -"City or area, e.g. \"Seattle\", \"Bellevue\", \"Kirkland\""New value: +"City or jurisdiction slug, e.g. \"Seattle\", \"Bellevue\", \"Tacoma\", \"king-county-unincorporated\""
    • changedInput schema / properties / projectType / description
      Previous value: -"Type of project, e.g. \"deck\", \"kitchen\", \"addition\", \"fence\", \"ADU\""New value: +"Project type — canonical: kitchen, bathroom, basement, deck, fence, siding, windows, flooring, adu, roofing, hvac, electrical, plumbing, addition"
  10. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.