Skip to main content
Glama

Audit every citation in a brief

check_brief
Read-onlyIdempotent

Audit ALL citations in a draft brief, motion, or memo at once (wraps syfert.com Brief Check). Extracts every reporter citation, verifies each exists, checks the case name the document claims against the real case (hallucination detection), checks each quoted passage word for word against the cited opinion's own text (misquote = not in that opinion; unquoted_by_courts = the text could not be compared and no court has quoted those words from the case: check it with verify_quote), traces an unmatched quote to the case the language actually ORIGINATES in (quote_origin: attribute with "(quoting …)" or cite the source), and returns treatment flags with replacement suggestions for red-flagged authority. Also audits every STATUTE, REGULATION and COURT-RULE citation in the document against the corpus that holds it, reported separately under "statutes" (verified=false means not found in that corpus, which is not proof the section is wrong). ALWAYS run this on a finished draft before delivering it. Use mode=attack on an OPPONENT's brief to get ammunition: distinguishing and criticizing citers for each of their cites. Text over the size cap (128KB anonymous, 512KB with a token) is cut before the audit and the response then carries stats.truncated_bytes plus an INCOMPLETE AUDIT warning. corrections lists every quote the cited opinion does not carry verbatim, with replace_with (the opinion's own words, or, for verdict statute_text / statute_misquote / rule_text, the statute's or rule's own words) and star_page, and every unresolved or name-mismatched citation. Each unresolved citation carries verdict (exists_unindexed = a real case our index lacks, confirmed by a citing opinion or by name -- keep it; not_indexed = unknown, weigh volume_coverage (thin 2019+ volumes make a miss weak evidence); interior_mismatch/strong = likely fabricated), so do not report every unresolved cite as a hallucination (MCP13_20260925). A pinpoint page written as a citation of its own is status pin_reference (stats.pin_references, not unresolved) and its correction gives cite_as (first page, then pin). Public-domain cites ("2023 IL App (1st) 220520", "2023-Ohio-1234") are read like reporter cites, and a paragraph pinpoint ("¶ 45", "¶¶ 12-14") is checked against the opinion's paragraph numbers: cites[].para_pin.verdict interior_pin / interior_mismatch, quote_checks[].para_pin.inside says whether a quotation sits in the pinned paragraph; a mismatch is also a correction (MCP17_20260925). Each verified statute finding carries currency (edition, current-through, last amendment where recorded) and statutes.corpus_currency the edition of each corpus: a brief about past conduct needs the text in force on the operative date (check_citation or get_statute with as_of). Pass forum (the court you will file in, e.g. forum="ca9" or forum="fl") to have each unpublished cited case checked against the citation rules of that court: cites[].citability.forum.may_cite is yes / persuasive / conditional / no, or unsure when our verified rules data cannot settle it for that court (it says why: another court system, a district court applying a circuit rule, a pre-2007 federal disposition in another circuit, or a rule that is an open question on the citability review page). An unresolved citation printed in the corpus only by opinions that say it does not exist (sanctions / show-cause orders on fabricated citations) is verdict strong, verdict_evidence cited_as_fabricated, with fabricated_citers. Case rows with a non-green flag carry treatment.flag_reason. A former U.S. Code appendix cite is listed with status former_appendix and the current section. Each pinpoint cite also carries cited_for: what citing courts cite that page for (G-Cite page label, n_citing). When the brief's sentence fits that page poorly and another page of the same case clearly, verdict proposition_mismatch names suggested_pin_cite: a suggestion to read that page, never a correction to apply unread; the citation itself stays verified. Each case cite with a proposition also carries cited_for_check when the brief's point differs in structure from what citing courts cite the case for: proposition_contradicted (courts cite it for the opposite), proposition_entity_mismatch (a different amendment, statute section, burden or standard), proposition_uncited (nothing like it); confidence hard = a correction, advice = a note. A cite whose support_check says available can be laid out next to its sentence with context_detector.

Input Schema

NameRequiredDescriptionDefault
modeNodefend (default): audit your own draft. attack: treat the text as the opponent's brief and return ammunition against their cites.
textYesThe full document text (up to 512KB)
forumNoOptional. The court the document will be filed in: a court id (fla, ca9, texapp, flsd, scotus) or a two-letter state code / state name (fl, TX, New York). Unpublished cited cases are then checked against the citation rules that apply in THAT court (cites[].citability.forum); without it the issuing court's own rule is reported.
max_citesNoMax citations to process (default 100, max 200)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / forum
      Added value: +{
      +  "description": "Optional. The court the document will be filed in: a court id (fla, ca9, texapp, flsd, scotus) or a two-letter state code / state name (fl, TX, New York). Unpublished cited cases are then checked against the citation rules that apply in THAT court (cites[].citability.forum); without it the issuing court's own rule is reported.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare a safe, idempotent read operation, yet the description adds substantial behavioral context beyond them: truncation caps (128KB anonymous / 512KB with token) with stats.truncated_bytes and an INCOMPLETE AUDIT flag, the full verdict taxonomy, and how unresolved cites should be interpreted. This is far more than the annotations supply.

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

Conciseness2/5

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

The description is a single paragraph of roughly 600 words with no bullets or breaks, so it is neither front-loaded nor easily scannable. While much of the content is non-redundant, the volume and run-on structure impose real parsing cost on the agent.

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?

There is no output schema, so the description carries the full burden of describing returns, and it does so exhaustively: corrections, verdict taxonomy, statutes section, citability, cited_for, treatment flags, and currency fields. Nothing essential for correct invocation appears missing.

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 100%, so the baseline is 3, but the description enriches parameter meaning well beyond the schema: it explains mode=attack as treating text as the opponent's brief, and gives concrete forum examples ('ca9', 'fl') plus the behavioral effect of omitting it. max_cites semantics are left to 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 opening sentence states a specific verb and resource ('Audit ALL citations in a draft brief, motion, or memo at once') and immediately distinguishes itself from siblings by naming the wrapper and the batch scope versus check_citation/verify_quote. An agent can tell this audits an entire document rather than one citation.

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 explicit when-to-use ('ALWAYS run this on a finished draft before delivering it'), an alternative mode for the opposite use case ('Use mode=attack on an OPPONENT's brief'), and routes specific sub-cases to siblings ('check it with verify_quote', 'check_citation or get_statute with as_of'). This is unusually complete guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources