{"externalDocs":{"description":"Human-readable agent access and limitations","url":"https://permitreporter.com/ai-permit-search"},"info":{"contact":{"name":"PermitReporter","url":"https://permitreporter.com/about"},"description":"Privacy-minimized, source-linked Georgia building-permit search, coverage, contractor signals and user-authorized double-opt-in email watches. PermitReporter is an independent reporting service, not a government permitting portal. No matching result means no matching record was collected.","license":{"identifier":"LicenseRef-PermitReporter-Terms","name":"Public access subject to PermitReporter Terms","url":"https://permitreporter.com/terms"},"termsOfService":"https://permitreporter.com/terms","title":"PermitReporter Georgia Permit Agent API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/agent":{"get":{"operationId":"getAgentGateway","responses":{"200":{"description":"Gateway links and coverage limit."}},"summary":"Discover PermitReporter agent interfaces","tags":["Discovery"]}},"/api/agent/counties/{county}":{"get":{"operationId":"getCountyCoverage","parameters":[{"in":"path","name":"county","required":true,"schema":{"maxLength":80,"type":"string"}}],"responses":{"200":{"description":"Route, cadence, dates, sources and limits."},"404":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."}},"summary":"Check one Georgia county's current permit coverage boundary","tags":["Coverage"]}},"/api/agent/leads":{"get":{"description":"Return recent, source-linked collected permits classified by trade and project scope for contractor research. Classifications are editorial signals, not official fields or guaranteed work.","operationId":"getContractorLeads","parameters":[{"in":"query","name":"county","required":false,"schema":{"maxLength":80,"type":"string"}},{"in":"query","name":"trade","required":false,"schema":{"maxLength":100,"type":"string"}},{"in":"query","name":"days","required":false,"schema":{"default":30,"maximum":365,"minimum":1,"type":"integer"}},{"in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Source-linked classified permit signals."},"400":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."}},"summary":"Get recent classified contractor opportunity signals","tags":["Contractors"]}},"/api/agent/records/{record_id}":{"get":{"operationId":"getPermitRecord","parameters":[{"in":"path","name":"record_id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Permit record with source and collection receipt."},"404":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."}},"summary":"Get one source-linked collected permit record","tags":["Permits"]}},"/api/agent/search":{"get":{"description":"Search privacy-minimized collected building-permit records by public text, Georgia county, city, PermitReporter trade classification or record-date range. Returns no raw payloads or party arrays. An empty result means no matching record was collected, not that no permit exists.","operationId":"searchGeorgiaPermits","parameters":[{"in":"query","name":"query","required":false,"schema":{"maxLength":300,"type":"string"}},{"in":"query","name":"county","required":false,"schema":{"maxLength":80,"type":"string"}},{"in":"query","name":"city","required":false,"schema":{"maxLength":100,"type":"string"}},{"in":"query","name":"trade","required":false,"schema":{"maxLength":100,"type":"string"}},{"in":"query","name":"date_from","required":false,"schema":{"format":"date","type":"string"}},{"in":"query","name":"date_to","required":false,"schema":{"format":"date","type":"string"}},{"in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Privacy-minimized collected permit matches."},"400":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."}},"summary":"Search collected Georgia building permits","tags":["Permits"]}},"/api/agent/snapshot":{"get":{"operationId":"getStatewideSnapshot","responses":{"200":{"description":"Current non-personal aggregate snapshot."}},"summary":"Get current statewide counts and freshness boundaries","tags":["Coverage"]}},"/api/agent/watches":{"post":{"description":"Create a pending email watch only after the user reviews the exact email, search query and optional county, explicitly authorizes this request and confirmation email, and accepts https://permitreporter.com/terms and https://permitreporter.com/privacy. This additive action stores the email and search for alerts; it does not file a permit or prove coverage. The address must confirm before alerts begin. Reuse submission_id for safe retries.","operationId":"createPermitWatch","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"county":{"description":"Optional Georgia county restriction.","maxLength":80,"type":"string"},"email":{"description":"The user's reviewed email address. It is stored for confirmation and alerts, never returned.","format":"email","maxLength":254,"type":"string"},"query":{"description":"The exact address, project, subdivision, business term or county-wide phrase the user approved.","maxLength":200,"minLength":1,"type":"string"},"submission_id":{"description":"Generate once for this watch; reuse it when retrying the same exact request.","format":"uuid","type":"string"},"terms_and_privacy_accepted":{"const":true,"description":"True only after the user accepts https://permitreporter.com/terms and https://permitreporter.com/privacy.","type":"boolean"},"user_authorized":{"const":true,"description":"True only after the user reviews the exact email, query and county and explicitly asks PermitReporter to create this watch and send its confirmation email.","type":"boolean"}},"required":["submission_id","email","query","user_authorized","terms_and_privacy_accepted"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Identical idempotent retry; no duplicate watch created."},"201":{"description":"Pending watch created; email confirmation is required."},"400":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."},"409":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."},"429":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"},"ok":{"const":false,"type":"boolean"}},"required":["ok","error"],"type":"object"}}},"description":"Validation or request error."}},"summary":"Create a user-authorized pending email watch","tags":["Watches"],"x-mcp-tool":"create_permit_watch","x-openai-isConsequential":true}}},"servers":[{"description":"Production","url":"https://permitreporter.com"}],"tags":[{"name":"Discovery"},{"name":"Permits"},{"name":"Coverage"},{"name":"Contractors"},{"name":"Watches"}]}
