Georgia Commons for assistants
Everything on this site is built for language models, agents, and scripts as much as for people: every page has a Markdown twin, every collection has a map and a search, the JSON API needs no key, and one MCP server covers the whole site. This page is the one screen an operator needs to connect a client or compose an address.
Connect the MCP server
One server, https://mcp.georgiacommons.org/mcp, serves the Code and the two constitutions, bills, opinions, and House and Senate meetings. Streamable HTTP, no key, no account. It offers named Markdown tools for Claude (code_lookup_section, bills_search, opinions_lookup, meetings_for_bill and the like) and the search and fetch pair OpenAI's connectors require.
Call describe_site first: it says what is loaded, which tool to call next, and the id grammar. Ids carry their collection: code:44-7-34, ga-const:art-i-sec-i-para-i, us-const:amend-xiv, bill:2025-2026/hb136, opinion:S26A0060, meeting:2026-02-05/house-rules. Every document tool returns the same Markdown twin the site serves, and verify_quote checks a quotation against the stored text.
- Claude (web, desktop, mobile): Settings, Connectors, Add custom connector; name it Georgia Commons and paste the URL below. Free plans include one custom connector.
- Claude Code: claude mcp add --transport http georgiacommons https://mcp.georgiacommons.org/mcp
- ChatGPT: Settings, Connectors, Create; paste the URL below. Deep research and the Responses API use the same server through its search and fetch tools.
- Any MCP client: point it at the URL below with the streamable HTTP transport.
- MCP endpoint: https://mcp.georgiacommons.org/mcp
Responses API
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5",
tools=[{"type": "mcp", "server_label": "georgiacommons",
"server_url": "https://mcp.georgiacommons.org/mcp", "require_approval": "never"}],
input="What does Georgia law require a landlord to do with a security deposit? Quote it and cite it.",
)
print(response.output_text)The URL grammar
Every collection uses the same shape, so an address learned once works everywhere: /{collection}/{id} is a page, /{collection}/{id}.md its Markdown twin (frontmatter, then the source text, then anything Georgia Commons wrote under a heading that says so), /{collection}/{id}/text the verbatim text alone (bills and opinions also have a readable page for people at /{collection}/{id}/full-text; a meeting's page carries its whole transcript), /{collection}/index.md the collection's map, /{collection}/search?q= a search (add &in=headings to search only the headings and titles), /{collection}/about.md the provenance. Ids are the ones people already know: a citation, a session and bill number, a docket, a meeting's date and body. Upstream numeric ids (and a meeting's Vimeo id) redirect.
Content negotiation works too: send Accept: text/markdown to any page address and the twin comes back. Twins and /text routes are served as text/plain; charset=utf-8, a type every fetch tool reads. The site map for machines is https://georgiacommons.org/index.md; the llms.txt is https://georgiacommons.org/llms.txt.
Search matches the words of the document. Ask in the words the document would use, not the words of the question.
- Georgia General Assembly bills: page https://georgiacommons.org/bills/2025-2026/hb136, twin https://georgiacommons.org/bills/2025-2026/hb136.md, text https://georgiacommons.org/bills/2025-2026/hb136/text; map https://georgiacommons.org/bills/index.md; search https://georgiacommons.org/bills/search?q=your+words (twin: https://georgiacommons.org/bills/search.md?q=); about https://georgiacommons.org/bills/about.md; API https://api.georgiacommons.org/api/bills.
- Georgia General Assembly bills, a level of the hierarchy: https://georgiacommons.org/bills/2025-2026 and https://georgiacommons.org/bills/2025-2026.md.
- Georgia House and Senate meetings: page https://georgiacommons.org/meetings/2026-02-05/house-rules, twin https://georgiacommons.org/meetings/2026-02-05/house-rules.md, text https://georgiacommons.org/meetings/2026-02-05/house-rules/text; map https://georgiacommons.org/meetings/index.md; search https://georgiacommons.org/meetings/search?q=your+words (twin: https://georgiacommons.org/meetings/search.md?q=); about https://georgiacommons.org/meetings/about.md; API https://api.georgiacommons.org/api/meetings.
- Georgia House and Senate meetings, a level of the hierarchy: https://georgiacommons.org/meetings/2026 and https://georgiacommons.org/meetings/2026.md.
- Georgia House and Senate meetings, a level of the hierarchy: https://georgiacommons.org/meetings/2026-02-05 and https://georgiacommons.org/meetings/2026-02-05.md.
- Georgia House and Senate meetings, a level of the hierarchy: https://georgiacommons.org/meetings/house-rules and https://georgiacommons.org/meetings/house-rules.md.
- Georgia Supreme Court opinions: page https://georgiacommons.org/opinions/S23A0421, twin https://georgiacommons.org/opinions/S23A0421.md, text https://georgiacommons.org/opinions/S23A0421/text; map https://georgiacommons.org/opinions/index.md; search https://georgiacommons.org/opinions/search?q=your+words (twin: https://georgiacommons.org/opinions/search.md?q=); about https://georgiacommons.org/opinions/about.md; API https://api.georgiacommons.org/api/opinions.
- Georgia Supreme Court opinions, a level of the hierarchy: https://georgiacommons.org/opinions/2023 and https://georgiacommons.org/opinions/2023.md.
- Official Code of Georgia Annotated: page https://georgiacommons.org/code/44-7-34, twin https://georgiacommons.org/code/44-7-34.md, text https://georgiacommons.org/code/44-7-34/text; map https://georgiacommons.org/code/index.md; search https://georgiacommons.org/code/search?q=your+words (twin: https://georgiacommons.org/code/search.md?q=); about https://georgiacommons.org/code/about.md; API https://api.georgiacommons.org/api/code.
- Official Code of Georgia Annotated, a level of the hierarchy: https://georgiacommons.org/code/44 and https://georgiacommons.org/code/44.md.
- Official Code of Georgia Annotated, a level of the hierarchy: https://georgiacommons.org/code/44-7 and https://georgiacommons.org/code/44-7.md.
- Official Code of Georgia Annotated, the constitutions: maps https://georgiacommons.org/constitution/ga/index.md and https://georgiacommons.org/constitution/us/index.md; a provision https://georgiacommons.org/constitution/ga/art-i-sec-i-para-i and https://georgiacommons.org/constitution/ga/art-i-sec-i-para-i.md.
Check a quote
POST https://api.georgiacommons.org/api/{collection}/verify with {"id": ..., "quote": ...} reports whether the quote appears verbatim in the stored text, after the same normalization the ingestion quote filter uses. The MCP tool verify_quote does the same. Deterministic; no model involved.
Written for people
This page is the short form, for an operator wiring a client up. Two longer pages say the same things in plain language: https://georgiacommons.org/mcp walks through adding the connector in Claude, ChatGPT, and Claude Code, and https://georgiacommons.org/api documents the JSON API, with every route at https://georgiacommons.org/api/endpoints. Each has a Markdown twin at its address plus .md.
What this is and is not
Georgia Commons, an independent project of Georgia Civic Data. Not the State of Georgia. Not legal advice.
The Code and the constitutions are source text only: no summaries, no interpretation, no model anywhere in that path. Bills and opinions carry summaries written by Georgia Commons under a heading that says so, after the verbatim text, and every quote in them was checked against the text. The official documents are linked from every page.