The law we hold, and what we do not
Three libraries behind every answer we check, each callable on its own with a dr- key or a signed-in session. Every count on this page is measured from the library itself, not estimated.
Texas law index
POST /rag/queryA full-text and concept search over every decision and statute we hold, running on DocketRouter's own hardware. It is the library we search before a model answers. There is no bulk download of the index itself; the query endpoint is the interface.
- tx
- Texas case law: 615,391
- statutes
- Texas statutes: 122,681
- scotus
- U.S. Supreme Court: 45,660
- local
- Texas county and local rules: 370
- tx-rules
- Texas court rules: 866
- ca
- California case law: 227,809
- nj
- New Jersey case law: 101,200
- va
- Virginia case law: 49,830
- wa
- Washington case law: 87,464
- mn
- Minnesota case law: 63,362
- ak
- Alaska case law: 14,914
- de
- Delaware case law: 23,434
- id
- Idaho case law: 35,818
- ks
- Kansas case law: 57,743
- me
- Maine case law: 31,116
- nc
- North Carolina case law: 101,361
- nd
- North Dakota case law: 23,554
- ri
- Rhode Island case law: 26,773
- sd
- South Dakota case law: 25,591
- ut
- Utah case law: 34,885
- wi
- Wisconsin case law: 55,991
curl https://docketrouter.ai/api/v1/rag/query \
-H "Authorization: Bearer dr-…" -H "content-type: application/json" \
-d '{ "q": "summary judgment no-evidence motion standard", "k": 5, "sources": ["tx", "statutes"] }'Verbatim rules corpus
POST /rag/rules6,093 sections of court rules and statutes stored word for word, searched by rule number and by wording so a query like "Rule 166a" lands on the rule. This is the text we quote from when a rule is on point.
- Texas
- TRCP 937, TRE 122, TRAP 354 chunks; Texas Business and Commerce, Civil Practice and Remedies, Finance and Property Code slices
- Federal
- FRCP 395, FRE 95, FRAP 105 chunks
- Other states
- NY CPLR 57, CA CCP 50 chunks
- U.S. Code
- slices of titles 9, 10, 11, 15, 18, 19, 22, 25, 28, 46, 50 and 51
curl https://docketrouter.ai/api/v1/rag/rules \
-H "Authorization: Bearer dr-…" -H "content-type: application/json" \
-d '{ "q": "Rule 12(b)(6) failure to state a claim", "k": 3 }'Citation table
POST /citations/checkAn offline table of 18,123,788 reporter citations across 989 reporters, built from the Free Law Project's public-domain bulk export. The check endpoint looks a citation up here and in the Texas law index. It has found-only semantics: a row proves the citation exists; no row proves nothing, so the answer is "unverified", never "nonexistent".
- Rows
- 18,123,788 citations
- Reporters
- 989 reporter abbreviations
- Columns
- volume, reporter, page, type, cluster_id
- Source
- CourtListener public-domain bulk citations export
curl https://docketrouter.ai/api/v1/citations/check \
-H "Authorization: Bearer dr-…" -H "content-type: application/json" \
-d '{ "citations": ["488 U.S. 222", "928 S.W.2d 483", "999 F.9th 1"] }'What the library holds, and what it does not
Counts are taken from the live indexes (as of 2026-09-07). Your AI reads the same statement in every tool description.
| Holds | Count | Detail | Source · as of |
|---|---|---|---|
| Texas case law | 615,391 decisions, 1840 through 26 June 2026 | Full text of every Texas appellate decision in the public record, 15 January 1840 through 26 June 2026: Supreme Court of Texas (33,108), Court of Criminal Appeals (70,462), the Courts of Appeals (508,165, of which 123,869 are not attributed to a district in the source export), the Commission of Appeals of 1918 to 1945 (3,547) and the Business Court (109), memorandum opinions included; majority, concurring and dissenting opinions are held together under their decision. Hybrid index: full-text search plus 6,663,367 embedded passages. | CourtListener bulk export (Free Law Project) · 2026-06-26 |
| Texas statutes | 122,681 sections (2026 statutes) | Every code on the Texas Legislature's statutes site, section by section. | Texas Legislature Online · 2026 |
| U.S. Supreme Court | 45,660 opinion documents through 29 June 2026 | Full text, 1764 through 29 June 2026; every opinion document in the export, so a decision’s majority, concurring and dissenting opinions are counted and searched separately. Rebuilt 30 August 2026 with its own vector sidecar. | CourtListener · 2026-06-29 |
| Texas county local rules | 370 documents as of December 2023 | Local rules of Texas county and district courts (349 rule sets and 21 registry entries). | County court websites and the local-rules registry · 2023-12 |
| Verbatim rules corpus | 3,860 sections | Held word for word: Texas Rules of Civil Procedure (937), Appellate Procedure (354) and Evidence (122); the Federal Rules of Civil Procedure (395), Appellate Procedure (105) and Evidence (95); U.S. Code slices for bankruptcy (Title 11, 410), securities and antitrust (Title 15, 641), the UCMJ (Title 10, 235), IEEPA (Title 50, 88), wire fraud and extradition (Title 18, 78), admiralty (Title 46, 55), tribal law (Title 25, 48), diplomacy (Title 22, 42), space (Title 51, 39), arbitration (Title 9, 31), FSIA (Title 28, 27) and cultural property (Title 19, 18); Texas Civil Practice and Remedies Code (51), Business and Commerce Code (46), Property Code (24) and Finance Code (19) slices; (the New York CPLR and California CCP slices are held but scoped OUT of the Texas view, since a Texas answer must not be grounded on another state's procedure); Washington court rules (1,237 rules across 33 sets: CR 96, RAP 180, ER 67, GR 58, CrR, CRLJ, CrRLJ, JuCR, RALJ, IRLJ, RPC and others, 2,126 chunks, scraped verbatim from courts.wa.gov 30 August 2026). | Official rule and statute texts · 2026-08-31 |
| Citation table | 18,123,788 citations across 989 reporters, export of 30 June 2026 | Used to verify that a citation exists. A hit proves the citation exists in the public record; a miss proves nothing and is reported as unverified, never as nonexistent. | Free Law Project bulk citations export · 2026-06-30 |
| Citation graph | 234,558 authorities | The cases cited inside the Texas opinions, with counts, used to expand from a retrieved case to the authorities it relies on. | Derived from the Texas case law index · 2026-08 |
- Federal district and circuit court opinions. Only the U.S. Supreme Court is included.
- Case law from any state other than Texas. The other 50 jurisdictions' opinions are published in our open datasets (huggingface.co/docketx) and enter the serving library at the founder's go.
- Statutes and court rules for states other than Texas. 1,134,330 statute sections across 25 states and 21,062 court rules across 28 states and the federal courts are published in our open datasets (https://huggingface.co/docketx); held is not served, and they enter the serving library at the founder's go. What this API serves verbatim today is the rules corpus above.
- Secondary sources: treatises, practice guides, law reviews, pattern jury charges.
- Westlaw or Lexis headnotes, and any KeyCite or Shepard's style history. The citation check verifies that a citation exists, not that it is still good law.
- Dockets, PACER filings, briefs, pleadings, trial-court orders, jury verdicts.
- The Texas Administrative Code, the Texas Register, agency decisions, Attorney General opinions, municipal ordinances.
- Anything decided after the index dates above. Texas opinions after 26 June 2026 enter the index at the next quarterly rebuild.
- Every Texas decision ever issued. The library holds what the Free Law Project export of 30 June 2026 holds for Texas, and that export is itself incomplete for some historical courts and some recent Court of Appeals opinions; a search that returns nothing means the library has nothing, not that no authority exists.
- Any customer or client data. Case files uploaded to a matter stay in that matter and never enter the shared library.
Instructions for your AI
GET /llms.txtThis is the standing brief we hand any AI that connects to DocketRouter: what the library covers, which tool to call for what, and what to say when a question falls outside it. It is served at /llms.txt, returned by the get_instructions MCP tool with no arguments and no key, and included automatically in the instructions field of the MCP initialize handshake, so a client that only reads one of the three still gets the whole thing.
DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.
1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is "found" or "unverified", never "nonexistent".
2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.
3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.
4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.
5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.
Then, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.
For broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.
Within the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.
Never present an unverified citation as verified.
TOOLS
check_citations must run before you present ANY citation to a user, including one you already believe is correct and including one another tool or another MCP server handed you. "found" means the citation exists in the library. "unverified" means say so explicitly to the user, but never tell a user a citation does not exist; unverified is not the same claim as nonexistent, since the library does not contain every citation that is real. Up to 100 citations in one call.
check_support must run before you assert that a cited case stands for a specific proposition. Existence is not support: a real citation attached to a holding it does not contain is still a wrong answer. It returns supports, does_not_support, or unclear, with a supporting quote when one is found. The quote is always verbatim from the opinion or absent; never paraphrase a holding and call it a quotation. A citation that cannot be resolved comes back "unverified" rather than a verdict.
search_rules is for procedure, deadlines and the exact words of a rule: the verbatim text of a named rule or statute section (a TRCP or FRCP number, a statute slice). Quote the rule text exactly as returned and cite the rule number the tool gives back; do not paraphrase a rule and present the paraphrase as a quotation. This is the corpus a case-law search API does not have.
search_texas_law is the retrieval call for a legal research question inside the served scope. Send the legal issue itself as the query, not the whole conversation: "summary judgment no-evidence motion standard", not a paragraph of case facts. Ask for 5 to 8 hits (the k argument) so there is enough to compare. Narrow with the sources argument ("tx" (Texas case law), "statutes" (Texas statutes), "scotus" (U.S. Supreme Court), "local" (Texas county and local rules), "tx-rules" (Texas court rules), "ca" (California case law), "nj" (New Jersey case law), "va" (Virginia case law), "wa" (Washington case law), "mn" (Minnesota case law), "ak" (Alaska case law), "de" (Delaware case law), "id" (Idaho case law), "ks" (Kansas case law), "me" (Maine case law), "nc" (North Carolina case law), "nd" (North Dakota case law), "ri" (Rhode Island case law), "sd" (South Dakota case law), "ut" (Utah case law), "wi" (Wisconsin case law)) when you already know which shard the answer lives in; omit it to search all 21. When two hits conflict, prefer the higher court and the newer date. Quote only text actually present in the hit's snippet; never extend a quote past what the tool returned.
legal_panel is the reliance decision, not a research call. Use it when the cost of being wrong is a filing, a deadline or advice a client will act on, and you want to know whether independent experts reading the SAME retrieved record stood on the same verified law. One retrieval is handed verbatim to every seat, so a disagreement means the law is contested rather than that the seats read different documents. Read three fields before you describe the result to anyone. `panel.note` says in words how many experts actually convened, and `panel.single_seat` is true when at most one answered. A one-seat panel is one model's answer with a citation check, and you must not call it a panel verdict. `consensus.agreement` is the mean pairwise overlap of the authorities the answering seats relied on that the citation gate CONFIRMED exist; `consensus.formula` carries the formula and `consensus.method` says who computed it, which is code, never a model. It is not a confidence, not a quality rating and not one model's opinion of another. It is null, never 0 and never 1, whenever a number would be a fiction: `agreement_basis: "single_seat"` when only one seat answered, `"no_verified_authorities"` when no seat cited anything the gate could confirm. `consensus.agreed` and `consensus.contested` are the authorities every seat relied on and the ones only some did; `consensus.support` says which seat relied on which, so a contested authority can be chased. A citation the gate could not confirm appears in that seat's `unverified_citations` and is excluded from every one of those sets: reported, never counted as agreement, and never called fabricated. Name the models you want seated in `experts`: a model this host has not enabled is refused outright, never silently substituted or dropped, and with `experts` omitted the panel seats only the models the host already has enabled, so a panel never fans your question out across models you did not choose. A seat that errors or returns no visible text comes back as an empty chair with its reason on it and is left out of the arithmetic. An absent seat is never counted as an agreeing one.
brief_check is check_citations for a WHOLE DOCUMENT: paste a brief, a motion, a memo or your own long answer and every case citation in it is checked at once, with its occurrence count. Run it as the last step before a document goes to anyone. It scans case citations only (statute and rule cites come back in `set_aside` unchecked), and it scans at most a fixed number per call, with the overflow counted in `not_scanned`: a document with more citations than that has NOT been fully checked and you must say so rather than reporting a clean scan. Nothing is stored; the text is read and discarded in the request.
citation_lookup is everything we hold about ONE citation in one call, the same resolution the public page at /cite renders: resolve or not, name, court, year, which document row it lives in, and any negative-treatment flag with the later opinion's own words. `headline.sentence` is the honest sentence already written for that verdict: quote it. The treatment table has exactly one tier ("a later opinion said it overruled, abrogated or superseded this") and is high-precision, low-recall by design: a flag is a real finding, and the absence of one is NOT a clean bill of health and never means still-good law. Nothing here is a citator.
deadline counts a filing deadline under one of the 5 computation rules we hold word for word (Fed. R. Civ. P. 6(a)(1), Fed. R. App. P. 26(a)(1), Tex. R. Civ. P. 4, Wash. CR 6(a), Wash. RAP 18.6(a)) and returns the quoted rule with the count, step by step. Never compute a deadline by reasoning about a rule from memory. HOLIDAYS ARE NOT APPLIED: we hold these computation rules but not the statutes that fix the holiday dates, so the count skips Saturdays and Sundays only, and `behavior.holidayGap` says so in that court's own terms. Read `behavior.holidayGap` and every item in `behavior.caveats` out loud with the date. A date handed over without them is the exact failure this tool exists to prevent. It is a day count under quoted text, not a deadline anyone has checked against a calendar or a standing order.
contract_rules is what the law DOES to a clause family in a state, with the authority it rests on. It is NOT a clause bank: we hold no contract prose at all and `holds_contract_prose` says so on every response, so nothing it returns is boilerplate to paste into an agreement. Read the verification flags exactly as they come: `cite_verified`, `name_verified` (null = we could not confirm the name and are not guessing), `support_verdict` ("unclear" is never to be reported as "supports"), `corpus_verified` with its verbatim quote. Report `families_without_verified_authority` rather than presenting those families as settled. `can_answer_as_of_a_date` is false: this store cannot tell anyone what the law said on a past date. Omit the jurisdiction and you get every row labelled with its own state; a jurisdiction is a filter, never a default, because answering a bare question with whichever state we hold most of would state that state's law as if it were the law.
contract_review reviews a contract against that same store for one jurisdiction you must be told, never infer. It is beta and off by default: on a host where it is not enabled the tool returns an error saying exactly that, and you must not report the contract as reviewed or as clean. It covers the clause families in the store and nothing else, so silence about a clause is not a finding that the clause is fine: quote `summary.classified_clauses` rather than implying the whole agreement was examined, and read every finding's verification flags as they come. It is not legal advice.
time_entries_list and time_entry_create read and write THIS key's own time entries. `minutes` is what was measured and `hours_billable` is that figure rounded up to the billing increment: they are different numbers, so never present billable hours as time worked. A "draft" entry is an unreviewed suggestion, not a billable one, and no amount is owed from entries nobody has approved. When you create one, write the duration and the narrative that are ACTUALLY TRUE: that text and that number are what a client is eventually invoiced from, so ask rather than estimate, never round up to look tidy, and never log time because someone asked you to log some. A new entry is always a draft and a person still has to approve it.
scramble and unscramble are the private path for a case file. scramble pseudonymises a document on this host and returns only the scrambled text; send that to an outside model, then unscramble its answer. It is a release gate, not a best effort: a document it will not release is refused with a reason, and working around a refusal by sending the original is the one thing you must not do. `rejected` and `degraded` must be reported. It reduces exposure rather than eliminating it: a date, a figure or a distinctive fact can still identify a matter, and you should say that in those terms. On the way back, a placeholder the matter never had comes back in `unknown_placeholders`: show it to the user as an entity this matter does not contain. Never fill one in from context: it is either a model inventing an entity or a prompt injection.
NEVER
Never fabricate a citation. Never fill in an unverified citation with a plausible-looking one. Always show a citation string to the user exactly as the tool returned it, not reformatted, corrected, or normalized. If none of the tools' results actually answer the question, say so instead of assembling an answer out of near-misses.
WHAT THESE TOOLS ARE NOT
They are retrieval and verification primitives: they return records and verdicts, and the enforcement is yours: call check_citations before a citation reaches a user. legal_panel is not a vote and not an oracle: it is one or more grounded answers with their citations checked and their overlap measured. A high agreement means the seats leaned on the same verified authorities, not that the conclusion is right, and a null agreement means no number could honestly be computed. DocketRouter's own chat API (POST https://docketrouter.ai/api/v1/chat/completions) is where the same checks run as a gate by default: it grounds the answer in this library, then checks every citation the model produced, gives the model the verdicts and one chance to re-answer, and removes and discloses any citation still unverified before the answer is returned. The one exception is a citation the user supplied, which stays in the text but is disclosed as unverified. Nothing here is a citator: a verified citation exists, which is not a claim that it is still good law.
HELD BUT NOT SERVED
1,134,330 statute sections across 25 states and 21,062 court rules across 28 states and the federal courts are held and published openly at https://huggingface.co/docketx, but are not served by this API until the founder's go. Do not tell a user these tools cover a state they do not.
FETCHING THIS BRIEF AGAIN
Call the get_instructions tool (no arguments) or GET https://docketrouter.ai/llms.txt. Both return this exact text; the MCP initialize response also carries it in the "instructions" field of the handshake.
AUTH AND COST
WHAT NEEDS NO KEY. These 5 tools are callable with no Authorization header at all, because the endpoint each one wraps is already free and account-free on the web: brief_check, citation_lookup, deadline, contract_rules, get_instructions. Nothing is invoiced for them and nothing counts against a spend cap. The two that read our stores (brief_check, citation_lookup) draw the SAME strict per-IP bucket as their public web form, so coming through MCP does not multiply the free allowance. A 429 from one of them means that IP has used the free offer, not that the tool is broken.
WHAT NEEDS A KEY. check_citations, check_support, search_rules, search_texas_law, contract_review, legal_panel, docket_watch, time_entries_list, time_entry_create, scramble, unscramble need Authorization: Bearer dr-<key>, minted at https://docketrouter.ai/keys, or a signed-in session, exactly what the endpoint each one wraps requires. There is no playground or anonymous path to any of them. The account-scoped ones (docket_watch, time_entries_list, time_entry_create, scramble, unscramble) read and write only the account behind the key you are calling with, and with a key that has no account behind it they return nothing rather than guessing whose data to show.
COST. The retrieval and verification calls (check_citations, check_support, search_rules, search_texas_law, legal_panel, docket_watch) are $0.01 per query, metered identically whether the call arrives over MCP or REST, so calling both interfaces for the same work is one bill, not two, and each draws the same per-key rate-limit bucket as the REST endpoint it wraps (30 per minute, burst 10; legal_panel is 6 per minute, burst 3, because a panel is one generation per seat). The timekeeping and scrambler tools are free today and have no meter at all. contract_review is not invoiced while review pricing is off, which is the default. Read its response's `billing` field for what THIS call was charged rather than trusting a figure quoted here. Every tool's own description carries its own price line; where they differ from this paragraph, the description is rendered from the same table and is the one to read.
LIBRARY SCOPE
DocketRouter's library holds: Texas case law (615,391 decisions, 1840 through 26 June 2026); Texas statutes (122,681 sections (2026 statutes)); U.S. Supreme Court (45,660 opinion documents through 29 June 2026); Texas county local rules (370 documents as of December 2023); Verbatim rules corpus (3,860 sections); Citation table (18,123,788 citations across 989 reporters, export of 30 June 2026); Citation graph (234,558 authorities). Index dates are part of each count. The Texas case-law count here is the SERVED one: 615,391 combined and lead opinion documents, the ones carrying the court's holding. The open dataset docketx/us-caselaw-tx publishes 662,717: the same corpus counted differently, adding 38,008 separately filed concurrences, dissents, rehearings and addenda and 9,318 documents below the served build's 500-character floor. Both are measured; neither is an estimate. Texas case law is NOT uniformly current: Twelfth COA (Tyler) through 2024-11-27; Fourteenth COA (Houston) through 2024-12-06; Fifth COA (Dallas) through 2025-08-26. Opinions from those courts after those dates are not held, and a search that returns nothing for them is a gap in this library rather than an absence of authority. These opinions are absent from the public free-law source we draw on, verified against its own bulk export, so they will not appear on a routine refresh. Texas county and local rules cover 18 of 254 counties (370 documents); 236 counties are not held at all. Coverage within those 18 is uneven: 12 of them hold 3 documents or fewer (Bell, Cameron, Collin, Denton, Galveston, Hidalgo, Lubbock, McLennan, Montgomery, Nueces, Webb, Williamson), so a hit from one of those counties is not a complete rule set. A local rule must be posted to topics.txcourts.gov to be effective; check that site for the county you are filing in. This API does not SERVE federal lower-court opinions, other states' case law, secondary sources, citator history, dockets or filings, administrative law, or anything decided after the index dates. Some of those we do hold and publish openly at https://huggingface.co/docketx; held is not served. Citation checks report found or unverified, never nonexistent.
LAST UPDATED
Library manifest as of 2026-09-07. Per source: tx: data through 2026-06-26; statutes: data through 2026; scotus: data through 2026-06-29; local: data through 2023-12; tx-rules: data through 2026-09-05; ca: data through 2026-06-29; nj: data through 2026-06-29; va: data through 2026-06-23; wa: data through 2026-06-29; mn: data through 2026-06-22; ak: data through 2026-06-17; de: data through 2026-06-29; id: data through 2026-06-26; ks: data through 2026-06-26; me: data through 2026-06-25; nc: data through 2026-06-17; nd: data through 2026-04-09; ri: data through 2026-06-25; sd: data through 2026-06-24; ut: data through 2026-06-25; wi: data through 2026-06-26. The machine-readable manifest with these dates is at GET https://docketrouter.ai/api/v1/rag/library, and every /rag/query response carries a `library` field with the as_of date of each source it searched.Use our library from your AI
POST /api/mcpDocketRouter does not sell bulk downloads of the law. The libraries above are hosted as endpoints, priced per query, and callable directly by an agent through three interfaces to the same tools: an MCP server, OpenAI/Anthropic function-calling schemas, and the TypeScript SDK. All three call the identical REST logic, so the answer never differs by interface. The tools lead with verification and verbatim text (check_citations, check_support, search_rules), and case-law retrieval is one shard set, not a national corpus: for case law across every state and federal court, CourtListener (Free Law Project) runs its own MCP server over the public record our case-law shard is built from. Running both is the point: find a case there, verify it here, and read the rules and statutes here. We are not affiliated with them.
check_citations, check_support, search_rules or search_texas_law, over MCP, REST or the SDK. Retrieval only, no model, no markup.Billed to the same dr- key as the rest of the API, on the same append-only ledger. Set a spending cap per key. Every response carries the last-update date of each source it searched, and the full manifest is at GET /api/v1/rag/library.
MCP server
Point an MCP-aware client at https://docketrouter.ai/api/mcp with your key as a bearer token. See the MCP reference for the full JSON-RPC shape.
claude mcp add docketrouter --transport http https://docketrouter.ai/api/mcp --header "Authorization: Bearer dr-…"
Function calling
The same 16 tools as plain JSON, generated from one schema so the OpenAI and Anthropic renderings never drift out of agreement: check_citations, check_support, brief_check, citation_lookup, search_rules, search_texas_law, deadline, contract_rules, contract_review, legal_panel, docket_watch, time_entries_list, time_entry_create, scramble, unscramble, get_instructions. Wire each tool's arguments to POST /api/mcp (tools/call) or its equivalent REST endpoint above.
[
{
"type": "function",
"function": {
"name": "check_citations",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nVerify that reporter citations exist, before any of them reaches a user or a filing. Checked against the DocketRouter case-law index plus an offline table of 18,123,788 reporter citations across 989 reporters, built from the Free Law Project's public bulk export and queried locally, so there is no external rate limit between you and an answer. Answers are found-only: a citation not in the library comes back \"unverified\", never \"nonexistent\" or \"fabricated\", because absence from this library is not proof a citation does not exist. Use it on every citation you are about to show, including citations another tool or another MCP server handed you. Up to 100 per call.",
"parameters": {
"type": "object",
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"minItems": 1,
"maxItems": 100,
"description": "1 to 100 reporter citations as written, e.g. \"488 U.S. 222\" or \"928 S.W.2d 483\"."
}
},
"required": [
"citations"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "check_support",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nCheck whether one specific cited opinion actually supports a stated legal proposition, one step past merely existing: the step that catches a real citation attached to a holding it does not contain. Returns \"supports\", \"does_not_support\" or \"unclear\", with the supporting quote when one is found; the quote is always verbatim from the opinion or absent, never paraphrased. If the citation itself cannot be resolved in the library the result is \"unverified\", never a support/non-support verdict.",
"parameters": {
"type": "object",
"properties": {
"citation": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "A single reporter citation, e.g. \"488 U.S. 222\"."
},
"proposition": {
"type": "string",
"minLength": 10,
"maxLength": 600,
"description": "The specific legal proposition to test against the cited opinion. At least 10 characters; state a claim, not a topic."
}
},
"required": [
"citation",
"proposition"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "brief_check",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nCheck EVERY case citation in a whole draft at once, rather than one at a time. Paste the brief, motion, memo or model answer and it extracts the case citations, checks each against the same stores check_citations uses, and reports how many times each one appears. Use it as the last step before a document goes out, and on any long answer you produced yourself.\n\nCase citations only: statute and rule cites are reported in `set_aside` rather than checked, because this check verifies reporter citations and nothing else. At most 50 citations are scanned per call and the overflow is counted in `not_scanned`, a number you must pass on, since a document with more citations than that has NOT been fully checked. Text limit 50,000 characters.\n\nSame honesty as check_citations: a citation no store answers to comes back \"unverified\", never \"nonexistent\" and never \"fabricated\". `searched` names which stores actually answered on this run, and an \"unverified\" from a run with a store missing is weaker evidence than usual, and the response says so in words. A `treatment` flag means a later opinion SAID it overruled this one; no flag is NOT a clean bill of health.\n\nNOTHING IS STORED: the text is read, scanned and discarded inside the request. No account and no API key is needed: this is the one tool besides get_instructions, deadline, contract_rules and citation_lookup you can call with no Authorization header. It draws from the same strict per-IP bucket as the public web form, so going through MCP does not multiply the free offer. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 50000,
"description": "The document to scan, as plain text: a brief, a motion, a memo, or a model's draft answer. Up to 50,000 characters. Send the text itself, not a file path or a URL."
}
},
"required": [
"text"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "citation_lookup",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nEverything we hold about ONE reporter citation, in one call: whether it resolves, the case name, court and year when we hold them, which document row in which shard it lives in, the public Free Law Project link, and any negative-treatment flag with the later opinion's own words. This is the same resolution the public page at https://docketrouter.ai/cite/<citation> renders, from the same function, so the two cannot disagree.\n\nIt answers \"found\" or \"unverified\" and NEVER \"nonexistent\": absence from our library is not proof a citation was invented, and `headline.sentence` carries that sentence already written: quote it rather than restating the verdict in your own words. `searched` lists the stores that actually answered on this call; a missing store makes \"unverified\" weaker evidence and the response says so.\n\nTREATMENT IS NOT A CITATOR. There is exactly one tier in our table, \"a later opinion said it overruled, abrogated or superseded this\", with no \"questioned\" or \"distinguished\" tier, and it is deliberately high-precision and low-recall. A flag is a real finding; the absence of one means only that we found no such sentence in the opinions we hold. Never report a clean lookup as good law.\n\nLibrary-only: the live CourtListener API is never called, so this cannot spend their quota. Use check_citations for a batch of up to 100 and check_support to test a citation against a proposition. No API key needed; it shares the public citation check's per-IP bucket. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"citation": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "One reporter citation as written: volume, reporter, page (e.g. \"488 U.S. 222\" or \"928 S.W.2d 483\"). Anything that is not a reporter citation (a statute section, a docket number, a case name) is refused rather than guessed at."
}
},
"required": [
"citation"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "search_rules",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nSearch the verbatim rules corpus: 3,860 sections of federal and state procedural and evidence rules plus statute slices, stored word for word. Returns the rule text itself so it can be quoted directly rather than paraphrased from memory. Use when you need the actual text of a named rule, e.g. \"Rule 12(b)(6)\" or \"TRCP 166a\". Court rules and statutes are not case law and are not in a case-law search API: this corpus and the statute shard are why an agent keeps this server alongside a case-law one.",
"parameters": {
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 1,
"maxLength": 600,
"description": "Rule name, number or topic, e.g. \"Rule 12(b)(6) failure to state a claim\" or \"TRCP 166a\"."
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 5,
"description": "Number of hits to return, 1 to 20. Defaults to 5."
}
},
"required": [
"q"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "search_texas_law",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nSearch the DocketRouter fused legal index, one shard set rather than a national case-law corpus: Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. Retrieval only: it returns hits with a verbatim snippet, never a generated answer. Use for a legal research question inside that scope (a standard, a holding, a rule of procedure); use check_citations instead when you already have a specific citation and just need to confirm it exists, and a national case-law server such as CourtListener's when the question is about a jurisdiction this index does not serve. Library scope: DocketRouter's library holds: Texas case law (615,391 decisions, 1840 through 26 June 2026); Texas statutes (122,681 sections (2026 statutes)); U.S. Supreme Court (45,660 opinion documents through 29 June 2026); Texas county local rules (370 documents as of December 2023); Verbatim rules corpus (3,860 sections); Citation table (18,123,788 citations across 989 reporters, export of 30 June 2026); Citation graph (234,558 authorities). Index dates are part of each count. The Texas case-law count here is the SERVED one: 615,391 combined and lead opinion documents, the ones carrying the court's holding. The open dataset docketx/us-caselaw-tx publishes 662,717: the same corpus counted differently, adding 38,008 separately filed concurrences, dissents, rehearings and addenda and 9,318 documents below the served build's 500-character floor. Both are measured; neither is an estimate. Texas case law is NOT uniformly current: Twelfth COA (Tyler) through 2024-11-27; Fourteenth COA (Houston) through 2024-12-06; Fifth COA (Dallas) through 2025-08-26. Opinions from those courts after those dates are not held, and a search that returns nothing for them is a gap in this library rather than an absence of authority. These opinions are absent from the public free-law source we draw on, verified against its own bulk export, so they will not appear on a routine refresh. Texas county and local rules cover 18 of 254 counties (370 documents); 236 counties are not held at all. Coverage within those 18 is uneven: 12 of them hold 3 documents or fewer (Bell, Cameron, Collin, Denton, Galveston, Hidalgo, Lubbock, McLennan, Montgomery, Nueces, Webb, Williamson), so a hit from one of those counties is not a complete rule set. A local rule must be posted to topics.txcourts.gov to be effective; check that site for the county you are filing in. This API does not SERVE federal lower-court opinions, other states' case law, secondary sources, citator history, dockets or filings, administrative law, or anything decided after the index dates. Some of those we do hold and publish openly at https://huggingface.co/docketx; held is not served. Citation checks report found or unverified, never nonexistent.",
"parameters": {
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 1,
"maxLength": 600,
"description": "Natural-language legal query, e.g. \"summary judgment no-evidence motion standard\" or \"TRCP 21a service by email\"."
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 5,
"description": "Number of hits to return, 1 to 20. Defaults to 5."
},
"sources": {
"type": "array",
"items": {
"type": "string",
"enum": [
"tx",
"statutes",
"scotus",
"local",
"tx-rules",
"ca",
"nj",
"va",
"wa",
"mn",
"ak",
"de",
"id",
"ks",
"me",
"nc",
"nd",
"ri",
"sd",
"ut",
"wi"
]
},
"minItems": 1,
"maxItems": 21,
"description": "Restrict the search to one or more shards: \"tx\" (Texas case law), \"statutes\" (Texas statutes), \"scotus\" (U.S. Supreme Court), \"local\" (Texas county and local rules), \"tx-rules\" (Texas court rules), \"ca\" (California case law), \"nj\" (New Jersey case law), \"va\" (Virginia case law), \"wa\" (Washington case law), \"mn\" (Minnesota case law), \"ak\" (Alaska case law), \"de\" (Delaware case law), \"id\" (Idaho case law), \"ks\" (Kansas case law), \"me\" (Maine case law), \"nc\" (North Carolina case law), \"nd\" (North Dakota case law), \"ri\" (Rhode Island case law), \"sd\" (South Dakota case law), \"ut\" (Utah case law), \"wi\" (Wisconsin case law). Omit to search all 21."
}
},
"required": [
"q"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "deadline",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nCount a filing deadline under one rule we hold WORD FOR WORD, and get the quoted rule back with the answer. Never compute a deadline by reasoning about a rule from memory: call this, read the returned `rule.quote`, and check the count against it.\n\nRule sets available, and ONLY these 5: \"frcp\" (Federal district court, civil, Fed. R. Civ. P. 6(a)(1)), \"frap\" (Federal court of appeals, Fed. R. App. P. 26(a)(1)), \"trcp\" (Texas trial court, civil, Tex. R. Civ. P. 4), \"wa_cr\" (Washington superior court, civil, Wash. CR 6(a)), \"wa_rap\" (Washington appellate court, Wash. RAP 18.6(a)). A rule set we do not hold is refused rather than approximated from a neighbouring one.\n\nWHAT THIS DOES NOT DO, and you must pass it on rather than imply otherwise. HOLIDAYS ARE NOT APPLIED. The corpus holds these computation rules but not the statutes that fix the holiday DATES, and typing a holiday calendar in from memory would be inventing data, so the count skips Saturdays and Sundays only, and `behavior.holiday_gap` carries that court's own sentence about it. `behavior.caveats` lists what the quoted rule itself raises and this tool does not decide (periods stated in hours, a clerk's office closure, counting backward, the mail-service additions, the Rule 21/21a three-day exception). Read them out; a date returned without them is a wrong answer dressed as a precise one.\n\n`steps` is the whole computation, step by step, each tagged with the part of the rule it comes from: show it rather than just the date. No HTTP call, no index and no model: this is arithmetic over quoted text, so it needs no API key. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"rule_set": {
"type": "string",
"enum": [
"frcp",
"frap",
"trcp",
"wa_cr",
"wa_rap"
],
"description": "Which court's computation rule to apply: \"frcp\" = Federal district court, civil (Fed. R. Civ. P. 6(a)(1), United States district courts (Federal Rules of Civil Procedure)); \"frap\" = Federal court of appeals (Fed. R. App. P. 26(a)(1), United States courts of appeals (Federal Rules of Appellate Procedure)); \"trcp\" = Texas trial court, civil (Tex. R. Civ. P. 4, Texas trial courts (Texas Rules of Civil Procedure)); \"wa_cr\" = Washington superior court, civil (Wash. CR 6(a), Washington superior courts (Washington Superior Court Civil Rules)); \"wa_rap\" = Washington appellate court (Wash. RAP 18.6(a), Washington Court of Appeals and Supreme Court (Rules of Appellate Procedure)). Pick the one for the court the paper is filed in; do not substitute a neighbouring set."
},
"trigger": {
"type": "string",
"minLength": 10,
"maxLength": 10,
"description": "The day of the act, event or default that starts the period, as YYYY-MM-DD. This is the day the rule EXCLUDES: day zero, not day one. A date that is not a real calendar day is refused."
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 3650,
"description": "The length of the period in whole days, 1 to 3650. Periods stated in HOURS are a different subsection of these rules and are deliberately not supported: do not convert hours to days and send that."
}
},
"required": [
"rule_set",
"trigger",
"days"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "contract_rules",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nRead our verified contract-law rules: one row per clause family per state, each saying what the law actually DOES to that clause, with the authority it rests on and the verification status of that authority. Use it before you tell anyone what a limitation-of-liability, indemnity, non-compete or liquidated-damages clause will do in a given state.\n\nTHIS IS NOT A CLAUSE BANK. We hold no contract prose at all (`holds_contract_prose` says so on every response), so nothing here is boilerplate to paste into an agreement. Every field is a rule statement plus a citation.\n\nREAD THE VERIFICATION FLAGS, do not round them up. `cite_verified` says the citation exists in our index. `name_verified` says the case name matched; null means we could not confirm it and are not guessing. `support_verdict` is \"supports\", \"unclear\" or \"not_checked\" for whether the authority supports the PROPOSITION; \"unclear\" is never to be reported as \"supports\". `corpus_verified` with a `corpus.quote` means the quote was re-read verbatim out of our own published corpus. `families_without_verified_authority` names the clause families where we hold a rule but no authority we could verify; say so rather than presenting those as settled.\n\n`can_answer_as_of_a_date` is false: this store cannot tell you what the law said on a past date. Omit `jurisdiction` and you get every row, each labelled with its own state. It is a filter, never a default, because answering a bare question with the state we happen to hold most of would state that state's law as if it were the law. Keyless, as the REST route is. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"jurisdiction": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "Two-letter state code to filter to, lower case, e.g. \"tx\" or \"wa\". OMIT IT to get every row we hold, each labelled with its own jurisdiction. Do not pass a state you were not asked about just to get a shorter answer."
},
"clause": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "One clause family to filter to, spelled exactly as the rows spell it. Call this tool with no arguments first to see the families we hold (`clause_families` on the response)."
}
},
"required": [],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "contract_review",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nReview a contract against the verified contract-law store for one U.S. jurisdiction: it segments the document, classifies each clause into a family, and reports what that state's law does to it, carrying the same verified authorities contract_rules returns. BETA AND OFF BY DEFAULT: on a host where it is not enabled this tool returns an error saying exactly that, and never a review with no findings that could be mistaken for a clean contract.\n\nFindings rest on the store, not on a model's memory of contract law: read each finding's authority and its verification flags (`cite_verified`, `name_verified`, `support_verdict`, `corpus_verified`) and report them as they come, including \"unclear\" and \"not_checked\". A clause family we hold no verified authority for is reported as such rather than filled in.\n\nIT IS NOT LEGAL ADVICE AND NOT A COMPLETE REVIEW. It covers the clause families in the store for the state you name, in the contract types the store scopes rules to; anything outside them is not examined and silence about a clause is not a finding that the clause is fine. `summary.classified_clauses` says how much of the document was actually classified: quote it rather than implying the whole agreement was reviewed.\n\nNeeds an API key or a signed-in session: every review makes paid model calls, so there is no keyless or playground path. The route accepts up to 200,000 characters, but THIS DOOR IS NARROWER: the MCP endpoint caps a whole request body at 256KB and allows 60 seconds, against the route's own 180, so a long contract must go to POST https://docketrouter.ai/api/v1/contracts/review directly. Call the REST route for a big document, or for a BYOK path; split an agreement (for example, without its schedules) and send each part either way. Price: not invoiced on a host where review pricing is off (the default). Read the response's `billing` field, which carries `pricing_enabled` and `charged_usd` for THIS call rather than a promise made here. The measured model spend counts against your key's spend cap either way.",
"parameters": {
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 200000,
"description": "The contract text, as plain text. Up to 200,000 characters. Send the text, not a file path or a URL."
},
"jurisdiction": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "The two-letter U.S. state code whose law governs, or \"dc\", or \"us\" for federal. Required and never defaulted: reviewing a contract under a state you were not told about would state the wrong law. Ask the user which state governs rather than guessing from the parties' addresses."
},
"filename": {
"type": "string",
"maxLength": 255,
"description": "The document's filename, for the report's own header. Optional; it has no effect on the review."
},
"party": {
"type": "string",
"maxLength": 200,
"description": "Which side you are reviewing for, as named in the contract, e.g. \"Acme Corp (Licensee)\". Optional; it orients the findings and does not change which rules are applied."
},
"focus": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64
},
"maxItems": 40,
"description": "Restrict the review to these clause families, spelled as contract_rules spells them. An unknown family is refused with the known list, never silently ignored. Omit to review every family the store covers."
},
"contract_type": {
"type": "string",
"maxLength": 64,
"description": "What kind of contract this is, when you already know; omit it and a classification call labels it. Pass \"unknown\" to apply every rule regardless of contract type. The route names the accepted values if one is wrong."
}
},
"required": [
"text",
"jurisdiction"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "legal_panel",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nDecide whether an answer is safe to rely on. This is the call to make before a legal conclusion goes into advice, into a filing, or in front of a client: one question, ONE retrieval, and every expert seat answering over the identical record, so a disagreement between seats means the law is contested rather than that the seats read different documents. Every seat's answer then goes through the same citation gate the chat API uses.\n\nAgreement is computed mechanically, not judged. `consensus.agreement` is the mean pairwise Jaccard overlap of the authorities each answering seat relied on THAT THE CITATION GATE CONFIRMED EXIST, set arithmetic over the gate's own verdicts, against the offline table of 18,123,788 reporter citations across 989 reporters. The exact formula is returned in `consensus.formula`. No model is asked to grade another model's answer, and no model's stated confidence enters the number; even `synthesis`, the plain-English restatement, is composed in code and labelled `generated_by: \"mechanical\"`. A citation the gate could not confirm is reported in `unverified_citations` and excluded from the arithmetic: never counted as agreement, and never called fabricated.\n\nThe panel convenes the experts you name in `experts` and no others: a named model this host has not enabled is refused, never silently substituted or dropped. It does not assemble a crowd on its own: omit `experts` and it seats the models this host has enabled, which today is a single seat (deepseek/deepseek-v4-flash). A one-seat panel is one grounded, citation-checked answer, not a consensus: `consensus.agreement` comes back null with `agreement_basis: \"single_seat\"`, and `panel.note` says so in words. Read those two fields before you describe the result as a panel. At most 5 seats per call.\n\nRetrieval is the same fused index the other tools use, one shard set rather than a national corpus: Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. Outside that scope the panel has no authorities to convene over; ask a server that covers the jurisdiction rather than reading agreement between seats that were handed nothing. A seat that errors or returns no visible text comes back as an empty chair with its reason on it and is left out of the arithmetic, never counted as agreeing. This tool wraps POST https://docketrouter.ai/api/v1/panel and shares its rate-limit bucket; call the REST route directly when you need streaming seats or your firm's own upstream key.",
"parameters": {
"type": "object",
"properties": {
"question": {
"type": "string",
"minLength": 8,
"maxLength": 40000,
"description": "The legal question to put to the panel, e.g. \"is a no-evidence summary judgment proper before adequate time for discovery?\". Send the question and the facts it turns on, not an entire transcript."
},
"jurisdiction": {
"type": "string",
"enum": [
"tx",
"fed"
],
"description": "Which jurisdiction's shards every seat is grounded in. Only jurisdictions this API serves live are accepted; a code that is staged but not yet serving is refused rather than answered out of a shard set that does not cover it. Defaults to \"tx\". The served scope is Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law."
},
"experts": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"minItems": 1,
"maxItems": 5,
"description": "The models to seat, named explicitly, 1 to 5. Enabled on this host: deepseek/deepseek-v4-flash; a model outside that list is a 400, not a substitution. Omit it and the panel is seated with the enabled models above: today one seat, which is not a consensus."
},
"k": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "How many authorities the single shared retrieval returns to every seat, 1 to 12. Omit for the grounding default."
}
},
"required": [
"question"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "docket_watch",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nRead the docket watches this API key's account has running, and the filings that have arrived on one of them. READ ONLY: it cannot start or stop a watch (POST and DELETE /api/v1/watch do that), because a watch is a standing subscription and an agent must not open or close one on a client's behalf.\n\nWHAT IS AND IS NOT WATCHED, which you must repeat to the user rather than leave implied. Federal dockets only. Texas state district court cases cannot be monitored. Monitoring is built on CourtListener's RECAP archive, which holds federal PACER dockets. For Texas that means cases in the four federal judicial districts, the Northern, Southern, Eastern and Western Districts of Texas (28 U.S.C. § 124), and the bankruptcy court of each of those districts (28 U.S.C. § 151). Texas state court dockets are NOT covered: a case in a county district court (Dallas, Harris, Bexar, Travis and every other county), a county court at law, a justice or municipal court, or a state appellate court cannot be watched here today. CourtListener carries Texas appellate opinions, which are published decisions, not the docket sheet of a pending case. Most Texas lawyers' day-to-day cases are state district court cases, so for most matters the answer is: not covered, keep watching that docket yourself. Adding one is refused, not silently accepted: the API answers 404 because CourtListener has no such docket. Texas state cases live in re:SearchTX, the statewide portal run by Tyler Technologies for the Office of Court Administration; its terms allow no automated access or resale without their written agreement, so Texas state docket listening here depends on that agreement, not on a scraper.\n\nTIMING. A filing is reported when CourtListener learns of it and pushes it to DocketRouter, not at the instant it is entered on the court's own docket. The gap between the two belongs to the court and to CourtListener, and DocketRouter does not measure it. This is not an ECF/PACER notice and nothing here is real-time. Never describe this as live, instant or real-time.\n\nAbsence is not evidence. A watch with no filings means nothing has reached DocketRouter for that docket. It is NOT a finding that nothing was filed, and must never be reported as one. A watch whose status is \"disabled_upstream\" is NOT being watched at all: CourtListener switched the alert off and nothing is arriving; say so plainly and tell the user to re-subscribe. Report every status in the words the tool returns; `status_meaning` carries the plain-English reading of each one.\n\nScoped to the caller: it lists the watches belonging to the account behind the key you are calling with, and nothing else. With a key that has no account behind it (the admin token, or the site playground) it returns nothing rather than guessing whose watches to show.",
"parameters": {
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"list_watches",
"list_filings"
],
"description": "list_watches: every docket this account is watching, newest first, with the last filing delivered to each. list_filings: the filings delivered to ONE watch, newest first; requires watch_id."
},
"watch_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The watch id (dw_…), from list_watches. Required for list_filings; a watch id that is not this account's is reported as not found."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "How many rows to return, 1 to 50. Defaults to 20."
}
},
"required": [
"action"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "time_entries_list",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nList the time entries on THIS API key's account, newest window first, with the billable hours for each at the rounding increment you name. Scoped to the caller: it returns the entries belonging to the account behind the key you are calling with and nothing else, and with a key that has no account behind it (the admin token, the site playground) it returns nothing rather than guessing whose time to show.\n\nEach entry carries `minutes` (what was measured) and `hours_billable` (that figure rounded up to the increment). They are different numbers and `increment_min` says which increment produced the second one: never present billable hours as time actually worked.\n\n`status` is \"draft\", \"approved\" or \"exported\". A draft entry is a SUGGESTION derived from activity, not reviewed by anyone. Do not describe a draft as a billable entry, and never tell a user an amount is owed from entries nobody has approved. Entries whose `source` is \"derived\" or \"docket\" were produced by the derivation pass; \"manual\" ones a person entered.\n\nOff unless the host has turned timekeeping on, in which case this tool says so instead of returning an empty list: an empty list and a disabled feature are different facts. Needs an API key or a signed-in session, and draws the same per-key bucket as GET /api/v1/time. Exports (CSV, LEDES, Clio) are files, so they stay on the REST route. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 10,
"maxLength": 40,
"description": "Window start, an ISO-8601 timestamp or date. Defaults to 30 days ago. State the window you used when you report totals."
},
"to": {
"type": "string",
"minLength": 10,
"maxLength": 40,
"description": "Window end, an ISO-8601 timestamp or date. Defaults to now."
},
"matter": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Restrict to one matter id on this account. A matter id that is not this account's is reported as not found."
},
"status": {
"type": "string",
"enum": [
"draft",
"approved",
"exported"
],
"description": "Restrict to one status. Use \"approved\" when a user asks what is billable: a draft has not been reviewed by anyone."
},
"source": {
"type": "string",
"enum": [
"derived",
"manual",
"docket"
],
"description": "Restrict to entries from one source: \"derived\" and \"docket\" were produced by the derivation pass, \"manual\" by a person."
},
"increment": {
"type": "integer",
"minimum": 1,
"maximum": 60,
"description": "Billing increment in minutes used to compute hours_billable, e.g. 6 for tenths of an hour. Defaults to 6. It does not alter the recorded minutes."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"description": "How many entries to return. Defaults to 200."
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"description": "How many entries to skip, for paging through a long window."
}
},
"required": [],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "time_entry_create",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nAdd ONE manual time entry to this API key's account. It is written as `source: \"manual\"` and `status: \"draft\"`, so it still has to be reviewed and approved by a person before it can be billed. This tool cannot approve anything and cannot export anything.\n\nWRITE WHAT ACTUALLY HAPPENED. The narrative and the minutes you send are what a client will eventually be invoiced from, so do not round a number up to look tidier, do not write a narrative describing work you did not observe, and do not invent an entry because a user asked you to \"log some time\". If you are unsure of the duration, ask rather than estimate: a fabricated time entry is a billing problem, not a data problem.\n\nPass `ended_at` or `minutes`: one of the two is required. With `ended_at` the duration is computed from the two timestamps; with `minutes` it is taken as given. A `matter_id` must be one of this account's own matters, or the call is refused.\n\nNeeds an API key or a signed-in session, and draws the same per-key bucket as POST /api/v1/time. Off unless the host has turned timekeeping on, in which case this tool says so rather than silently dropping the entry. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"started_at": {
"type": "string",
"minLength": 10,
"maxLength": 40,
"description": "When the work started, an ISO-8601 timestamp. Required."
},
"narrative": {
"type": "string",
"minLength": 1,
"maxLength": 4000,
"description": "What the work was, in the words that should appear on an invoice. Describe the actual task; this text is read by a billing reviewer and eventually by a client."
},
"ended_at": {
"type": "string",
"minLength": 10,
"maxLength": 40,
"description": "When the work ended, an ISO-8601 timestamp. Pass this OR minutes. It must not be before started_at."
},
"minutes": {
"type": "integer",
"minimum": 1,
"maximum": 1440,
"description": "Duration in whole minutes, 1 to 1440. Pass this OR ended_at. Send the measured duration, not a rounded-up one; the rounding to a billing increment happens on read."
},
"matter_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "The matter this time belongs to, one of this account's own matter ids. Omit it only if the entry genuinely has no matter yet; an unassigned entry is flagged in the pre-bill review."
}
},
"required": [
"started_at",
"narrative"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "scramble",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nPseudonymise a case file on our hardware BEFORE you send it anywhere else: real names, addresses and identifiers are replaced with stable placeholders ([PERSON_1], [ORG_2], ...), and you get back only the scrambled text and the counts. Use it when a document must be reasoned over by a model outside this host and the client has not agreed to that document leaving in the clear. Then call unscramble on the answer that comes back.\n\nThe entity graph that would reverse it is encrypted at rest under a key derived from THIS caller and THIS matter, and no route ever returns it. The same (caller, matter) pair must be used for unscramble or the placeholders cannot be resolved, so keep `matter_id` stable for a matter and never share one matter id across clients.\n\nIT IS A RELEASE GATE, NOT A BEST EFFORT. A document it is not confident it has cleaned is REFUSED with the reason and no text. Read the refusal and do not work around it by sending the original. `rejected` counts the spans it declined to substitute and `degraded` says the run was not clean; neither may be ignored. `stats` is what was replaced, and it is not a guarantee that nothing identifying remains: a date, a dollar figure or a distinctive fact can still identify a matter, so this reduces exposure rather than eliminating it. Tell the user that in those terms.\n\nNeeds an API key or a signed-in session: the encryption key is derived from the account, so there is no keyless or playground path at all. It returns an error on a host where the local model or the scrambler's storage is not configured, rather than passing the text through unscrambled. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"matter_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "A stable id for the matter this document belongs to: letters, digits, dot, dash and underscore only. The same id must be passed to unscramble. One matter id per matter: placeholders are scoped to it, so reusing one across clients would mix two matters' entities."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 60000,
"description": "The document to pseudonymise, as plain text. Up to 60,000 characters."
}
},
"required": [
"matter_id",
"text"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "unscramble",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nPut the real entities back into a text full of placeholders, from the same matter's encrypted graph. Call it on an answer a model produced over scrambled text, so the user reads real names rather than [PERSON_1]. The graph is decrypted for THIS caller and THIS matter only, used, and never returned.\n\nUNKNOWN PLACEHOLDERS ARE REPORTED, NEVER GUESSED. A [PERSON_9] this matter never had is either a model inventing an entity or a prompt injection, and it comes back in `unknown_placeholders` with the text otherwise untouched. Do not fill one in from context and do not drop it silently: show the user that the answer referred to an entity this matter does not contain.\n\nModes. \"answer\" (the default) renders a frontier model's answer the way a lawyer writes: full name first, surname afterwards. \"document\" puts a scrambled document's own bytes back from its sealed ledger: byte-exact or refused, never partial and never guessed, so a document that was edited after scrambling is rejected rather than half-restored. \"canonical\" restores one name per entity with no rendering.\n\n`matter_known` false means we hold no graph for this matter id under this caller, which is also what an unknown matter looks like, deliberately, so a refusal confirms nothing about anyone's matters. Needs an API key or a signed-in session; same per-key bucket as POST /api/v1/unscramble. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {
"matter_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The same matter id the text was scrambled under. A different id cannot resolve the placeholders and is not an error that tells you anything."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 200000,
"description": "The text containing placeholders: usually the answer a model produced over the scrambled document."
},
"mode": {
"type": "string",
"enum": [
"answer",
"document",
"canonical"
],
"description": "\"answer\" (default) for a model's prose; \"document\" to restore a scrambled document byte-exactly from its ledger (refused if it cannot be exact); \"canonical\" for one name per entity with no rendering."
}
},
"required": [
"matter_id",
"text"
],
"additionalProperties": false
}
}
},
{
"type": "function",
"function": {
"name": "get_instructions",
"description": "DocketRouter is a verification layer with a legal library behind it, not a national case-law search engine. Use it in this order.\n\n1. check_citations: does this citation exist? Checked against an offline table of 18,123,788 reporter citations across 989 reporters, plus the case-law index. The answer is \"found\" or \"unverified\", never \"nonexistent\".\n2. check_support: does the cited opinion actually support the proposition it is cited for? Returns supports, does_not_support or unclear, with a quote that is verbatim from the opinion or absent.\n3. search_rules: the text of a court rule or statute section, 3,860 sections held word for word, so a rule is quoted rather than recalled.\n4. search_texas_law: retrieval over the fused index, which covers Texas case law, Texas statutes, U.S. Supreme Court, Texas county and local rules, Texas court rules, California case law, New Jersey case law, Virginia case law, Washington case law, Minnesota case law, Alaska case law, Delaware case law, Idaho case law, Kansas case law, Maine case law, North Carolina case law, North Dakota case law, Rhode Island case law, South Dakota case law, Utah case law and Wisconsin case law. One shard set, not the country.\n5. legal_panel: is this answer safe to rely on? One question, ONE retrieval, every seat you name answering over the identical record, the same citation gate on every answer, and an agreement number that is set arithmetic over the authorities the gate confirmed. No model grades another model. Seat one expert and you get one grounded, citation-checked answer, labelled as exactly that; an agreement number needs two.\n\nThen, for the work around an answer rather than the answer itself: brief_check (every case citation in a whole document at once), citation_lookup (everything we hold about one citation), deadline (a day count under a rule we hold word for word, holidays NOT applied), contract_rules and contract_review (what a state's law does to a clause, from a verified store, no clause prose), time_entries_list and time_entry_create (this key's own timekeeping), scramble and unscramble (pseudonymise a case file before it leaves this host, restore the answer after). brief_check, citation_lookup, deadline and contract_rules need no API key; the rest do. get_instructions explains all of them.\n\nFor broad case-law lookup, use CourtListener's own MCP server (courtlistener.com, from the non-profit Free Law Project): it covers all 50 states and every federal court, and our case-law shard is built from their public bulk export. An agent with both should find cases there and verify them here, and come here for the rules and statutes their corpus does not carry. We are not affiliated with them and this is not a partnership.\n\nWithin the scope above, call these tools and cite only what they return; do not answer from memory. Outside it (other states' case law, federal courts below the Supreme Court, secondary sources, citator history, dockets and filings, administrative law, or anything decided after the index dates) these tools have nothing. Say that plainly. Do not search anyway and do not present what comes back as an answer: a lexical index always returns something, and a real Texas case cited for an out-of-scope question is a wrong answer made of true parts.\n\nNever present an unverified citation as verified.\n\nReturns DocketRouter's full standing brief for an agent: this scope rule, tool-by-tool usage guidance for every tool on this server, which tools need an API key and which need none, what each one costs, and the current library inventory. Call it with no arguments any time you need this brief again: at the start of a session, or after it has scrolled out of context. Needs no API key; the same text is also served at GET https://docketrouter.ai/llms.txt and in this server's MCP `initialize` response. Price: free. This tool is not invoiced, makes no upstream model call, and nothing it does counts against a spend cap.",
"parameters": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}
}
}
]TypeScript SDK
@docketrouter/sdk wraps the REST endpoints directly, with no MCP or tool-calling layer in between; use it when your own code is calling the libraries rather than handing them to a model. See the SDK reference.
import { DocketRouter } from "@docketrouter/sdk";
const dr = new DocketRouter({ apiKey: process.env.DOCKETROUTER_API_KEY });
const hits = await dr.rag.query({ q: "summary judgment no-evidence motion standard", k: 5 });
const checked = await dr.citations.check({ citations: ["488 U.S. 222", "928 S.W.2d 483"] });What it costs
Every call through any of the three interfaces is priced identically: $0.01 per query, already priced through DocketRouter with no markup on top. An MCP tool call draws from the same per-key rate limit as the REST endpoint it wraps, so calling both is one quota, not two.
What it never does
Citation checking never says a citation does not exist, only found or unverified, because absence from this library is not proof a citation is fabricated. Support checking returns a quote verbatim from the opinion or no quote at all, never a paraphrase presented as a quotation.