Georgia Commons
Server Details
Georgia's Code, bills, Supreme Court opinions, and 2026 House and Senate meetings. Independent.
- Status
- Healthy
- Uptime
- 99.9% over 55 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: describe_site handles orientation and id grammar, get_coverage reports holdings and gaps, search discovers documents, fetch retrieves known documents or parts, and verify_quote checks quotations. The boundary between describe_site and get_coverage is especially clear because one explains how the system works while the other reports what is currently held.
Most names follow a snake_case verb_noun pattern (describe_site, get_coverage, verify_quote), but search and fetch are bare verbs. The convention is still readable and predictable overall, with only minor deviations.
Five tools is well-scoped for a legal research server: orientation, search, retrieval, coverage, and quotation verification. Each tool earns its place, and broader functionality is handled through parameters rather than by fragmenting into many narrow tools.
The surface covers the full read-only research lifecycle: understanding the system, searching across all collections, fetching documents and versions, checking coverage and known gaps, and verifying quotations. There are no obvious missing operations for the stated purpose.
Available Tools
5 toolsdescribe_siteAbout Georgia CommonsARead-onlyIdempotentInspect
Orientation: what Georgia Commons is, the id grammar, the filter values, and the bodies. Call it first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds that the payload is explanatory reference content rather than data records, which is useful, but with no output schema it never indicates the shape or volume of what comes back. That gap keeps it at an adequate-but-thin 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with a label ('Orientation:') followed by the actionable directive 'Call it first' — nothing is padded. The only weakness is that the enumerated topics are compressed into terse nouns, notably the unexplained 'bodies'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only, annotation-rich documentation tool with no output schema, the description covers the essentials: what it contains and that it should precede other calls. Only the vagueness of 'the bodies' and the absence of any hint about return size prevent a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly implies a no-argument call by instructing the agent to just call it first.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description frames the tool as orientation material covering four concrete topics (what Georgia Commons is, id grammar, filter values, bodies), which is clearly distinct from the action-oriented siblings fetch/search/verify_quote. The noun 'the bodies' is undefined, leaving one listed component opaque, so it stops short of a fully precise purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call it first' gives explicit, unambiguous ordering guidance that no sibling could provide, effectively telling the agent this is a prerequisite read. It does not name when to skip it or how it relates to each sibling beyond ordering, so it lacks true when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchRead one documentARead-onlyIdempotentInspect
Read one document by id or any written form (bill:2025-2026/hb136, SB 3, opinion:S26A0060, 317 Ga. 528, code:16-11-127, O.C.G.A. § 16-11-127, ga-const:art-i-sec-i-para-iii, meeting:2026-02-05/house-rules, a page URL) as Markdown, at most max_chars (default 60,000) from start, with a pointer to the rest. metadata lists its versions, links grouped by relation, and parts (part reads one: a bill's votes or history, a meeting's transcript). A version id (...@key) reads that version. A hierarchy node (code:t16, code:t16/c11, ga-const:art-i) returns its children. A bill number used in more than one session returns the choices. around takes a passage citation from search and returns the text around it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A document id or any written form of one (a bill number, docket, citation, page URL), a version id, or a hierarchy node. | |
| part | No | document (default), or one of the parts metadata.parts lists. | document |
| start | No | Character offset to read from (the pointer at the end of a window gives it). | |
| around | No | A passage citation from search (version_id#start-end): the text around it. | |
| include | No | Parts to add to metadata (e.g. votes, history). | |
| max_chars | No | Characters to return, 1,000 to 200,000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavior beyond them: default and maximum window sizes, truncation with a continuation pointer, ambiguity resolution (a bill number in multiple sessions returns choices), version-id reading via `...@key`, and hierarchy expansion. These are the exact runtime traits an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with the primary operation before the mode variants, and no filler sentences. It is close to the upper limit of density — clauses like "A version id (`...@key`) reads that version" are terse to the point of requiring a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so: Markdown body, `max_chars` window, continuation pointer, and the metadata payload (versions, links by relation, parts). For a six-parameter read tool with four distinct modes, nothing an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds real meaning: concrete `part` values (a bill's votes or history, a meeting's transcript), the `start`/pointer relationship for paging, and the `around` argument's provenance from search citations. Only `include` is left mostly to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Read one document') and immediately enumerates the id forms it accepts, which makes it trivially distinguishable from search, describe_site, and verify_quote. An agent knows exactly what this tool returns (Markdown) and on what object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage contexts are spelled out well: use `around` with a passage citation from search, use `metadata` to enumerate versions/links/parts, use `part` to pull a bill's votes or a meeting's transcript, and hierarchy nodes return children. What's missing is an explicit statement of when to prefer this over search or verify_quote, or an exclusion for oversized documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coverageWhat Georgia Commons holdsARead-onlyIdempotentInspect
What Georgia Commons holds, computed now: each source's documents by type and issuing body, date ranges, how much is searchable by meaning, the last update, the qualifications, and what is not held yet (local governments, school boards, the Court of Appeals). Filters narrow it.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Optional: narrow to document types, bodies, kinds of body, levels. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entries | Yes | |
| not_held | No | |
| not_held_yet | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine context beyond them: the numbers are 'computed now' (freshly calculated, not cached), and the result deliberately includes qualifications and explicitly absent coverage (local governments, school boards, Court of Appeals), which tells the agent to expect caveats rather than a bare count.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and its live nature, then the narrowing note. The middle enumeration is long but every clause corresponds to a distinct part of the report, so it earns its place; it could be tightened slightly by grouping the related date/coverage items.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema handling return format and annotations handling safety, the description covers what an agent needs to decide and call correctly: what is measured, that it is current, that gaps and qualifications are included, and that filters can narrow scope. Nothing material is missing for a single-optional-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single filters object is thoroughly documented with vocabularies, defaults, and enum meanings (place_scope, include_overlapping, date_field). The description only says 'Filters narrow it,' adding no syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete artifact — a live coverage report of each source's documents by type, issuing body, date ranges, semantic-searchability, last update, and known gaps. It is clearly not fetch/search, but it never explicitly names or contrasts with the siblings (describe_site, search, fetch, verify_quote), so differentiation is by inference rather than statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Filters narrow it' and the mention of what is not held suggest a pre-search orientation step, but there is no explicit statement of when to call this versus describe_site or search. The strongest routing hint (describe_site lists body ids) lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch Georgia's public documentsARead-onlyIdempotentInspect
Search every collection at once: Georgia General Assembly bills (every version) and amendments, Supreme Court of Georgia opinions, the Official Code of Georgia Annotated and the Georgia and U.S. constitutions, and machine transcripts of House and Senate meetings. Plain-language questions work: results are ranked by meaning as well as by words. Returns documents with their best passages (each with a citation version_id#start-end and a deep link), facet counts to narrow by, the interpretation used (identifiers found, places, bodies), a confidence band, and coverage notes that say when the records asked about are not held. Empty query with filters browses. mode: all lists every match found, sorted by date, a page at a time with cursor and a total of what was found.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | best: ranked and cut. all: every match found, by date, paged, with a total. | best |
| sort | No | Result order. | relevance |
| limit | No | Results per page: 1 to 50 (default 10 documents; 25 in mode all). | |
| query | No | A question or keywords, in plain language. Empty with filters: browse. | |
| cursor | No | The next_cursor of a previous call, for the next page. | |
| parent | No | Only documents inside this hierarchy node (code:t16, code:t16/c11, ga-const:art-i). | |
| filters | No | Optional hard filters (see describe_site for values). | |
| versions | No | current (default) or all versions (how a bill changed). | current |
| linked_to | No | Only documents linked to this document id (a bill's meetings, a section's amending bills). | |
| relations | No | With linked_to: relation types (discusses, amends, amendment_to, cites, ...). |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| total | No | |
| facets | No | |
| results | Yes | |
| confidence | No | |
| total_kind | No | |
| next_cursor | No | |
| coverage_notes | No | |
| interpretation | No | |
| documents_found | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the description rightly spends its budget on richer traits: semantic-plus-lexical ranking, passage-level results with `version_id#start-end` citations and deep links, facet counts, interpretation echo, a confidence band, and coverage notes that disclose when records are not held. That coverage-note disclosure is genuinely behavior-level information an agent cannot infer. It does not cover rate limits or performance characteristics, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the collection scope, then usage, then return shape, then the mode distinction — a sensible order with no wasted preamble. It is dense to the point of being a single run-on chain, and the `mode: all` sentence partly duplicates the schema's `mode` field description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% param coverage, the description only needs to frame scope and behavior, which it does, including the pointer to describe_site for filter vocabularies. The one gap is relationship parameters: `linked_to` and `relations` get no mention in prose, leaving an agent to rely entirely on schema text for the graph-traversal capability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the enum semantics of `mode`, `sort`, `versions`, and the full Filters object. The description adds only the browse-on-empty-query rule and a restatement of `mode: all` paging that the schema's own field description already provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and a precisely enumerated resource set: bills and amendments, Supreme Court opinions, code and constitutions, and House/Senate transcripts. An agent can tell instantly that this is the broad cross-collection retrieval tool, distinct from the single-document siblings fetch and verify_quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts: plain-language questions are supported, and an empty `query` with filters browses. It also carves out `mode: all` as the exhaustive-listing path. It stops short of stating when NOT to use it or pointing to fetch/verify_quote for known-document retrieval, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_quoteCheck a quotationARead-onlyIdempotentInspect
Check whether a quotation appears word for word in a stored document (or one version of it), after normalizing whitespace, typographic quotes and dashes, [T]he-style alterations, amendment marks, and case. Use it before relying on a quotation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The document id (or any written form of one). | |
| quote | Yes | The quotation to check, at least 12 characters. | |
| version | No | A version id to check; default the current version, then earlier ones. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| in | No | |
| chars | Yes | |
| found | Yes | |
| md_url | Yes | |
| current | No | |
| version_id | No | |
| occurrences | Yes | |
| canonical_url | Yes | |
| version_label | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description earns credit for disclosing non-obvious matching behavior beyond the annotations: normalization of whitespace, typographic quotes and dashes, [T]he-style alterations, amendment marks, and case, plus the current-version-then-earlier-versions fallback. It does not describe the result shape, but an output schema exists to carry that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core check and its normalization caveats, then a short usage clause. Slightly clunky with the bracketed '[T]he-style alterations' fragment and the trailing '(or one version of it)', but nothing is genuinely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only verification tool with rich annotations, a fully documented schema, and an output schema, the description covers what an agent needs: what is compared, how normalization affects matching, and the version scope. It could say more about what a failed match implies (e.g. that amendment marks make near-misses expected), but no essential calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters are documented in the schema, including the version fallback and the 12-character quote minimum. The description adds no syntax or format detail for id, quote or version beyond what the schema already states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Check whether a quotation appears word for word in a stored document (or one version of it)'. It also scopes the comparison semantics, so an agent can tell this apart from the sibling retrieval tools (search, fetch, describe_site, get_coverage) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it before relying on a quotation' gives a clear usage context, and the verification framing makes the intent unambiguous. It stops short of naming exclusions or pointing at an alternative path (e.g. what to do when the quote is not found, or when to use search instead), so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
27 tool updates
- Removed
bills_get_text - Removed
bills_list - Removed
bills_lookup - Removed
bills_search - Removed
code_browse - Removed
code_describe_structure - Removed
code_find_act - Removed
code_find_chapter - Removed
code_get_chapter - Removed
code_lookup_section - Removed
code_lookup_sections - Removed
code_search - Removed
constitution_browse - Removed
constitution_lookup - Changed
fetch8 fields changed- added
Input schema / properties / aroundAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A passage citation from search (version_id#start-end): the text around it.", + "title": "Around" +} - removed
Input schema / properties / fullRemoved value: -{ - "default": false, - "description": "Include the optional material the tool describes (for example votes and history, or the notes). Longer.", - "title": "Full", - "type": "boolean" -} - changed
Input schema / properties / id / descriptionPrevious value: -"A document id from search: code:44-7-34, ga-const:art-i-sec-i-para-i, us-const:amend-xiv, bill:2025-2026/hb136, opinion:S26A0060, or meeting:2026-02-05/house-rules."New value: +"A document id or any written form of one (a bill number, docket, citation, page URL), a version id, or a hierarchy node." - added
Input schema / properties / id / maxLengthAdded value: +300 - added
Input schema / properties / includeAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Parts to add to metadata (e.g. votes, history).", + "title": "Include" +} - changed
Input schema / properties / max_chars / descriptionPrevious value: -"Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part."New value: +"Characters to return, 1,000 to 200,000." - added
Input schema / properties / partAdded value: +{ + "default": "document", + "description": "document (default), or one of the parts metadata.parts lists.", + "title": "Part", + "type": "string" +} - changed
Input schema / properties / start / descriptionPrevious value: -"Where to start, as returned by the previous call's continuation pointer. 0 is the beginning."New value: +"Character offset to read from (the pointer at the end of a window gives it)."
- Changed
get_coverage3 fields changed- added
Input schema / $defsAdded value: +{ + "Filters": { + "additionalProperties": false, + "description": "Hard filters. Every field is optional; values come from the vocabularies.", + "properties": { + "action": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stage of an action inside a meeting: reading, motion, vote, adopted, failed, public_comment, ...", + "title": "Action" + }, + "body": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Issuing bodies by id, e.g. ga-supreme-court, ga-senate, ga-house-rules (describe_site lists them).", + "title": "Body" + }, + "body_type": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Kinds of body: legislative_chamber, legislative_committee, court, board_of_education, governing_body, ...", + "title": "Body Type" + }, + "branch": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Branches: legislative, executive, judicial.", + "title": "Branch" + }, + "date_field": { + "anyOf": [ + { + "enum": [ + "date_primary", + "date_filed", + "date_met", + "date_adopted", + "date_effective" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Which date the range applies to; defaults to each type's own (filing date for opinions, meeting date for meetings).", + "title": "Date Field" + }, + "date_from": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Earliest date: YYYY, YYYY-MM, or YYYY-MM-DD.", + "title": "Date From" + }, + "date_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Latest date: YYYY, YYYY-MM, or YYYY-MM-DD.", + "title": "Date To" + }, + "doc_type": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Document types, e.g. bill, opinion, code_section, constitution_provision, meeting_transcript, amendment.", + "title": "Doc Type" + }, + "include_overlapping": { + "default": true, + "description": "With place: also bodies whose area overlaps it (Fulton and DeKalb for Atlanta).", + "title": "Include Overlapping", + "type": "boolean" + }, + "level": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Levels of government: federal, state, county, municipal, consolidated, school_district, regional.", + "title": "Level" + }, + "place": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A Georgia place in words or as an id (Atlanta, Cobb County, city:savannah). Matches the body's jurisdiction.", + "title": "Place" + }, + "place_scope": { + "default": "either", + "description": "With place: documents issued for that place (jurisdiction), documents that mention it (mentions), or either (default).", + "enum": [ + "either", + "jurisdiction", + "mentions" + ], + "title": "Place Scope", + "type": "string" + }, + "session": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Legislative session slug, e.g. 2025-2026 or 2026-special.", + "title": "Session" + }, + "status": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Status classes: pending, passed_one_chamber, passed_both, enacted, vetoed, failed, in_force, repealed, decided, held.", + "title": "Status" + } + }, + "title": "Filters", + "type": "object" + } +} - added
Input schema / properties / filtersAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Filters" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional: narrow to document types, bodies, kinds of body, levels." +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "entries": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Entries", + "type": "array" + }, + "not_held": { + "items": { + "type": "string" + }, + "title": "Not Held", + "type": "array" + }, + "not_held_yet": { + "items": { + "type": "string" + }, + "title": "Not Held Yet", + "type": "array" + } + }, + "required": [ + "entries" + ], + "title": "CoverageOutput", + "type": "object" +}
- Removed
meetings_for_bill - Removed
meetings_get_transcript - Removed
meetings_list - Removed
meetings_lookup - Removed
meetings_search - Removed
opinions_get_text - Removed
opinions_list - Removed
opinions_lookup - Removed
opinions_search - Changed
search29 fields changed- added
Input schema / $defsAdded value: +{ + "Filters": { + "additionalProperties": false, + "description": "Hard filters. Every field is optional; values come from the vocabularies.", + "properties": { + "action": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stage of an action inside a meeting: reading, motion, vote, adopted, failed, public_comment, ...", + "title": "Action" + }, + "body": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Issuing bodies by id, e.g. ga-supreme-court, ga-senate, ga-house-rules (describe_site lists them).", + "title": "Body" + }, + "body_type": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Kinds of body: legislative_chamber, legislative_committee, court, board_of_education, governing_body, ...", + "title": "Body Type" + }, + "branch": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Branches: legislative, executive, judicial.", + "title": "Branch" + }, + "date_field": { + "anyOf": [ + { + "enum": [ + "date_primary", + "date_filed", + "date_met", + "date_adopted", + "date_effective" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Which date the range applies to; defaults to each type's own (filing date for opinions, meeting date for meetings).", + "title": "Date Field" + }, + "date_from": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Earliest date: YYYY, YYYY-MM, or YYYY-MM-DD.", + "title": "Date From" + }, + "date_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Latest date: YYYY, YYYY-MM, or YYYY-MM-DD.", + "title": "Date To" + }, + "doc_type": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Document types, e.g. bill, opinion, code_section, constitution_provision, meeting_transcript, amendment.", + "title": "Doc Type" + }, + "include_overlapping": { + "default": true, + "description": "With place: also bodies whose area overlaps it (Fulton and DeKalb for Atlanta).", + "title": "Include Overlapping", + "type": "boolean" + }, + "level": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Levels of government: federal, state, county, municipal, consolidated, school_district, regional.", + "title": "Level" + }, + "place": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A Georgia place in words or as an id (Atlanta, Cobb County, city:savannah). Matches the body's jurisdiction.", + "title": "Place" + }, + "place_scope": { + "default": "either", + "description": "With place: documents issued for that place (jurisdiction), documents that mention it (mentions), or either (default).", + "enum": [ + "either", + "jurisdiction", + "mentions" + ], + "title": "Place Scope", + "type": "string" + }, + "session": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Legislative session slug, e.g. 2025-2026 or 2026-special.", + "title": "Session" + }, + "status": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Status classes: pending, passed_one_chamber, passed_both, enacted, vetoed, failed, in_force, repealed, decided, held.", + "title": "Status" + } + }, + "title": "Filters", + "type": "object" + } +} - removed
Input schema / properties / collectionRemoved value: -{ - "anyOf": [ - { - "enum": [ - "code", - "bills", - "opinions", - "meetings" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Search one collection only: code (the Georgia Code and the two constitutions), bills, opinions, or meetings. Omit to search all four.", - "title": "Collection" -} - added
Input schema / properties / cursorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The next_cursor of a previous call, for the next page.", + "title": "Cursor" +} - added
Input schema / properties / filtersAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/Filters" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional hard filters (see describe_site for values)." +} - added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "maximum": 50, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Results per page: 1 to 50 (default 10 documents; 25 in mode all).", + "title": "Limit" +} - added
Input schema / properties / linked_toAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Only documents linked to this document id (a bill's meetings, a section's amending bills).", + "title": "Linked To" +} - added
Input schema / properties / modeAdded value: +{ + "default": "best", + "description": "best: ranked and cut. all: every match found, by date, paged, with a total.", + "enum": [ + "best", + "all" + ], + "title": "Mode", + "type": "string" +} - added
Input schema / properties / parentAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Only documents inside this hierarchy node (code:t16, code:t16/c11, ga-const:art-i).", + "title": "Parent" +} - added
Input schema / properties / query / defaultAdded value: +"" - changed
Input schema / properties / query / descriptionPrevious value: -"Words, a citation (44-7-34), a bill number (HB 136), or a docket (S23A0421). Search matches the words of the document."New value: +"A question or keywords, in plain language. Empty with filters: browse." - added
Input schema / properties / relationsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With linked_to: relation types (discusses, amends, amendment_to, cites, ...).", + "title": "Relations" +} - added
Input schema / properties / sortAdded value: +{ + "default": "relevance", + "description": "Result order.", + "enum": [ + "relevance", + "newest", + "oldest", + "id" + ], + "title": "Sort", + "type": "string" +} - added
Input schema / properties / versionsAdded value: +{ + "default": "current", + "description": "current (default) or all versions (how a bill changed).", + "enum": [ + "current", + "all" + ], + "title": "Versions", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "query" -] - added
Output schema / $defs / PassageAdded value: +{ + "properties": { + "char_end": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Char End" + }, + "char_start": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Char Start" + }, + "cite": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cite" + }, + "link": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Link" + }, + "locator": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Locator" + }, + "role": { + "default": "evidence", + "title": "Role", + "type": "string" + }, + "stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Stage" + }, + "text": { + "title": "Text", + "type": "string" + }, + "version_id": { + "title": "Version Id", + "type": "string" + } + }, + "required": [ + "text", + "version_id" + ], + "title": "Passage", + "type": "object" +} - added
Output schema / $defs / ResultAdded value: +{ + "properties": { + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Body" + }, + "cite_as": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cite As" + }, + "date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Date" + }, + "date_field": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Date Field" + }, + "doc_type": { + "title": "Doc Type", + "type": "string" + }, + "exact": { + "default": false, + "title": "Exact", + "type": "boolean" + }, + "id": { + "title": "Id", + "type": "string" + }, + "level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Level" + }, + "occurrences": { + "default": 0, + "title": "Occurrences", + "type": "integer" + }, + "passages": { + "items": { + "$ref": "#/$defs/Passage" + }, + "title": "Passages", + "type": "array" + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Score" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Status" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Georgia Commons' AI-written summary: labeled, never source text.", + "title": "Summary" + }, + "title": { + "title": "Title", + "type": "string" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url", + "doc_type" + ], + "title": "Result", + "type": "object" +} - removed
Output schema / $defs / SearchResultRemoved value: -{ - "properties": { - "id": { - "title": "Id", - "type": "string" - }, - "title": { - "title": "Title", - "type": "string" - }, - "url": { - "title": "Url", - "type": "string" - } - }, - "required": [ - "id", - "title", - "url" - ], - "title": "SearchResult", - "type": "object" -} - added
Output schema / properties / confidenceAdded value: +{ + "default": "medium", + "title": "Confidence", + "type": "string" +} - added
Output schema / properties / coverage_notesAdded value: +{ + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Coverage Notes", + "type": "array" +} - added
Output schema / properties / documents_foundAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Documents Found" +} - added
Output schema / properties / facetsAdded value: +{ + "additionalProperties": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + "title": "Facets", + "type": "object" +} - added
Output schema / properties / interpretationAdded value: +{ + "additionalProperties": true, + "title": "Interpretation", + "type": "object" +} - added
Output schema / properties / next_cursorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Next Cursor" +} - added
Output schema / properties / queryAdded value: +{ + "title": "Query", + "type": "string" +} - changed
Output schema / properties / results / items / $refPrevious value: -"#/$defs/SearchResult"New value: +"#/$defs/Result" - added
Output schema / properties / totalAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Total" +} - added
Output schema / properties / total_kindAdded value: +{ + "default": "found", + "title": "Total Kind", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "results" -]New value: +[ + "query", + "results" +] - changed
Output schema / titlePrevious value: -"SearchResults"New value: +"SearchOutput"
- Changed
verify_quote17 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"The document's id, as search and fetch return it: code:44-7-34, bill:2025-2026/hb136, opinion:S26A0060, meeting:2026-02-05/house-rules."New value: +"The document id (or any written form of one)." - added
Input schema / properties / id / maxLengthAdded value: +300 - changed
Input schema / properties / quote / descriptionPrevious value: -"The quotation to check, at least 12 characters and at most 4,000."New value: +"The quotation to check, at least 12 characters." - changed
Input schema / properties / quote / minLengthPrevious value: -1New value: +12 - added
Input schema / properties / versionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A version id to check; default the current version, then earlier ones.", + "title": "Version" +} - added
Output schema / properties / canonical_urlAdded value: +{ + "title": "Canonical Url", + "type": "string" +} - added
Output schema / properties / currentAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Current" +} - added
Output schema / properties / foundAdded value: +{ + "title": "Found", + "type": "boolean" +} - added
Output schema / properties / inAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "In" +} - added
Output schema / properties / md_urlAdded value: +{ + "title": "Md Url", + "type": "string" +} - removed
Output schema / properties / source_fieldRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Source Field" -} - removed
Output schema / properties / urlRemoved value: -{ - "title": "Url", - "type": "string" -} - removed
Output schema / properties / verifiedRemoved value: -{ - "title": "Verified", - "type": "boolean" -} - added
Output schema / properties / version_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Version Id" +} - added
Output schema / properties / version_labelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Version Label" +} - changed
Output schema / requiredPrevious value: -[ - "id", - "url", - "verified", - "occurrences", - "source_field", - "chars" -]New value: +[ + "id", + "found", + "occurrences", + "chars", + "canonical_url", + "md_url" +] - changed
Output schema / titlePrevious value: -"VerifyResult"New value: +"VerifyOutput"
25 tool updates
- Changed
bills_get_text8 fields changed- added
Input schema / properties / bill / descriptionAdded value: +"The bill or resolution: HB 136, H.B. 136, House Bill 136, SR 5, 2025-2026/hb136, or a numeric id." - added
Input schema / properties / bill / minLengthAdded value: +1 - added
Input schema / properties / max_chars / descriptionAdded value: +"Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part." - added
Input schema / properties / max_chars / maximumAdded value: +200000 - added
Input schema / properties / max_chars / minimumAdded value: +1000 - added
Input schema / properties / session / descriptionAdded value: +"The session, named by its years or slug: 2025-2026 (the regular session) or 2026-special. Omit for the default the tool describes." - added
Input schema / properties / start / descriptionAdded value: +"Where to start, as returned by the previous call's continuation pointer. 0 is the beginning." - added
Input schema / properties / start / minimumAdded value: +0
- Changed
bills_list16 fields changed- changed
Input schema / properties / chamber / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "H", + "S" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / chamber / descriptionAdded value: +"Chamber of origin: H (House) or S (Senate)." - changed
Input schema / properties / kind / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "hb", + "sb", + "hr", + "sr" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / kind / descriptionAdded value: +"Kind of measure: hb (House bill), sb (Senate bill), hr (House resolution), or sr (Senate resolution)." - added
Input schema / properties / limit / descriptionAdded value: +"How many entries per page, 1 to 40 (default 25)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / q / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / q / descriptionAdded value: +"Words every listed bill must contain." - added
Input schema / properties / session / descriptionAdded value: +"The session, named by its years or slug: 2025-2026 (the regular session) or 2026-special. Omit for the default the tool describes." - added
Input schema / properties / start / descriptionAdded value: +"How many entries to skip, as returned by the previous call's continuation pointer. 0 is the first page." - added
Input schema / properties / start / minimumAdded value: +0 - changed
Input schema / properties / status / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 6, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / status / descriptionAdded value: +"Status code: 1 Introduced, 2 Engrossed, 3 Enrolled, 4 Passed, 5 Vetoed, 6 Failed." - changed
Input schema / properties / subject / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 200, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / subject / descriptionAdded value: +"A caption subject, such as Education or Income tax: a search of titles, topic tags, and subjects."
- Changed
bills_lookup6 fields changed- added
Input schema / properties / bill / descriptionAdded value: +"The bill or resolution: HB 136, H.B. 136, House Bill 136, SR 5, 2025-2026/hb136, or a numeric id." - added
Input schema / properties / bill / minLengthAdded value: +1 - added
Input schema / properties / full / descriptionAdded value: +"Include the optional material the tool describes (for example votes and history, or the notes). Longer." - added
Input schema / properties / max_charsAdded value: +{ + "default": 60000, + "description": "Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part.", + "maximum": 200000, + "minimum": 1000, + "title": "Max Chars", + "type": "integer" +} - added
Input schema / properties / session / descriptionAdded value: +"The session, named by its years or slug: 2025-2026 (the regular session) or 2026-special. Omit for the default the tool describes." - added
Input schema / properties / startAdded value: +{ + "default": 0, + "description": "Where to start, as returned by the previous call's continuation pointer. 0 is the beginning.", + "minimum": 0, + "title": "Start", + "type": "integer" +}
- Changed
bills_search8 fields changed- added
Input schema / properties / in_headings / descriptionAdded value: +"Search only titles and headings instead of the full text." - added
Input schema / properties / limit / descriptionAdded value: +"How many results to return, 1 to 40 (default 10)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / query / descriptionAdded value: +"The words to search for, in the words the document itself would use." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session / descriptionAdded value: +"The session, named by its years or slug: 2025-2026 (the regular session) or 2026-special. Omit for the default the tool describes."
- Changed
code_browse2 fields changed- changed
Input schema / properties / node / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 40, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / node / descriptionAdded value: +"A title ('36'), a title and chapter ('36-60'), or nothing for the list of titles."
- Changed
code_find_act3 fields changed- added
Input schema / properties / name / descriptionAdded value: +"The law's short title as the statute states it: Joshua's Law, Georgia Lemonade Stand Act." - added
Input schema / properties / name / maxLengthAdded value: +200 - added
Input schema / properties / name / minLengthAdded value: +1
- Changed
code_find_chapter3 fields changed- added
Input schema / properties / words / descriptionAdded value: +"One or two words the Code would use as a heading: 'landlord and tenant', 'power of attorney'." - added
Input schema / properties / words / maxLengthAdded value: +200 - added
Input schema / properties / words / minLengthAdded value: +1
- Changed
code_get_chapter15 fields changed- added
Input schema / properties / chapter / descriptionAdded value: +"The chapter number within the title, as printed: 5, 11A." - added
Input schema / properties / chapter / maxLengthAdded value: +10 - added
Input schema / properties / chapter / minLengthAdded value: +1 - changed
Input schema / properties / max_chars / defaultPrevious value: -100000New value: +60000 - added
Input schema / properties / max_chars / descriptionAdded value: +"Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part." - added
Input schema / properties / max_chars / maximumAdded value: +200000 - added
Input schema / properties / max_chars / minimumAdded value: +1000 - added
Input schema / properties / max_sections / descriptionAdded value: +"Most sections to return in this call, 1 to 200 (default 40)." - added
Input schema / properties / max_sections / maximumAdded value: +200 - added
Input schema / properties / max_sections / minimumAdded value: +1 - added
Input schema / properties / start / descriptionAdded value: +"How many of the chapter's sections to skip, as the previous call's continuation pointer says. 0 is the first section." - added
Input schema / properties / start / minimumAdded value: +0 - added
Input schema / properties / title / descriptionAdded value: +"The title number, 1 to 53 (Title 16 is Crimes and Offenses)." - added
Input schema / properties / title / maximumAdded value: +53 - added
Input schema / properties / title / minimumAdded value: +1
- Changed
code_lookup_section9 fields changed- added
Input schema / properties / citation / descriptionAdded value: +"One Code section in any written form: 44-7-34, O.C.G.A. § 44-7-34, Title 44, Chapter 7, Section 34, or with a subsection, 44-7-34(a)." - added
Input schema / properties / citation / maxLengthAdded value: +200 - added
Input schema / properties / citation / minLengthAdded value: +1 - added
Input schema / properties / max_charsAdded value: +{ + "default": 60000, + "description": "Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part.", + "maximum": 200000, + "minimum": 1000, + "title": "Max Chars", + "type": "integer" +} - added
Input schema / properties / startAdded value: +{ + "default": 0, + "description": "Where to start, as returned by the previous call's continuation pointer. 0 is the beginning.", + "minimum": 0, + "title": "Start", + "type": "integer" +} - changed
Input schema / properties / subsection / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 40, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / subsection / descriptionAdded value: +"One subsection to render alone, by its label: a, a-1, b." - changed
Input schema / properties / version / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 100, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / version / descriptionAdded value: +"Which printed version, by words of its effective-date qualifier, when a section is printed in more than one."
- Changed
code_lookup_sections3 fields changed- added
Input schema / properties / citations / descriptionAdded value: +"A range ('44-7-30 through 44-7-35'), a list ('44-7-30, 44-7-31 and 44-7-34'), or a comma list of citations." - added
Input schema / properties / citations / maxLengthAdded value: +2000 - added
Input schema / properties / citations / minLengthAdded value: +1
- Changed
code_search13 fields changed- changed
Input schema / properties / chapter / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 10, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / chapter / descriptionAdded value: +"Only sections in this chapter of `title` (5, 11A)." - added
Input schema / properties / in_headings / descriptionAdded value: +"Search only titles and headings instead of the full text." - added
Input schema / properties / limit / descriptionAdded value: +"How many results to return, 1 to 40 (default 10)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / query / descriptionAdded value: +"The words to search for, in the words the document itself would use." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / scheme / descriptionAdded value: +"Which text to search: ocga (the Official Code of Georgia Annotated, the default), ga (the Constitution of the State of Georgia), or us (the Constitution of the United States)." - added
Input schema / properties / scheme / enumAdded value: +[ + "ocga", + "ga", + "us" +] - changed
Input schema / properties / title / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 53, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / title / descriptionAdded value: +"Only sections in this title of the Code (1 to 53)."
- Changed
constitution_browse4 fields changed- changed
Input schema / properties / node / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 20, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / node / descriptionAdded value: +"An article ('I', 'Art. IV') to list its provisions, or nothing for the outline." - added
Input schema / properties / scheme / descriptionAdded value: +"Which constitution: ga (the Constitution of the State of Georgia) or us (the Constitution of the United States)." - added
Input schema / properties / scheme / enumAdded value: +[ + "ga", + "us" +]
- Changed
constitution_lookup7 fields changed- added
Input schema / properties / citation / descriptionAdded value: +"The provision: 'Art. I, Sec. I, Para. I' (Georgia), 'Art. I, Sec. 8' or 'Amend. XIV' (United States), 'Preamble', or a slug such as art-i-sec-i-para-i." - added
Input schema / properties / citation / maxLengthAdded value: +200 - added
Input schema / properties / citation / minLengthAdded value: +1 - added
Input schema / properties / max_charsAdded value: +{ + "default": 60000, + "description": "Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part.", + "maximum": 200000, + "minimum": 1000, + "title": "Max Chars", + "type": "integer" +} - added
Input schema / properties / scheme / descriptionAdded value: +"Which constitution: ga (the Constitution of the State of Georgia) or us (the Constitution of the United States)." - added
Input schema / properties / scheme / enumAdded value: +[ + "ga", + "us" +] - added
Input schema / properties / startAdded value: +{ + "default": 0, + "description": "Where to start, as returned by the previous call's continuation pointer. 0 is the beginning.", + "minimum": 0, + "title": "Start", + "type": "integer" +}
- Changed
fetch6 fields changed- added
Input schema / properties / full / descriptionAdded value: +"Include the optional material the tool describes (for example votes and history, or the notes). Longer." - added
Input schema / properties / id / descriptionAdded value: +"A document id from search: code:44-7-34, ga-const:art-i-sec-i-para-i, us-const:amend-xiv, bill:2025-2026/hb136, opinion:S26A0060, or meeting:2026-02-05/house-rules." - added
Input schema / properties / id / minLengthAdded value: +1 - added
Input schema / properties / max_charsAdded value: +{ + "default": 60000, + "description": "Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part.", + "maximum": 200000, + "minimum": 1000, + "title": "Max Chars", + "type": "integer" +} - added
Input schema / properties / startAdded value: +{ + "default": 0, + "description": "Where to start, as returned by the previous call's continuation pointer. 0 is the beginning.", + "minimum": 0, + "title": "Start", + "type": "integer" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "id": { - "title": "Id", - "type": "string" - }, - "metadata": { - "additionalProperties": true, - "title": "Metadata", - "type": "object" - }, - "text": { - "title": "Text", - "type": "string" - }, - "title": { - "title": "Title", - "type": "string" - }, - "url": { - "title": "Url", - "type": "string" - } - }, - "required": [ - "id", - "title", - "text", - "url", - "metadata" - ], - "title": "FetchResult", - "type": "object" -}New value: +null
- Changed
meetings_for_bill3 fields changed- added
Input schema / properties / bill / descriptionAdded value: +"The bill: HB 629, SB 1, or 2025-2026/hb629." - added
Input schema / properties / bill / minLengthAdded value: +1 - added
Input schema / properties / session / descriptionAdded value: +"The session, named by its years or slug: 2025-2026 (the regular session) or 2026-special. Omit for the default the tool describes."
- Changed
meetings_get_transcript7 fields changed- added
Input schema / properties / max_chars / descriptionAdded value: +"Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part." - added
Input schema / properties / max_chars / maximumAdded value: +200000 - added
Input schema / properties / max_chars / minimumAdded value: +1000 - added
Input schema / properties / meeting / descriptionAdded value: +"The meeting: its address (2026-02-05/house-rules), the General Assembly's video id or URL, or a body and a date (House Rules 2/5/2026)." - added
Input schema / properties / meeting / minLengthAdded value: +1 - added
Input schema / properties / start / descriptionAdded value: +"Where to start, as returned by the previous call's continuation pointer. 0 is the beginning." - added
Input schema / properties / start / minimumAdded value: +0
- Changed
meetings_list14 fields changed- changed
Input schema / properties / body / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 100, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / body / descriptionAdded value: +"One body by its slug (house-rules, senate-judiciary, house-floor) or its name." - changed
Input schema / properties / chamber / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "house", + "senate" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / chamber / descriptionAdded value: +"Chamber: house or senate." - added
Input schema / properties / date / descriptionAdded value: +"One day, written YYYY-MM-DD (2026-02-05)." - changed
Input schema / properties / kind / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "floor", + "committee", + "rules" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / kind / descriptionAdded value: +"Kind of meeting: floor (a floor session), committee (a standing committee), or rules (the Rules Committee)." - added
Input schema / properties / limit / descriptionAdded value: +"How many entries per page, 1 to 40 (default 25)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / start / descriptionAdded value: +"How many entries to skip, as returned by the previous call's continuation pointer. 0 is the first page." - added
Input schema / properties / start / minimumAdded value: +0 - changed
Input schema / properties / year / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 2100, + "minimum": 2026, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / year / descriptionAdded value: +"One year (meetings are held from 2026 on)."
- Changed
meetings_lookup4 fields changed- added
Input schema / properties / meeting / descriptionAdded value: +"The meeting: its address (2026-02-05/house-rules), the General Assembly's video id or URL, or a body and a date (House Rules 2/5/2026)." - added
Input schema / properties / meeting / minLengthAdded value: +1 - changed
Input schema / properties / start / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / start / descriptionAdded value: +"A character offset into the transcript: returns that part of the transcript alone instead of the meeting with its summaries."
- Changed
meetings_search13 fields changed- changed
Input schema / properties / body / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 100, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / body / descriptionAdded value: +"Only this body, by its slug (house-rules, senate-judiciary)." - changed
Input schema / properties / chamber / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "house", + "senate" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / chamber / descriptionAdded value: +"Chamber: house or senate." - added
Input schema / properties / in_headings / descriptionAdded value: +"Search only titles and headings instead of the full text." - changed
Input schema / properties / kind / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "floor", + "committee", + "rules" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / kind / descriptionAdded value: +"Kind of meeting: floor (a floor session), committee (a standing committee), or rules (the Rules Committee)." - added
Input schema / properties / limit / descriptionAdded value: +"How many results to return, 1 to 40 (default 10)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / query / descriptionAdded value: +"The words to search for, in the words the document itself would use." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
opinions_get_text7 fields changed- added
Input schema / properties / max_chars / descriptionAdded value: +"Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part." - added
Input schema / properties / max_chars / maximumAdded value: +200000 - added
Input schema / properties / max_chars / minimumAdded value: +1000 - added
Input schema / properties / opinion / descriptionAdded value: +"The opinion: a docket number (S23A0421), a reporter citation (317 Ga. 528), a record id, or a case name." - added
Input schema / properties / opinion / minLengthAdded value: +1 - added
Input schema / properties / start / descriptionAdded value: +"Where to start, as returned by the previous call's continuation pointer. 0 is the beginning." - added
Input schema / properties / start / minimumAdded value: +0
- Changed
opinions_list11 fields changed- changed
Input schema / properties / case_type / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "criminal appeal", + "civil", + "bar discipline", + "habeas", + "certified question", + "election", + "other" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / case_type / descriptionAdded value: +"Kind of case: criminal appeal, civil, bar discipline, habeas, certified question, election, or other." - added
Input schema / properties / limit / descriptionAdded value: +"How many entries per page, 1 to 40 (default 25)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / q / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / q / descriptionAdded value: +"Words every listed opinion must contain." - added
Input schema / properties / start / descriptionAdded value: +"How many entries to skip, as returned by the previous call's continuation pointer. 0 is the first page." - added
Input schema / properties / start / minimumAdded value: +0 - changed
Input schema / properties / year / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 2100, + "minimum": 2000, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / year / descriptionAdded value: +"The year filed (opinions are held from 2020 on). Omit for the newest year."
- Changed
opinions_lookup5 fields changed- added
Input schema / properties / full / descriptionAdded value: +"Include the optional material the tool describes (for example votes and history, or the notes). Longer." - added
Input schema / properties / max_charsAdded value: +{ + "default": 60000, + "description": "Most characters to return in this call, 1,000 to 200,000 (default 60,000). A longer document ends with a pointer to the next part.", + "maximum": 200000, + "minimum": 1000, + "title": "Max Chars", + "type": "integer" +} - added
Input schema / properties / opinion / descriptionAdded value: +"The opinion: a docket number (S23A0421), a reporter citation (317 Ga. 528), a record id, or a case name." - added
Input schema / properties / opinion / minLengthAdded value: +1 - added
Input schema / properties / startAdded value: +{ + "default": 0, + "description": "Where to start, as returned by the previous call's continuation pointer. 0 is the beginning.", + "minimum": 0, + "title": "Start", + "type": "integer" +}
- Changed
opinions_search11 fields changed- changed
Input schema / properties / case_type / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "criminal appeal", + "civil", + "bar discipline", + "habeas", + "certified question", + "election", + "other" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / case_type / descriptionAdded value: +"Kind of case: criminal appeal, civil, bar discipline, habeas, certified question, election, or other." - added
Input schema / properties / in_headings / descriptionAdded value: +"Search only titles and headings instead of the full text." - added
Input schema / properties / limit / descriptionAdded value: +"How many results to return, 1 to 40 (default 10)." - added
Input schema / properties / limit / maximumAdded value: +40 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / query / descriptionAdded value: +"The words to search for, in the words the document itself would use." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - changed
Input schema / properties / year / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 2100, + "minimum": 2000, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / year / descriptionAdded value: +"Only opinions filed in this year."
- Changed
search4 fields changed- changed
Input schema / properties / collection / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "code", + "bills", + "opinions", + "meetings" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / collection / descriptionAdded value: +"Search one collection only: code (the Georgia Code and the two constitutions), bills, opinions, or meetings. Omit to search all four." - added
Input schema / properties / query / descriptionAdded value: +"Words, a citation (44-7-34), a bill number (HB 136), or a docket (S23A0421). Search matches the words of the document." - added
Input schema / properties / query / maxLengthAdded value: +2000
- Changed
verify_quote5 fields changed- added
Input schema / properties / id / descriptionAdded value: +"The document's id, as search and fetch return it: code:44-7-34, bill:2025-2026/hb136, opinion:S26A0060, meeting:2026-02-05/house-rules." - added
Input schema / properties / id / minLengthAdded value: +1 - added
Input schema / properties / quote / descriptionAdded value: +"The quotation to check, at least 12 characters and at most 4,000." - added
Input schema / properties / quote / maxLengthAdded value: +4000 - added
Input schema / properties / quote / minLengthAdded value: +1
5 tool updates
- Added
meetings_for_bill - Added
meetings_get_transcript - Added
meetings_list - Added
meetings_lookup - Added
meetings_search
Related MCP Connectors
Official Code of Georgia Annotated (O.C.G.A.) — Georgia state statutes by citation, topic search…
U.S. bills, roll-call votes, legislators and 2026 elections for all 50 states, D.C. and Congress.
Georgia K-12 standards, Milestones blueprints, and achievement levels for educators. Independent.
Read-only public data on Georgia's prisons: population, facilities, deaths, contraband, statutes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve Official Code of Georgia Annotated statutory text by citation or full-text topic search, returning section status, catchlines, editor's notes, cross references, and every stored historical version along with the enacting and amending Acts. Keyless and requires no signup, with citation parsing and error handling delegated to the upstream Georgia Commons API.446 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents and developers to look up zoning, land-use, and development records for Gwinnett County, Georgia through five public read-only tools: resolving an address to its actual governing jurisdiction, searching and retrieving county zoning cases, fetching ordinance code sections, and listing jurisdictions. It exposes the same operations over a REST API so questions about setbacks, permits, and case histories can be answered from indexed source records rather than guesses.-
- AlicenseAqualityDmaintenanceSearch bills and speaker-attributed hearing transcripts across all 50 US state legislatures.71MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching US state bills by keyword, sponsor, committee, status, or chamber, and searching speaker-attributed committee hearing testimony across all 50 states and DC. Also retrieves full bill details, hearing transcripts, speaker activity histories, and the list of states with available data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.