Skip to main content
Glama

North Carolina General Statutes

Server Details

Read-only access to the North Carolina General Statutes, mirrored from ncleg.gov and refreshed weekly.

Search by subject when you have no citation, read any section by citation (14-72.1, G.S. 14-72.1), and follow how the law changed: amendment history back to the 1800s, word-level diffs, text enacted but not yet effective, and the citation graph both ways.

Covers codified text, which lags enacted law, so an absence here never means a bill did not pass. NC only; not legal advice.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

Score is being calculated.

Available Tools

8 tools
amendment_historyWhen a North Carolina (NC) statute was enacted and amendedA
Read-only
Inspect

When a North Carolina (NC) statute section was enacted and every time it was amended.

Use for "how often has G.S. 14-33 changed" or "when was this last amended". Returns one entry per session law mined from the section's own history note, grouped by year, plus first-enacted year and total amendment count.

These are STATUTORY dates from the legislature's record — not when this database saw the text change. For that use recent_law_changes; for the wording itself use get_statute or diff_statute.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationYesThe section whose amendment record you want.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint, so the description adds real value by disclosing the data's provenance (statutory dates from the legislature's record, not database observation timestamps) and the shape of the result (one entry per session law, grouped by year, plus first-enacted year and total count). This is exactly the kind of caveat that prevents misreading the output; only the fact that the output schema already covers result structure keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core answer, then usage examples, then the result shape, then the disambiguation clause. Every sentence carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be enumerated, yet the description still characterizes them usefully. With a single fully documented parameter and explicit sibling routing, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema coverage, including examples ("14-33", "G.S. 20-141") and a description. The prose adds no format or syntax guidance beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: statutory enactment and every amendment date for an NC statute section. The title/description pair makes clear this is the legislative history timeline, not the text itself, so it is distinguishable from siblings at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete user-intent triggers ("how often has G.S. 14-33 changed", "when was this last amended") and explicitly routes away: recent_law_changes for database-observed text changes, get_statute or diff_statute for the wording itself. When-to-use and alternatives are both stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chapter_activityLegislative activity across a North Carolina (NC) statute chapter
Read-only
Inspect

How much legislative churn a North Carolina (NC) statute chapter has seen.

Use for "which parts of Chapter 14 keep changing". Returns amendment counts by year, the most-amended sections with their totals, and counts of pending and repealed sections. Omit chapter for a corpus-wide view.

Counts are STATUTORY, from history notes — not observations. For one section use amendment_history; for upcoming text use pending_changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
chapterNo
since_yearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

cross_referencesWhat a North Carolina (NC) statute cites, and what cites itA
Read-only
Inspect

Which North Carolina (NC) statutes this section cites, and which cite it.

Use for "what does G.S. 14-72.1 depend on" or "what else references it". OUTBOUND is what the section's own text cites; INBOUND is every section citing it — the direction you cannot get by reading one statute.

Section-level only: a reference to 20-141(j1) is an edge to 20-141. Chapter-wide and "this Article" references are not edges. For the text itself use get_statute.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
citationYesThe section whose references you want, in either direction.
directionNoboth

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint=false, and the description adds real behavioral scoping on top: only section-level references count as edges, chapter-wide and "this Article" references are excluded, and INBOUND is flagged as the direction unavailable from reading a single statute. It does not describe the limit/cap behavior, but the safety and scope profile is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core question, then examples, then scope caveats, then the sibling pointer — a sensible order with no filler. Slightly dense across four short blocks, but each sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity lookup tool with an output schema (so return shape needn't be explained) and safety annotations, the description covers purpose, direction semantics, scope rules, and the alternative tool. The only material omission is the behavior of the limit parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (limit and direction have no schema descriptions), so the description must compensate. It does so for the most important parameter by defining OUTBOUND vs INBOUND conceptually, which implies the direction values, but it never clarifies what limit does or what its 100 default means.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource pair (a NC statute's outbound and inbound citations) and immediately separates the two directions, which is the core of what the tool does. It also distinguishes itself from get_statute, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger queries ("what does G.S. 14-72.1 depend on", "what else references it") and an explicit exclusion plus alternative: "For the text itself use get_statute." The when-to-use and when-not-to-use conditions are both present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diff_statuteDiff two versions of a North Carolina (NC) statuteA
Read-only
Inspect

Word-level diff of a North Carolina (NC) statute section between two versions.

mode="pending" compares the text in force against an enacted-but-not-yet-effective variant — use this for "what will change on 1 October". mode="observed" compares versions this database has actually recorded, optionally between two dates.

CANNOT show text from before the ingest's first observation: observed history begins then, so most sections have only one version and return diff: null. For earlier change dates use amendment_history; for pending text use pending_changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoobserved
formatNounified
to_dateNo
citationYesThe section to diff. Add mode="pending" to compare today's text against an enacted-but-not-yet-effective version.
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description still adds real behavioral context: the ingest-observation floor that causes 'most sections have only one version and return diff: null'. It doesn't cover the format modes or any cost/pagination behavior, but the key failure mode (null diffs) is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight blocks: purpose first, then the mode semantics, then the limitation and sibling routing. Every sentence carries distinct information; nothing is repeated from the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 params (1 required), an output schema present so return-shape explanation is unnecessary, and no annotations gap to fill, this description supplies what's missing: mode semantics, data-coverage limits, and sibling routing. The only residual hole (format options, date semantics) is minor for a diff tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description carries meaningful load for `mode`, explaining both enum-like values and their semantics; without this, the agent would have no way to know what 'pending' vs 'observed' means since the schema gives `mode` no description and no enum. However, `format`, `from_date`, and `to_date` remain unexplained in both the description and the schema (only coverage is on `citation`), so it doesn't fully compensate for the 20% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+granularity: 'Word-level diff of a North Carolina (NC) statute section between two versions.' It further splits the operation into two named modes (pending vs observed), which is exactly the distinction an agent needs to pick this tool over get_statute or search_statutes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit selection criteria for each mode ('what will change on 1 October' vs recorded versions between two dates) and names the alternatives with their conditions: 'For earlier change dates use amendment_history; for pending text use pending_changes.' Both when-to-use and when-not-to-use are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statuteRead a North Carolina (NC) General Statutes section
Read-only
Inspect

Full text of one North Carolina (NC) General Statutes section, by citation.

Use for "what does G.S. 14-72.1 say". Accepts any spelling — "14-72.1", "G.S. 14-72.1", "§ 14-72.1". Returns catchline, body, history note, and when it was first enacted and last amended. as_of gives the text observed on a past date; pending lists variants enacted but not yet effective.

Carries codified_through, session_laws_through and a legislation_note naming any enacted act that touches this section outside the codified text. An uncodified override ("Notwithstanding G.S. ...") is never codified, so it is reported regardless of the watermark. PENDING BILLS ARE NOT COVERED — a ratified bill is not law and appears in neither source, so an empty note is not evidence nothing passed.

as_of RESOLVES AGAINST OBSERVED VERSIONS, NOT EFFECTIVE DATES — it answers "what did this database hold on that date", so it cannot reach text from before the first ingest run. For "what took effect on 1 October" use recent_law_changes(source="effective").

Section-level only — ask for "20-141", not "20-141(j1)". For WHEN it changed use amendment_history; for WHAT changed use diff_statute.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNo
pendingNo
citationYesOne NC General Statutes SECTION. Any spelling works; subsections do not — ask for 20-141, not 20-141(j1).
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

pending_changesNorth Carolina (NC) statute changes enacted but not yet effective
Read-only
Inspect

North Carolina (NC) statute text already enacted but not yet effective.

Use for "what changes to Chapter 14 are coming". Returns each section's current text alongside the future variant, its effective date, and by default a diff of the two. Distinguishes an AMENDMENT (current text exists) from a NEW SECTION (nothing in force yet, so no diff).

Only counts variants dated in the future. For text in force now use get_statute; for already-enacted history use amendment_history or recent_law_changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
chapterNo
citationNo
include_diffNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

recent_law_changesRecently changed North Carolina (NC) statutes
Read-only
Inspect

Changed North Carolina (NC) statutes, by effective date, observation or session year.

source="effective" answers "what took effect on 1 October" from ncleg's own effective dates — use it for that, and bound a single day with since=until. It looks FORWARD too, so it also answers "what takes effect next quarter".

source="statutory" is the legislature's record from history notes, back to the 1800s, dated by year. source="observed" is only when this database saw text change — ncleg's publishing schedule, not the law's, and no substitute for effective dates.

"both" returns statutory + observed. For one section use amendment_history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceYesStart of the window: a session year or an ISO date. Pair with `until` and source="effective" to ask about a single day.
untilNo
sourceNoboth
chapterNo
include_baselineNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

search_statutesSearch North Carolina (NC) statutes by topic or keywordA
Read-only
Inspect

Search North Carolina (NC) statutes by topic, keyword or phrase.

Use this when you know the SUBJECT but not the citation — "what's the NC law about leaving a dog in a hot car", "failure to appear penalty", "when can I expunge a misdemeanor". If you already have a citation, use get_statute instead.

Returns ranked sections with highlighted fragments showing why each matched, not full text: pick the one you want and call get_statute for it.

Supports quoted "exact phrases", -excluded terms and or. Court shorthand is expanded automatically and case-insensitively — FTA, DWLR, PJC, AWDW and similar become the statutory wording, because the statute book spells the phrase out and never uses the abbreviation. The expansion is reported back as expanded_query.

Searches the law in force today, at section level. A low top rank means the corpus probably has no section on point — NC simply has no statute on some subjects, and saying so is a better answer than the nearest loose word match.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesTopic, keyword or phrase. Supports quoted "exact phrases", -excluded terms and `or`. Court shorthand (FTA, DWLR, PJC) is expanded for you.
chapterNo
include_repealedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, the description discloses that results are ranked sections with highlighted fragments rather than full text, that the tool searches law currently in force at section level, that court shorthand is case-insensitively expanded and reported back as `expanded_query`, and how to interpret a weak top rank. This is behaviorally rich context an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, return shape, and query syntax in that order; each paragraph carries a distinct piece of information. It is somewhat long and the shorthand-expansion behavior is stated twice (once here, once in the schema), which is mild redundancy rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still usefully characterizes the return shape for chaining into `get_statute`, and it covers the query syntax and empty-result interpretation an agent needs. The only real gap is the undocumented `chapter` and `include_repealed` filters, which limit the agent's ability to narrow or widen scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, but the description thoroughly compensates for the required `query` parameter with phrase/-exclusion/`or` syntax and shorthand expansion. However, `chapter`, `limit` and `include_repealed` are documented nowhere; the text's "law in force today" hints at the default scope but never explains how to search repealed law or restrict to a chapter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (North Carolina statutes) with the scope of the search (topic, keyword or phrase). It explicitly names the sibling `get_statute` as the alternative when a citation is already known, so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use condition ("you know the SUBJECT but not the citation") with three concrete example queries, and an explicit when-not-to-use rule pointing to `get_statute`. It even pre-empts the empty-result case by telling the agent that a low top rank means no statute is on point.

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.

  1. 8 tool updates
    • First observedamendment_history
    • First observedchapter_activity
    • First observedcross_references
    • First observeddiff_statute
    • First observedget_statute
    • First observedpending_changes
    • First observedrecent_law_changes
    • First observedsearch_statutes

Publisher details

Operator
SmartBump Inc
Operator website
https://smartbumpinc.com
Vendor relationship
Not available
Documentation
Not available
Trust center
Not available
Restrictions
Unknown

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables retrieval of North Carolina General Statutes by citation, with keyless access to official state law data via MCP, either through the Pipeworx gateway or as a local stdio server.
    81 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables retrieval of New Jersey Statutes (N.J.S.A.) section text by citation, including parsed amendment history, plus keyword-based full-text topic search returning ranked sections with citation and heading. Keyless access to the state legislature's statute data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources