The 13 tools

The same surface over REST and MCP. Every one returns a Trust Envelope; every price below derives from the live charging table rather than being written here.

Verification

The core. These are the calls that produce labels and evidence.

ToolWhat it doesPrice
verdict_check_citationsPOST /v1/citations/verifyExtract citations from text (or take a list) and verify each: cases, U.S.C. sections, C.F.R. sections and parts, and named federal court rules. Opt-in treatment=true adds beta reliance signals. Opt-in propositions=true adds an advisory proposition-support check.3¢ per citation
verdict_check_quotesPOST /v1/quotes/verifyVerify quoted passages appear verbatim in the cited sources — the fabricated-quote-on-a-real-case class.7¢ per quote
verdict_check_briefPOST /v1/briefs/verifyWhole-brief run (citations + quotes) returning a certification block. Large briefs run as jobs.$9.95 flat
verdict_check_ai_outputPOST /v1/ai/verifyBrief engine tuned for AI drafts; adds typed hallucination rollups. Advisory labels are excluded from the rollup.$4.95 flat
verdict_get_reportGET /v1/reports/{id}Poll or fetch an async brief report. The job was charged once, at submission — polling costs nothing.Free

A citation we cannot decide costs 1¢ instead of 3¢, and a quote we cannot resolve costs 1¢. Brief certification includes 150 citations, then 3¢ each.

Retrieval

ToolWhat it doesPrice
searchGET /v1/search?q=Search cases by name.3¢ per query
fetchGET /v1/cases/{id}/textFull opinion text by canonical id.2¢ each
verdict_get_caseGET /v1/cases/{id}One case by canonical id or citation. Opt-in blocks: treatment, authorship, cited_for, disposition.2¢ each
verdict_get_casesPOST /v1/cases/batchUp to 500 canonical ids per call — the reconciliation-sweep tool. Opt-in treatment=true adds the same beta reliance-signal block to every found record.2¢ per FOUND record
verdict_get_lawGET /v1/lawFederal regulations (CFR) by citation via eCFR, versioned by an as-of date: sections and their paragraph pins, whole parts and subparts (existence, heading, section count and state — no part text), part appendices and their items, and section appendices. An as-of date eCFR cannot serve is a coverage gap, never a miss. U.S.C. citations are a gap here — the statute lane in citation checks covers them.2¢ each

Batch is billed per record found, not per id submitted — a sweep over ids that are not in the corpus is not charged for the misses. A treatment batch settles to 2¢ per record found plus 2¢ per record the citation graph could enrich; the escrow is taken at the ceiling for every id submitted and the difference is returned at settlement.

Citability (beta). A secondary-corpus decision of a covered court that the issuing court itself stamped as non-citable in unrelated cases carries that stamp, quoted verbatim, with the court’s rule as read at source. Seven courts’ rules of 53 catalogued are read; a record without a stamp, or outside those courts, is never called citable; a stamp the record shows was later published is served as superseded with the bar not applied; the block changes no verification label.

Later decisions (beta, review only). For a court record, the later decisions of the same litigation that cite it from a higher court of the same system, or the Supreme Court of the United States, are listed with their court, date, caption and the verbatim disposition sentences of their opinions, together with the detector’s read of what that court did to this decision: reversed or vacated in whole or in part, affirmed, no disposition readable, or set aside with the reason. The block is a lead to read, never a verdict on the record: its status is always review, no verification label moves, nothing accuses, and an absent block says nothing, because a reversing decision often does not cite the one it reversed. Never cite a record as reversed or as affirmed on this block alone.

Platform

ToolWhat it doesPrice
verdict_verification_logGET /v1/logs/{request_id}The audit record behind any prior response. Returns a ledger row wrapping the stored Trust Envelope.Free
verdict_accountGET /v1/accountBalance, usage, keys and packs.Free
verdict_coverageGET /v1/coverageCorpus coverage by jurisdiction — check what we cover before you spend anything.Free

A brief or AI-output job is charged once, at submission. Polling its report by id costs nothing however often you poll, and the report's own meter is the read's (zero), not the job's — the job's charge lives on the submission envelope and in its verification-log entry. Account reads are free the same way. Every “Free” above is a zero-priced row in the same manifest as every other price on this site, never an inference.

Console metrics live at GET /v1/account/usage?window=7d|30d|90d (free, REST only — dashboards, not agents). It is rate-guarded: fetch it per navigation, never on a timer, and honor Retry-After on a 429.

What a citation check reads

Each sentence below is the engine’s own statement of an outcome, and each finding it names is a review finding — never a fabrication claim. A coverage gap is never called a fabrication.

  • A citation check examines every C.F.R. citation in the text against eCFR at the section level — a regulation that exists is verified with its eCFR record, an absent one is accused with evidence after eCFR’s version history and, at the current edition, the Federal Register have been consulted, a rescinded one is reported as superseded, and one the tool could not examine is reported as a coverage gap by name.
  • A citation to a whole C.F.R. part or subpart is checked against eCFR’s own structure: whether it exists, its heading, how many sections it holds, and whether it is reserved or was rescinded.
  • A C.F.R. citation that pins a paragraph — § 164.508(b)(4)(ii) — is checked against eCFR’s own paragraph identifiers; an existing paragraph’s text is served, a paragraph that does not exist under a real section is flagged for review with the section’s actual subdivisions named.
  • A U.S. Code citation that pins a paragraph — 15 U.S.C. § 1692g(a)(1) — is checked against the U.S. Code’s own structure; an existing paragraph’s text is served with its level, and a paragraph that does not exist under a real section is flagged for review with the section’s actual subdivisions named.
  • A citation that names a federal ruleset — Fed. R. Civ. P. 12(b)(6), Federal Rule of Evidence 403, Fed. R. App. P. 4, Fed. R. Crim. P. 11, Fed. R. Bankr. P. 3001 — is checked against that ruleset as published in the U.S. Code appendix; a rule number the ruleset does not hold is flagged for review, and when the number belongs to a sibling ruleset the evidence names it. A held rule is verified_rule_exists, a success label, and the check carries no charge.
  • A citation whose two parties are named in the opposite order from the reporter’s caption is flagged for review, with both captions quoted.
  • A citation that names the United States where the reporter names a state, or the reverse, is flagged for review and the document is demoted.
  • With propositions=true, a citation check compares what a sentence says a verified case stands for with court-authored descriptions of what that case has been cited for, and reports whether a description matches — with the matching description quoted — or that none does. The result is advisory: a clean verdict never rests on it, and it is not a finding about what the case holds.

What a quote check reads

  • A quotation is checked against the case the document attributes it to — the law, record, brief or party the sentence names owns its own words and those are disclosed as not checked, never accused.
  • In paginated text (form feeds, as a PDF extraction carries) a page break is a review boundary: a pairing that depends on text across a page is review, never an accusation.
  • A quotation with a bracketed alteration or an ellipsis is matched and reported as a review tier (alteration / ellipsis), never as verified.

Spans in the response are code-point offsets into your text after newline normalisation; a consumer that indexes UTF-16 code units must convert.

Measured, in the engine’s words: 152 adversarial review passes over the lane (pass 152 the last before this release), every reviewer probe kept: 1,179 permanent test rows in 528 tests, 30,828 pinned reviewer probes re-run on every change (0 outcome changes at ship), head/tail invariance over 30,357 probes, a quote-text invariant (served words equal the caller's characters) over 32,680 served quotations, 37 wrap-width sweeps (25–110 columns), 19 metamorphic families (about 1.9 million transformed documents at each close run).

Request ids are safe to share

A request_id identifies a record only to the account that created it. The lookup is scoped to the calling principal in the query itself, so an id belonging to someone else returns the same “no verification record” answer as an id that never existed — there is no existence oracle.

Paste one into a support ticket or a bug report without worrying that it exposes the underlying record. It is an identifier, not a credential — and unlike an API key, it grants nothing.

Errors are structured

Every error carries error.kind and a message. A caller error is 400 invalid_input, and REST validates every typed argument against the tool’s schema before any charge, so a malformed body is never billed. 404 not_found is reserved for a resource you addressed that does not exist for you: a case that is not in the corpus, or its opinion text; a report or verification-log id that is not this account’s; a key prefix with no active key. Text you supply inside a citation never changes the status. Treat the set of kinds as open: a kind you do not recognize is a non-retryable caller-side condition unless the status is 5xx, internal is always a structured envelope (never a raw traceback), and rate_limited always carries Retry-After.

Retries and replays

Retries never double-charge
Idempotency is server-enforced: a retried request replays rather than re-billing, and the envelope says so with meter.replayed: true. Verification tools replay identical requests for 24 hours; log reads replay for 1 minute. The same window is why you must not probe “did the fix land?” with a byte-identical request — you will get the replay, not a fresh answer.

A verification that ran and was charged but whose stored result cannot be served answers a structured error.kind: internal carrying the request id, and the charge is refunded to your balance automatically. The verification log keeps the record with state refunded; a refunded record never replays, so a retry re-runs the verification. Every envelope also carries audit.guidance_version, the contract it was issued under; validate a stored record against the version it names, not the current one.