Skip to main content
Glama

NC General Statutes

Server Details

Search North Carolina's General Statutes, read any section by citation, track how it changed.

Ownership verified
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation4/5

Tools have distinct primary purposes (full text, diff, history, churn, citations, search, pending, change feed), and the descriptions actively cross-reference each other to steer selection. However, there is real overlap between amendment_history and recent_law_changes(source='statutory') for change dating, and between pending_changes and diff_statute(mode='pending') for future text, so an agent could occasionally misselect.

Naming Consistency4/5

All names use consistent snake_case and are readable. The style is mixed though: some are verb_noun (get_statute, diff_statute, search_statutes) while others are bare noun phrases (amendment_history, chapter_activity, cross_references, pending_changes), but this deviation is minor and predictable.

Tool Count5/5

Eight tools is well-scoped for a statutory research server, with each tool earning its place across search, retrieval, diffing, history, and citation analysis. No redundant or filler tools.

Completeness4/5

The surface covers search, full text, version diffs, amendment history, chapter-level churn, pending changes, effective-date change feeds, and cross references — a thorough lifecycle for statutory research. Minor gaps remain: no dedicated listing of a chapter's or article's sections, and no direct citation-resolution/browse tool, though search_statutes partially compensates.

Available Tools

8 tools
amendment_historyWhen a North Carolina (NC) statute was enacted and amendedA
Read-onlyIdempotent
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. Each amendment is listed once even when the section has several versions; an entry marked not_yet_in_force is an enacted law whose version of the text has not taken effect yet.

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.

NameRequiredDescriptionDefault
citationYesThe section whose amendment record you want.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare the safe read-only, idempotent, closed-world profile, and the description adds substantial context beyond them: results are derived from the section's own history note, grouped by year, deduplicated across multiple text versions, plus a first-enacted year and total amendment count. The `not_yet_in_force` entry semantics and the distinction between statutory dates and database-observed changes are exactly the kind of behavioral nuance annotations cannot express.

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-loaded with the definition, then use cases, then return shape, then disambiguation against siblings. Each sentence carries distinct information — no restatement of the title or name.

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?

For a one-parameter lookup with full schema coverage and an output schema, nothing needed to call it correctly is missing. The description even adds value the output schema cannot, such as the grouping, deduplication, and not_yet_in_force semantics.

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 description coverage is 100% and the single `citation` parameter already carries examples and a description, so the schema does the heavy lifting. The description implies the citation form through its G.S. 14-33 example but adds no format or normalization guidance beyond the schema.

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?

The description names a specific verb and resource — when an NC statute section was enacted and each amendment date — and explicitly frames the tool around citation-level history. It is immediately distinguishable from siblings that return text (get_statute, diff_statute) rather than temporal enactment records.

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?

It gives literal trigger queries ('how often has G.S. 14-33 changed', 'when was this last amended') and then names the alternatives with the condition that selects each: recent_law_changes for database-observed changes, get_statute or diff_statute for wording. 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.

chapter_activityLegislative activity across a North Carolina (NC) statute chapterA
Read-onlyIdempotent
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.

NameRequiredDescriptionDefault
topNo
chapterNo
since_yearNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious context beyond the annotations: counts are STATUTORY, derived from history notes rather than observations, which warns the agent about what the numbers mean. Return shape is partly described, though not full behavioral traits like pagination or how `since_year` interacts with the by-year breakdown.

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-loaded one-line summary, then usage, then an important caveat and sibling routing. Every sentence earns its place with no padding.

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, so return values need not be spelled out, and the description still previews the return shape. The main residual gap is the undocumented `top`/`since_year` parameters against 0% schema coverage, but overall the definition is sufficient for correct invocation.

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 description coverage is 0% for 3 parameters, so the description must compensate. It clarifies only `chapter` (omit for corpus-wide); `top` and `since_year` are left entirely to their names, with no explanation of the default count, ordering, or whether `since_year` filters all returned aggregates.

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?

The description states a specific measure (legislative churn/amendment counts) on a specific resource (an NC statute chapter), and explicitly contrasts itself with amendment_history and pending_changes. An agent can distinguish it from every sibling 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?

It gives a concrete use case ('which parts of Chapter 14 keep changing'), an explicit corpus-wide mode ('Omit `chapter` for a corpus-wide view'), and names the two alternative tools with the conditions that select them (per-section vs. upcoming text).

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

cross_referencesWhat a North Carolina (NC) statute cites, and what cites itA
Read-onlyIdempotent
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.

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

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real value beyond them by disclosing edge semantics: section-level only, with chapter-wide and 'this Article' references excluded, and clarifying OUTBOUND vs INBOUND directionality.

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 purpose, then usage examples, then the scope caveat and sibling pointer. Sentences are tight and each carries information, with only mild repetition between the opening line and the examples.

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, so return values need not be described. The description covers purpose, usage, directionality, and inclusion/exclusion scope; the only meaningful omission is the semantics of the 'limit' parameter.

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 33%, so the description must compensate. It explains the 'direction' concept (OUTBOUND/INBOUND, default both), but the 'limit' parameter is undocumented in both the schema and the description, leaving a clear gap.

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 and resource: which NC statutes a section cites and which cite it. It also differentiates from siblings by directing text lookups to get_statute, so an agent can route 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.

Usage Guidelines4/5

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

Provides concrete example queries ('what does G.S. 14-72.1 depend on', 'what else references it') and names get_statute as the alternative for raw text. Clear context is given, though there is no explicit when-not beyond the text-lookup case.

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-onlyIdempotent
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.

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

NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds the crucial operational caveat that observed history begins at ingest time and most sections therefore return diff: null. That failure mode and its workaround are exactly the kind of behavioral disclosure annotations cannot carry.

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 short blocks: what it does, how each mode is used, and what it cannot do plus the escape hatches. Every sentence earns its place and the caveats are front-loaded rather than buried.

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 an output schema present, return-value shape need not be described, yet the description still flags the diff: null case. Tool is read-only, no auth or rate-limit concerns to state, and the alternatives for out-of-range history are given, so an agent has everything needed to call it correctly.

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

Parameters5/5

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

Schema description coverage is only 20% (only citation is documented), so the description must compensate and it does: it defines the semantics of both mode values and notes that observed mode can optionally be bounded between two dates, which is the only explanation of from_date/to_date anywhere. format remains unexplained, but the two decisive parameters are covered.

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 (word-level diff) plus the exact resource (a North Carolina statute section between two versions), and immediately distinguishes its two operating modes. An agent can tell this apart from get_statute, amendment_history, and pending_changes without opening any 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?

Explicitly routes mode="pending" to the 'what will change on 1 October' question and mode="observed" to already-recorded versions, and names two alternative tools (amendment_history for earlier change dates, pending_changes for pending text) with the condition that selects each.

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 sectionA
Read-onlyIdempotent
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)". The Rules of Evidence and of Civil Procedure are each one statute (G.S. 8C-1, G.S. 1A-1) holding many rules; ask for a rule as "8C-1, Rule 104" or "1A-1, Rule 12" (N.C. R. Evid. / N.C. R. Civ. P. forms work). Asking for 8C-1 or 1A-1 itself lists the rules. For WHEN it changed use amendment_history; for WHAT changed use diff_statute.

NameRequiredDescriptionDefault
as_ofNo
pendingNo
citationYesOne NC General Statutes SECTION, or one rule of the Rules of Evidence or Civil Procedure ("8C-1, Rule 104", "N.C. R. Civ. P. 12"). Any spelling works; subsections do not — ask for 20-141, not 20-141(j1), and 1A-1, Rule 12, not Rule 12(b)(6).
max_charsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already establish the safe-read profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial behavioral context beyond them: what as_of actually resolves against, the observed-version watermark vs effective dates, how uncodified overrides are reported, and the limit that pending ratified bills appear in neither source.

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?

Long, but front-loaded with purpose and scoping on the first line and structured into constraint-bearing paragraphs. Nearly every sentence carries a distinct, actionable warning; a small amount of repetition (as_of semantics restated) keeps it from a 5.

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?

For a citation-lookup tool with an output schema present, the description covers everything an agent needs: accepted citation spellings, section-level granularity, the Rule-as-statute special cases, and the watermark caveats. Return fields are enumerated helpfully rather than redundantly.

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 description coverage is low (25%), so the description must compensate, and it does for as_of ("text observed on a past date", resolving against observed versions not effective dates) and pending ("variants enacted but not yet effective"). max_chars remains unexplained in both the description and schema, leaving one parameter undocumented.

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?

The description gives a specific verb+resource ("Full text of one North Carolina (NC) General Statutes section, by citation") and immediately distinguishes itself from siblings by naming amendment_history, diff_statute, recent_law_changes, and search_statutes for their respective jobs. An agent can route correctly without opening another 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?

Explicit when-to-use ("what does G.S. 14-72.1 say"), when-to-use-alternatives ("For WHEN it changed use amendment_history; for WHAT changed use diff_statute"), and a redirect for effective-date questions ("use recent_law_changes(source=\"effective\")"). It also names exclusions (PENDING BILLS ARE NOT COVERED).

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

pending_changesNorth Carolina (NC) statute changes enacted but not yet effectiveA
Read-onlyIdempotent
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.

NameRequiredDescriptionDefault
limitNo
chapterNo
citationNo
include_diffNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds the boundary condition that only future-dated variants count and that a diff is returned by default, which is genuinely useful behavior beyond the annotations. It does not, however, discuss result volume or how the limit/pagination interacts with the diff payload.

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?

The scoping sentence is front-loaded, followed by a use-case, then return behavior, then the disambiguation block. Every sentence carries distinct information and the alternatives are last, which is the right ordering.

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, so return-value explanation is not strictly required, yet the description helpfully summarizes what comes back. For a read-only, filtered-list tool the coverage is nearly complete; only the unexplained limit/citation parameters leave a gap, and that is scored separately.

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

Parameters2/5

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

Schema description coverage is 0% for all four parameters, so the description must carry the load. It explains the default diff behavior (include_diff) and implies chapter filtering via the Chapter 14 example, but says nothing about limit, citation, or the string-vs-integer form of chapter. Two of four parameters remain undocumented anywhere.

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?

The description states a specific verb and resource (NC statute text enacted but not yet effective) and distinguishes three sibling tools by name (get_statute, amendment_history, recent_law_changes). It even clarifies a subtle semantic: AMENDMENT (current text exists) vs NEW SECTION (no diff possible). An agent can route without opening any 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?

Explicit when-to-use ('what changes to Chapter 14 are coming') plus explicit when-not-to-use with the correct alternatives for each case ('text in force now use get_statute', 'already-enacted history use amendment_history or recent_law_changes'). Nothing is left to inference.

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

recent_law_changesRecently changed North Carolina (NC) statutesA
Read-onlyIdempotent
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.

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

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already carry read-only/idempotent/non-destructive semantics, but the description adds genuinely non-obvious behavior: 'effective' looks forward into future effective dates, and 'observed' reflects ncleg's publishing schedule rather than the law's own timeline. That distinction is exactly the kind of caveat 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.

Conciseness4/5

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

Front-loads the resource and its date axes, then groups guidance by source value in short, skimmable clauses with no padding. The dense quoting style is slightly awkward but every sentence carries a distinct instruction.

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, so return shape is covered, and the description fully handles the semantic minefield of source selection and date pairing. It is still thin on three optional parameters (limit, chapter, include_baseline), which leaves an agent guessing when those filters are useful.

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 17%, so the description carries real weight here, and it does explain source semantics and the since/until pairing for a single-day query. However, limit, chapter, and include_baseline are never mentioned in either the schema or the description, so the compensation is partial.

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 resource (changed NC statutes) and the axes along which they are organized (effective date, observation, session year), which is well beyond restating the name. It also names the sibling to use for a different granularity (amendment_history), letting an agent disambiguate without opening schemas.

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?

Explicitly maps each source value to a question it answers ('effective' for what took effect on a day or a future quarter, 'statutory' for the legislature's history-note record, 'observed' for database-side text changes), and states 'both' returns statutory + observed. It also routes single-section lookups to amendment_history with an explicit condition.

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

search_statutesSearch North Carolina (NC) statutes by topic or keywordA
Read-onlyIdempotent
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. match_mode says how the query was read: "all_terms" (every word), "any_of" (the query used or), "any_terms" (nothing matched every word, so any word was accepted) or "citation" (the query was a bare citation, so it was looked up directly; when the section doesn't exist, the nearest real sections by number come back as suggestions). The loose modes only return sections that contain at least one of your words. Results are ordered by terms_matched — how many of the search words a section contains, a quoted phrase counting only when it appears as a phrase — then by rank. 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.

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

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/closed-world, and the description adds substantial non-obvious behavior: match_mode semantics with all four values explained, automatic court-shorthand expansion reported as expanded_query, terms_matched ranking order, nearest-number suggestions for bare citations, and the interpretive rule that a low top rank means no on-point statute. This is exactly the extra context the annotation bar invites.

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?

Long but front-loaded: purpose, routing rule, and return-shape caveat come first, then query syntax and match_mode details. Every sentence carries operational information (expansion, ranking, suggestions), though the match_mode enumeration and ranking explanation could be tightened.

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 clarifies the shape that matters (ranked fragments with highlights, not full text) and the fields an agent must react to (match_mode, expanded_query, suggestions). For a 4-param search tool this leaves no material gap.

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 25%, so the description must carry the load, and it does for the dominant parameter: query syntax (quoted phrases, -exclusions, `or`), shorthand expansion and how the query is interpreted. However, limit, chapter and include_repealed are never addressed; 'the law in force today' only implicitly signals include_repealed=false, and chapter scoping is unmentioned.

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 and resource ('Search North Carolina (NC) statutes') plus scope ('by topic, keyword or phrase') and instantly separates itself from get_statute by citation-vs-subject framing. An agent can distinguish it from every sibling without reading schemas.

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?

Explicit when-to-use ('when you know the SUBJECT but not the citation') with concrete example queries, and an explicit when-not with the named alternative ('If you already have a citation, use get_statute instead'). It also tells the agent what to do next after a hit (pick one, call get_statute).

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. 4 tool updates
    • Changedamendment_history1 field changed
      • changedInput schema / properties / citation / examples
        Previous value: -[
        -  "14-33",
        -  "G.S. 20-141"
        -]New value: +[
        +  "14-33",
        +  "G.S. 20-141",
        +  "1A-1, Rule 46"
        +]
    • Changedcross_references1 field changed
      • changedInput schema / properties / citation / examples
        Previous value: -[
        -  "15A-145.5",
        -  "G.S. 1A-1"
        -]New value: +[
        +  "15A-145.5",
        +  "G.S. 1A-1",
        +  "8C-1, Rule 702"
        +]
    • Changeddiff_statute1 field changed
      • changedInput schema / properties / citation / examples
        Previous value: -[
        -  "14-78",
        -  "G.S. 14-33"
        -]New value: +[
        +  "14-78",
        +  "G.S. 14-33",
        +  "1A-1, Rule 12"
        +]
    • Changedget_statute2 fields changed
      • changedInput schema / properties / citation / description
        Previous value: -"One NC General Statutes SECTION. Any spelling works; subsections do not — ask for 20-141, not 20-141(j1)."New value: +"One NC General Statutes SECTION, or one rule of the Rules of Evidence or Civil Procedure (\"8C-1, Rule 104\", \"N.C. R. Civ. P. 12\"). Any spelling works; subsections do not — ask for 20-141, not 20-141(j1), and 1A-1, Rule 12, not Rule 12(b)(6)."
      • changedInput schema / properties / citation / examples
        Previous value: -[
        -  "14-72.1",
        -  "G.S. 14-72.1",
        -  "§ 14-72.1",
        -  "15A-145.5"
        -]New value: +[
        +  "14-72.1",
        +  "G.S. 14-72.1",
        +  "§ 14-72.1",
        +  "15A-145.5",
        +  "8C-1, Rule 104"
        +]
  2. 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.
    180 npm
    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.
    214 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Directories

Resources