ndlaw
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NDLAW_DB | No | Path to opinions.db on the server. | bundled / app-data |
| NDLAW_HOST | No | Bind address for HTTP/SSE transport. Keep 127.0.0.1 for local-only access. | 127.0.0.1 |
| NDLAW_PORT | No | Bind port for HTTP/SSE transport. | 8000 |
| NDLAW_AG_DB | No | Path to ag_opinions.db (Attorney General opinions corpus). | bundled / app-data |
| NDLAW_NDCC_DB | No | Path to statutes.db (N.D.C.C. corpus). | bundled / app-data |
| NDLAW_RULE_DB | No | Path to rules.db (court-rules corpus). | bundled / app-data |
| NDLAW_ADMIN_DB | No | Path to admincode.db (Admin. Code corpus). | bundled / app-data |
| NDLAW_CONST_DB | No | Path to constitution.db (ND Constitution corpus). | bundled / app-data |
| NDLAW_TRANSPORT | No | Transport mode: 'http' for Streamable HTTP, 'sse' for SSE, anything else for stdio. | stdio |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lookup_opinionA | Look up an opinion by any citation (neutral cite, N.W.2d, N.W., etc.). Returns metadata and all known citations. Text is excluded by default to keep responses manageable — use include_text=True for the first text_limit characters, or get_opinion_text() to read in chunks. |
| get_opinion_textA | Read opinion text in chunks. Use this to read long opinions in manageable pieces. Start with offset=0 and advance by the limit to paginate through the text. |
| search_opinionsA | Full-text search across all opinions. Returns matching opinions ranked by relevance with snippets. Use this to find opinions on a topic, legal issue, or factual pattern. |
| list_opinions_by_dateA | List opinions filed within a date range. Returns opinions in reverse chronological order. |
| get_database_statsA | Get summary statistics about the opinion database. Returns counts, date range, and top authors. |
| justice_infoA | Get justice information — voting record for a specific case, or aggregate statistics across cases. If citation is provided, returns the voting record for that opinion. Otherwise, returns aggregate stats (authorship count, dissent rate, etc.) for the justice across all cases (optionally filtered by date range). Only covers opinions from 1997–present (neutral-cite era with voting data). |
| search_by_case_typeA | Search opinions by case type classification. Case types include values like 'Appeal - Criminal - Misc. Felony', 'Appeal - Civil - Constitutional Law', 'Original Jurisdiction', etc. Partial matches are supported. |
| get_citing_opinionsA | Find opinions that cite a given opinion. Returns opinions that reference the given citation in their text, ordered by date (newest first). Requires citation extraction to have been run (python -m ndlaw_mcp.cite_extract). |
| verify_citationA | Verify a citation or case name and return its canonical form. Confirms the case exists and returns the exact case name, filing date, authoring justice, and the full parallel-cite set in Redbook order, plus a ready-to-paste formatted citation. Catches wrong volume/page, wrong year, and name drift. If expected_case_name is supplied alongside a citation, the name as-written is compared to the canonical name and any drift is flagged. |
| get_parallel_citationsA | Return the complete parallel-cite set for a case, in Redbook order. Feed any one citation (or a case name) and get every known parallel cite so a draft's missing neutral or N.W. parallel can be auto-filled. Synthetic back-assigned [YYYY ND nnn] identifiers for pre-1997 opinions are returned separately and never folded into the formatted citation. |
| verify_quotationA | Confirm a quoted passage appears verbatim in a case, with pinpoint ¶. Locates the quote in the opinion text. Differences in whitespace, curly vs. straight quotes, and dash style are treated as still-verbatim; dropped, changed, or inserted words are flagged with a word-level diff and the closest actual text. Returns the pinpoint paragraph (¶) when the opinion carries paragraph markers (generally 1997+ opinions). |
| get_pinpointA | Resolve a pinpoint: paragraph number → its text, or quote → its ¶. Provide exactly one of |
| check_treatmentA | Citator: how later opinions have treated a case (KeyCite/Shepard's-style). Aggregates opinions citing the target and, for each, returns the citing sentence, its paragraph, and a CONSERVATIVE, NON-AUTHORITATIVE treatment signal scanned from that sentence alone. Possible-negative and distinguished items are surfaced first so they are never truncated away. IMPORTANT: signals are heuristic — a citing sentence may use a treatment word about a different case. This is NOT a "still good law" verdict. Always read the returned sentence and the full citing opinion before relying on it. |
| get_cited_authoritiesA | Outbound authorities a case relies on, grouped by type. Maps the authority graph around a case: cited cases (in-corpus ND opinions resolved to name/date/oid; others with a source URL), statutes (N.D.C.C.), court rules, constitutional provisions, and regulations — each with an official-source link where available. |
| case_summaryA | One-call bench-memo front matter for a case. Returns name, full caption, all parallel cites (Redbook-ordered; synthetic
[YYYY ND nnn] separate), date, author, panel, voting record, disposition,
paragraph count, syllabus points (pre-1953), and citation-graph counts.
|
| get_subsequent_historyA | Related opinions sharing the case's docket (rehearings, supplemental, etc.). Finds other opinions on the same docket number, ordered by date, with a relation hint. Docket-linking also surfaces companion opinions and same- docket duplicates, so this is a research aid — verify the relationship. |
| authoring_justice_on_issueA | Opinions a justice has authored on an issue (predictive bench-memo signal). Full-text searches |
| search_booleanA | Westlaw-style Boolean / proximity search. Connectors: |
| search_facetedA | Faceted opinion search: filter by metadata, optionally with full text. Any combination of facets may be supplied. With |
| find_opinions_construingA | Find opinions that cite/construe an N.D.C.C. section, court rule, or constitutional provision. Accepts forms like "14-09-06.2", "N.D.C.C. § 14-09-06.2", "chapter 28-32", "N.D.R.Crim.P. 12", "Rule 56 NDRCivP", or "N.D. Const. art. I, § 8". Returns the matched authority (or authorities, if the reference is ambiguous) and the opinions citing it, newest first. When the cited provision's corpus is installed, also returns the provision's own text. |
| get_notes_of_decisionsA | Annotated "Notes of Decisions" for a statute, court rule, constitutional provision, or admin-code section: every citing opinion with its citing sentences (verbatim, with ¶ pinpoints), the SUBSECTION each mention cites, and depth-of-treatment signals — a research view of how courts have applied the provision, grouped and ranked (vs find_opinions_construing's bare list). Per citing opinion: Signals are heuristic and NON-authoritative — read the returned context (and the full opinion) before relying on any of them. |
| get_provision_xrefsA | Cross-references between primary-law provisions: what a statute / court rule / constitutional / admin-code provision cites, and what cites it. Outbound: every provision this one's text references ("as defined in section 44-04-17.1", "subject to chapter 54-55"), resolved with heading and status where the target corpus is installed. Inbound: every provision — across ALL installed corpora — whose in-force text references this one: the admin-code rules implementing an enabling statute, every section incorporating a definition (the blast radius of amending it), rules citing a constitutional provision. Point-in-time: edges are asserted per text version, so |
| lookup_authorityA | Retrieve the text of a ND constitutional, statutory, court-rule, or administrative provision — optionally as it read on a specific date. Resolves citations like "N.D. Const. art. I, § 8", "N.D.C.C. § 12.1-20-03",
"N.D.R.Civ.P. 56", or "N.D. Admin. Code § 75-02-01". When For the Constitution, the 1889<->1981 renumbering is bridged automatically: a
modern cite ( Returns the provision text, heading, effective window, enacting/amending authority, source URL, and a count of opinions construing it. If the relevant corpus is not installed, says so. |
| constitutional_amendmentsA | List the chronology of amendments to the ND Constitution. Returns every amendment from ndconst.org's authoritative table (1889–present,
~167 amendments) with its effective date, election date, affected section(s),
subject, and a link to the enacting session law. Optionally filter by
effective-date range (ISO |
| get_authority_historyA | Show the amendment history of a ND constitutional, statutory, court-rule, or administrative provision — every version with its effective dates and the authority that enacted or amended it. Use this to see how a provision changed over time, then call
|
| search_authorityA | Full-text search across ND primary law (Constitution, court rules, statutes, administrative code). Searches provision text and headings. By default returns the version
currently in force; pass |
| more_like_thisA | Find opinions doctrinally similar to a given case (hybrid ranking). Blends two signals: co-citation (sharing the same cited authorities) and keyword overlap (shared salient terms). Each result reports both sub-scores so the ranking is explainable. |
| detect_overruled_in_draftA | Proofreading pass: flag cited cases that later opinions may have overruled, superseded, abrogated, or distinguished. Extracts every ND / N.W. / N.D. case citation in the draft, resolves each to a corpus opinion, and runs it through the citator. Cases with a possible- negative or distinguished signal are flagged with the citing context for human verification; the rest are reported as clear. IMPORTANT (same caution as the citator): signals are heuristic and
sentence-local, NOT a "still good law" verdict. ALWAYS read each flagged
entry — and the full citing opinion — before relying on it. Citations that
don't resolve to a corpus opinion (foreign/federal cases, or typos) are
listed under |
| check_draftA | One-call cite-check of a draft opinion, memo, or brief: verify every citation, every attributed quotation, negative treatment of cited cases, and the currency of cited authorities — a severity-ranked flag report. Checks (all on by default, select with Severities: S1 misquotation or quote-of-superseded-text · S2 citation doesn't resolve · S3 possible negative treatment · S4 authority currency / bad pinpoint · S5 name drift / missing neutral cite. Heuristic and NON-authoritative throughout: extraction is regex-based
(foreign/federal authority is listed as unchecked, not verified), quote
attribution follows the nearest-cite convention and can misattribute,
bracketed alterations and ellipses in quotes surface as differences, and
treatment signals are sentence-local. Read every flag's context before
acting on it. A draft spanning several operative dates needs per-authority
lookup_authority calls — |
| search_ag_opinionsA | Full-text search across ND Attorney General opinions (1942–present). The AG's published opinions construe ND statutes, the Constitution, court rules, and the open-records/open-meetings law. Returns matching opinions ranked by relevance with snippets. |
| lookup_ag_opinionA | Retrieve a ND Attorney General opinion by its number (e.g. "2015-L-12"). Returns the opinion's metadata, the ND primary-law authorities it cites (extracted cross-links), and optionally its text. |
| get_ag_opinions_citingA | Find ND Attorney General opinions that cite a given authority. Reverse index: give a statute, constitutional, court-rule, admin-code, or case citation and get the AG opinions that cite it. Statutory/constitutional citations are canonicalized against the installed corpora first, so "N.D.C.C. § 44-04-18" and "44-04-18" both resolve. |
| get_court_opinions_citing_agA | Find ND Supreme Court / Court of Appeals opinions that cite a given AG opinion. The inbound direction of the AG citation graph. Court opinions cite AG
opinions two ways — a docket cite ( |
| search_jeac_opinionsA | Full-text search across ND Judicial Ethics Advisory Committee opinions (1990–present). The committee's advisory opinions construe the N.D. Code of Judicial Conduct — recusal/disqualification, campaign conduct, extra-judicial activities. NOTE (per the committee): before relying on an opinion, compare its rule/canon references with the current Code — the Code has been restructured since many were issued. |
| lookup_jeac_opinionA | Retrieve a ND Judicial Ethics Advisory Committee opinion by number (e.g. "96-1" or "2016-2"). Returns the opinion's metadata (including the committee's question digest), the authorities it cites (Code of Judicial Conduct canons/rules, cases, statutes), and optionally its text. Two-digit and four-digit year forms both resolve ("96-1" == "1996-1"). |
| get_jeac_opinions_citingA | Find ND Judicial Ethics Advisory Committee opinions that cite a given authority. Reverse index over the committee's citations — most useful for Code of Judicial Conduct provisions ("N.D. Code Jud. Conduct canon 3"), but any rule/statute/case citation works. Old-form Canon citations (pre-2007 Code) are indexed at canon granularity. |
| get_court_opinions_citing_jeacA | Find ND Supreme Court / Court of Appeals opinions that reference a JEAC opinion (or the committee at all). The inbound direction of the JEAC citation graph. Courts rarely cite these by number — most references are descriptive prose ("The trial court contacted the Judicial Ethics Advisory Committee..."), captured with the surrounding text. Call with no opinion_number to list ALL court references to the committee, including unresolved prose references. |
| get_opinion_figuresA | List the figures reproduced in an opinion (plat maps, survey drawings, photos, diagrams, tables-as-image). Returns lightweight metadata for each figure — its index, kind, a descriptive caption, the PDF page, and dimensions. Fetch the actual image bytes for one figure with get_opinion_figure_image(citation, fig_index). The captions are our editorial descriptions (what the figure is), not the court's own text. Returns an empty list if the opinion has no figures (or if figures.db is not installed). |
| get_opinion_figure_imageA | Return one figure's image from an opinion, as viewable image content. Use get_opinion_figures(citation) first to see how many figures exist and their captions/kinds, then call this for a specific figure. One image per call keeps responses manageable. |
| get_opinion_tablesA | Return the reconstructed data tables in an opinion, structured for reading. Some opinions contain tables — numeric ones (apportionment counts, tax- redemption schedules, caseload statistics) and, from 2026 ND 34 on, tables whose cells are running text (a grid of case citations) — that flat opinion text renders as a scrambled run of cells. Those tables are reconstructed from a geometry-bearing source and served here structured. The opinion's own text_content carries the same table inline as a fixed-width block under a "[Table N]" anchor; this tool gives you a cleaner rendering for display or parsing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jet52/ndlaw'
If you have feedback or need assistance with the MCP directory API, please join our Discord server