Gwinnett Index

net.gwindex由 gwindex.net 發布官方發布者v0.1.0更新於 Oct 24, 2026

Gwinnett County, GA zoning and land use. Resolves an address to its governing jurisdiction.

已驗證Streamable HTTP可網頁執行位置與生活知識與記憶

概覽

AI 產生的概覽

一個公開、唯讀的喬治亞州格威內特郡分區與土地使用紀錄索引,可讓助理把地址解析到實際管轄的市或郡,並查詢案件與法規條文。

可以做什麼
把地址或地塊解析到實際管轄的市或未建制郡,並提供法規引用、信賴區間與到最近管轄邊界的距離,同時列出全部 19 個已索引轄區及其法規與邊界來源。
適用情境
在回答喬治亞州格威內特郡某地址的分區、退縮、土地使用或許可問題時使用,尤其是郵寄地址中的城市名與實際管轄轄區不一致的情況。
執行需求
遠端 streamable HTTP 端點;未宣告需要身分驗證、API 金鑰或環境變數。需要能連線至該端點的網路。
安裝前請注意
唯讀且公開,但資料是鏡像與衍生分析,並非權威紀錄系統;部分表格未經核對,OCR 文字為重建內容,Duluth 案件欄位只是指向原始 PDF 的查找線索。依賴前應核對所引來源。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Gwinnett Index,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/net.gwindex%2Fgwinnett-index/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "gwinnett-index": {
      "type": "http",
      "url": "https://www.gwindex.net/mcp"
    }
  }
}

README

Gwinnett Index

A machine-readable index of zoning, land-use, and development records for Gwinnett County, Georgia and its 17 municipalities. Built for AI agents first, humans second.

Why this exists

A "Duluth, GA" mailing address is usually not in the City of Duluth. It's in unincorporated Gwinnett — a different code, a different board, a different permit portal. Nothing on the internet resolves an address to its governing jurisdiction before answering a zoning question, so every AI assistant answering "what's the setback in Duluth GA" today is guessing.

Unincorporated Gwinnett is 67.3% of the county's land area. Getting this wrong is the default, not the edge case.

What's here

DatasetRecordsSource
Jurisdiction boundaries19 (county + unincorporated + 17 cities)US Census TIGER — public domain
County zoning cases11,739 (1970–2026)Gwinnett GC_Planning ArcGIS
Resolved applicants7,369 (from 8,246 raw spellings)derived
Duluth UDC860 sections, 18 tablescity PDF, 426 pp
Duluth meeting documents356 (7,878 pp, 2023–2026)duluthga.net
Duluth land-use cases109 distinct, 64 with vote recordsagenda mining

Setup — one time

The repo already has a starter README, so clone first and copy in — that avoids a push conflict:

bash
git clone https://github.com/willmobhill-arch/gwinnett-index.gittar -xzf gwinnett-index-repo.tar.gz -C gwinnett-index      # overwrites the stub READMEcd gwinnett-indexgit add -A && git commit -m "Gwinnett Index: pipeline, schema, and extracted corpora"git push

Then, with the repo public, load the corpora. Postgres fetches them itself — you don't run anything locally, and no credential is involved:

sql
-- set to your repo's raw base-- https://raw.githubusercontent.com/willmobhill-arch/gwinnett-index/main/data/
SELECT load_udc_sections_from_url(  'https://raw.githubusercontent.com/willmobhill-arch/gwinnett-index/main/data/udc_sections.jsonl');
SELECT * FROM load_duluth_cases_from_url(  'https://raw.githubusercontent.com/willmobhill-arch/gwinnett-index/main/data/duluth_cases.jsonl');
SELECT load_meeting_docs_from_url(  'https://raw.githubusercontent.com/willmobhill-arch/gwinnett-index/main/data/duluth_meeting_docs.jsonl');

Expected: 860 sections, 228 case rows (109 distinct), 356 meeting documents.

Architecture

Ingestion runs inside Postgres via the http extension — it fetches the county's ArcGIS REST services, Census TIGERweb, and this repo's own raw URLs directly. No external worker, no credentials in transit, and the whole 11,739-case county load moves zero bytes through a client.

ingest/  duluth/          UDC PDF -> 860 sections + 18 tables (extract_udc, extract_tables)  duluth_agendas/  crawl -> OCR -> parse case items from agendas/minutes/packetsdb/migrations/     the schema, md5-verified against the live Supabase projectscripts/           export_snapshot.py (the only thing that talks to Postgres) + loadersdata/              extracted corpora, fetched by the SQL loaders abovesite/              Astro static site + full agent surface (.md twins, llms.txt, DCAT)worker/            Cloudflare Worker: REST API + MCP server, five tools, no authdocs/plans/        design doc, build plan, status

Building the site

bash
DATABASE_URL=postgresql://... python3 scripts/export_snapshot.py   # writes data/snapshot/cd site && npm ci && SITE_URL=https://your-domain npm run ci        # build + 15 gates

Without a snapshot the site builds from site/fixtures/ — a small committed sample with identical shapes — and says so on every page. npm run ci fails the build if any route lacks a .md twin, any page presents records before naming its governing jurisdiction, or the bulk export contains geometry.

The API and MCP server

bash
cd worker && npm ci && npm test        # 10 protocol tests, no networkwrangler secret put SUPABASE_ANON_KEY && wrangler deploy

Five tools, public, read-only, no auth: resolve_jurisdiction (always call first), search_cases, get_case, get_code_section, list_jurisdictions. The REST API mirrors the same five operations from the same implementation and publishes /openapi.json.

The adapter pattern

17 jurisdictions cannot be 17 hand-written scrapers. The vendor landscape consolidates hard — Municode, ArcGIS REST, CivicPlus, CivicClerk, BS&A, Accela — so roughly six adapters cover ~90% of them, and adding a city is a config file. Health metric: if a new city needs new code rather than a new config, the adapter layer is leaking.

Data quality, stated honestly

  • Jurisdiction resolver: scored on 1,915 probe points from the county's own zoning layers. At confidence='high' it is correct 1,546/1,546 — 100%. Every error falls inside the low-confidence band. All 22 disagreements were within 141 m of a boundary (annexation lag; Census updates yearly).
  • Duluth UDC: 97.3% raw text coverage; the gap is stripped heading lines, leaving 591 unexplained characters across 426 pages.
  • UDC Table 2-B (dimensional standards) is verified cell-for-cell against the rendered source page. The other 17 tables are extracted but not spot-checked, and Table 2-B's merged PUD/CBD rows remain unreliable. Flags are in the data.
  • Duluth minutes: 57–69% are scanned with no text layer (printed, signed, re-scanned). OCR text is stored separately with text_source='ocr' and is a reconstruction, never a quotation of the record.
  • Duluth's 109 cases are a finding aid, not a dataset. Measured field by field: 67 have a "location" containing no street number, 57 have a "request" that is just the word ORDINANCE, 23 have an applicant field that ran on into a mailing address, and only 13 carry a zoning district. Each row links to the PDF it came from; the document is the record and the fields point at it. Published as stats.duluth_extraction.
  • Applicant resolution: 271 variants merged on tight edit distance; 262 lower-confidence pairs are queued for human review rather than merged on a guess. A split entity is visibly wrong; a wrongly merged one looks authoritative and is invisible.

Legal posture

ContentPostureBasis
Ordinance / plan textMirror in fullGeorgia v. Public.Resource.Org (2020) — edicts of government
Case recordsMirror in fullFacts; Georgia Open Records Act
County parcel/zoning geometryProxy only, never rehostGwinnett GIS licence forbids redistribution
Jurisdiction boundariesHostUS Census TIGER — public domain
IBC/IRC base textNeverICC copyright; index Georgia amendments only

This index is a mirror and derived analysis, not the system of record. Every record carries source_url and last_verified.

Published under CC0.

來源:README.md,提交 14ad249

工具

5

resolve_jurisdiction

Resolve governing jurisdiction — ALWAYS CALL FIRST

ALWAYS CALL THIS FIRST for any Gwinnett County address or parcel. Returns which government actually regulates the land — one of 17 cities, or unincorporated Gwinnett County (67.3% of the county) — with its code citation, a confidence band and the distance to the nearest jurisdiction boundary. A mailing address is NOT the jurisdiction: most "Duluth, GA" addresses are not in the City of Duluth.

輸入參數pinband_maddress

search_cases

Search land-use cases

Search 11,848 zoning and land-use cases (1970–2026) by applicant, use, address, case number, type, year range or zoning district. County records cover UNINCORPORATED Gwinnett only.

輸入參數zonelimitqueryyear_tocase_typeyear_fromjurisdiction

get_case

Get one land-use case

Full record for a case number, including staff recommendation, Planning Commission recommendation, decision, parcels and a deep link to the source record.

輸入參數case_number必填jurisdiction

get_code_section

Get a development code section or table

Ordinance text or a dimensional-standards table by citation, with its adoption and amendment dates. Accepts "402.03", "§ 402.03", "Duluth UDC § 402.03" or "Table 2-B". Tables that have not been verified against the rendered source page say so in the response.

輸入參數citation必填jurisdiction必填

list_jurisdictions

List jurisdictions

All 19 jurisdictions indexed: Gwinnett County as a container, unincorporated Gwinnett as a jurisdiction in its own right, and the 17 municipalities — with their codes and boundary sources.

無需輸入參數。

版本歷史

1
  1. v0.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。