For · legal tech & agents
Your model will cite a statute. The question is whether it can prove it.
A language model asked for law produces something statute-shaped every time, including for jurisdictions nobody has ever digitised. That is the failure this API is built against. Ground the answer in a record with a source URL, a retrieval time, a content hash and a validity window — and when the record does not exist, get told so in a shape your code can branch on.
“Can my agent hand a human a citation that checks out?”
every response carries provenance.sourceUrl, retrievedAt, contentHash, versionLabel
“What happens at the edge of coverage?”
404 not_carried — stop, the material is not in the corpus
“And inside coverage, for a citation we do not hold?”
404 no_edition_on_file, with didYouMean[] suffix matches that are never auto-applied
“How do I know what you have before I build on it?”
GET /v1/law/coverage and GET /v1/law/quality — both public, both unmetered, neither needs a key
What it takes
The corpora this runs on, named.
Statutes
1,946,798
read 2026-09-26
Regulations
1,066,551
read 2026-09-26
Court rules
49,704
read 2026-09-25
Sentencing Guidelines
416
read 2026-09-20
One call shape reaches all of it. Change corpus and the citation grammar changes with it — 768.28, 42-418.24, frap-32, ussg-2b1.1 — but the envelope, the provenance block and the miss contract do not.
Jurisdiction codes are not uniformly two letters, and code that assumes they are will break: us is federal, us-ca9 is the Ninth Circuit, whose pattern instructions bind neither a state nor the whole federal system.
Worked
Real calls, real records.
(1) Unfair methods of competition, unconscionable acts or practices, and unfair or deceptive acts or practices in the conduct of any trade or commerce are hereby declared unlawful.
- citation.display
- § 501.204, Fla. Stat.
- catchline
- Unlawful acts and practices.
- status
- active
- validFrom → validTo
- 2017-07-01 → present
- temporalBasis
- compiled-edition
- provenance.sourceSystem
- flsenate.gov
- provenance.versionLabel
- 2017
- provenance.retrievedAt
- 2026-07-22
- provenance.contentHash
- 949ab03cdfa96589734237a616008373873ba4d333a990eb0c2ea7cce8c82bf3
Florida publishes a compiled edition, so the validity window is edition granularity and the response says so rather than implying act-level precision.
check this record →- error.code
- not_carried
- error.message
- binding.law does not carry FL rules. This is a stated gap, not a lookup failure: nothing of that material for that jurisdiction is in the corpus, so no citation within it can be confirmed or denied, and nothing found elsewhere on the open web carries binding.law's authority. See /v1/law/coverage for what is carried.
not_carried means stop. The material is not in the corpus at all, so no citation inside it can be confirmed or denied.
- error.code
- no_edition_on_file
- error.message
- binding.law carries FL statutes, but has no section matching 768.99 on file for 2026-09-14. We never resolve to a nearest edition. Coverage begins at the date reported for FL statutes in /v1/law/coverage; a citation outside that window, or a key in a different form, both land here.
- error.didYouMean[]
- { citationKey, citationDisplay } — suffix matches, up to five, never auto-applied
no_edition_on_file means look again. We hold the material but not that citation, or not for that date — and we will not round to the nearest edition on your behalf.
What this does not do
binding.law does not run agents, summarise, advise, or decide what the law means. It serves records. Synthesis is your product's job, and keeping that line is what lets us sell to companies that would otherwise be competing with their own vendor.
There is no published client library. The API is HTTP with a bearer token and a JSON body; the MCP server is streamable HTTP at https://mcp.binding.law. Bulk export and an AI-training licence are separate grants under an Enterprise agreement — API access alone does not include the right to train on the corpus. Pricing has the terms.
$ https://mcp.binding.law
lookup_law(jurisdiction, citation, corpus?, asOf?) — one section, full text and provenance
get_law_text(jurisdiction, citation, corpus?, asOf?) — the same section, compact — for quoting
search_law(q, jurisdiction?, corpus?, asOf?, limit?) — ranked hits with highlighted snippets
lookup_citation(text) — case citations resolved against the caselaw replica
law_coverage(—) — what is carried, and from when
law_quality(jurisdiction?, history?) — our own audit of where the corpus is thin
Six tools, narrowly named. Over REST the coverage and quality endpoints need no key; over MCP every tool does, because an MCP client that can call one tool can call all of them.