The Toolset · Go Syfert

The toolset

Eighteen tools. All of them read. None of them write, except one that writes a suggestion into a queue a human reads. Your robot picks them up the moment you connect. You never have to call one yourself. Under each tool is a note on how it works, because a research tool that will not explain itself is asking for trust it has not earned. You do not need a token to try them: https://mcp.syfert.com/mcp answers anonymously, twenty calls a day per address. A free account is 10,000 searches a month and no limit on citation checks, treatment, brief audits and statutes. Pro lifts every cap.

First, the books. The cases are the Free Law Project's CourtListener bulk data: 10.7 million opinions from every state and federal court, refreshed quarterly and packed into read-only SQLite files. On top of that sits a map built here. It has about 175 million citation events. Each one is a place where one opinion cites another, with the sentence around it, the parenthetical the judge wrote, the words quoted, and the pin cite. Most of what follows is a different way of looking at that map.

The tools sort themselves into five jobs. Finding a case. Reading it. Checking a citation or a quote before it goes in a document. Finding out what a case is good for and whether it is still good. Statutes and rules. Then two odd ones at the end.

Finding a case

search_cases

Full-text search over all 10.7 million opinions. Boolean operators, phrases, proximity, wildcards, court and date filters, published or not. Sorted by authority, by date, by how often cited, or by what courts are citing right now. A hit whose snippet is quoting an older case says which older case, so your robot cites the source and not the echo.

How it works: SQLite FTS5 indexes over the whole corpus. Queries go first to a dedicated search machine with a warm, content-bearing index. If that machine is down, a slower copy on the web server answers, and the result says which one did. Ranking is authority-weighted: citation counts, the rank of the citing courts, and treatment health all feed it. If the query is a single citation or one "X v. Y" caption that names one case decisively, that case rides above the results as a direct hit. A one-word query that matches a million opinions is told to narrow itself, with suggestions, instead of making you wait ninety seconds for a ranking that cannot finish.

find_case

For when you know which case you mean. Give it a citation or a caption. It returns that one case, or it says the answer is not decisive and shows up to five candidates. It never guesses.

How it works: the same logic as the Go button on this site's search bar. A citation resolves through the reporter index, parallel cites and all, F. App'x in every spelling, vendor-neutral cites like 2023-Ohio-1234 read the way the courts print them. If a case name comes along and the case actually at that citation has a different name, the answer is withheld and the real case is named. That is how a hallucinated cite gets caught. A caption is decisive only when the top match is at least twice as strong as the runner-up and carries the caption's party names. "Smith v. Jones" never lands anywhere, by design. A wrong landing is worse than none.

find_court

Turns "the Eleventh Circuit" into the court id the search filters want. It also turns "tribal courts," "veterans" or "all the district courts" into one token that filters on the whole group. Small tool. Saves arguments.

How it works: court names are matched as bags of words with the directional abbreviations expanded, so "S.D. Florida," "Southern District of Florida" and "Florida Southern District" meet in the middle. Ranking prefers courts that are still deciding cases, judged from the corpus itself rather than the upstream metadata, which wrongly marks all five Florida DCAs defunct. It warns you when your best match is a court whose opinions stopped in 1910.

Reading it

get_case

The whole opinion, clean, with metadata, parallel citations and the treatment flag. A long opinion pages instead of quietly cutting off. Ask for a phrase and it hands you the passages holding it, with the star page, so nobody has to read three hundred pages to find one sentence. Ask for the quotable passages and it lists the ones other courts actually quote.

How it works: each opinion in a case (majority, concurrence, dissent) is stored on its own with its author and type, extracted to text, and served through a character-offset window. Every citation inside the text is checked against the reporter index on the way out, and a citation the court itself got wrong is named. A decision filed under several duplicate ids is answered by the survivor, with its citation counts added up, and the note says so. The Bluebook line is built by the same code that builds it everywhere else on the site, Florida district resolution and all.

export_document

Optional. If your AI can save files on your machine and a case or statute is worth keeping, this returns the whole document as Markdown or as one self-contained HTML page, with a filename. The server cannot write to your disk. Saving is your robot's decision.

How it works: the copy is the page this site would show you, rendered by the site's own code and converted: caption, headings, footnotes, star-page markers, links to the cases it cites, and the flag with its scope. Which document you exported is not written down anywhere.

Checking a citation or a quote

check_citation

The hallucination catcher. Give it a citation and the case name your draft claims. It says whether the cite exists, what case really lives there, and whether the names match. It checks statute, regulation and court-rule cites too, against the corpus that holds each one. Add the words you quote and it checks those against the opinion. Add the point you cite the case for and it tells you whether that point, specifically, is still good.

How it works: the citation is parsed into volume, reporter and page. Reporter spellings are normalized, so "So.2d" and "So. 2d" land on the same key. The triple is looked up in an index of every citation in the corpus. The claimed name is scored against the real one by token similarity: above 0.75 is a match, 0.4 to 0.75 is partial, below that is a likely hallucination.

A miss is not a verdict. It is the start of one. Four things happen before anything gets condemned. The corpus is asked whether any opinion prints that exact citation, and for which case: 175 million citation events know a lot of cites the reporter index does not. CourtListener is asked live, so a case newer than the quarterly snapshot comes back "real, just recent." The volume's coverage is reported, because for 2019 and later we often index under a third of a state regional reporter, and a miss there is weak evidence. And the cite is tested as a misprint of a real one: one digit off in the volume or the page, two digits swapped, the wrong series. If a real case fits, by name, year, and rarity, the answer is "likely misprint" with the cite it probably meant, not "fabricated." Only when the page provably sits inside a differently named case, or the volume is complete and nothing turns up, does it say likely fabricated. A name alone is never a citation. When a cite is unindexed and the only evidence is a case with that name, the name has to be corroborated, by date, by a court printing them side by side, by rarity, before it is accepted.

Westlaw and Lexis numbers resolve too, where the corpus or CourtListener has matched them to a case. The answer prefers the reporter cite and says how the match was made. A paragraph pinpoint on a vendor-neutral cite is checked against the opinion's own paragraph numbers.

verify_quote

One quotation, checked against the full text of the opinion it is attributed to, before it goes inside quotation marks. Three verdicts: verbatim, near, absent. "Near" comes with the opinion's own sentence, so you paste that instead. "Absent" means the words are not in this opinion. Then you find out where they came from.

How it works: the opinion text is searched for the quote as written, then for its closest sentence, and the best match is scored by similarity with the star page and the character offset attached. It is deliberately dumb. There is no model deciding whether the paraphrase is close enough. There is a percent, and there is the court's own sentence, and you decide.

find_authority

Backwards from a proposition. Paste the rule you need authority for, in the words you would write it. It names the case to cite, the verbatim passage, and how many courts have adopted it. The match kind says how honest the match is: the passage contains your words, or shares your distinctive words, or is a rule later courts cite that case for.

How it works: a phrase index over 4.3 million distinct passages that two or more opinions quote from each other, each tied to its origin, the earliest opinion whose own text holds the words. Exact phrase first. Then the same passages by their distinctive words. Then the mined propositions, the rule text later courts cite a case for. Results rank by adoption count. The first rows carry the star page and a ready citation. A miss is information too: language that gets paraphrased rather than quoted should not be presented as a quotation.

search_quotes

Which case actually says this. The same engine as find_authority, pointed at half-remembered language. Find the true source before you attribute it. Find the canonical wording of a rule before you paraphrase it badly.

How it works: see find_authority. The passage index is built from the citation-event map: every span two or more opinions quote verbatim, with the years courts have been quoting it. That is where misattributed quotes go to be caught.

check_brief

The whole document, one pass. Paste the draft. Every citation is pulled out and verified. Every claimed case name is checked against the real case. Every quoted passage is checked word for word against the opinion it is pinned to, and an unmatched quote is traced to the case the words actually come from, so you can write "(quoting ...)" or cite the source. Statute, regulation and rule cites get their own section. Red-flagged authority comes back with replacements. Attack mode runs the same audit on the other side's brief and returns ammunition.

How it works: the same engine as this site's Brief Check page, run as a library. Every Bluebook-shaped citation is extracted with its position in the text, up to 512 KB and 200 citations a pass, 128 KB without a token, and the answer says if it had to cut. Each cite then gets the full check_citation treatment, misprints and all, so an unresolved cite carries a verdict and not just a shrug. A pin cite written as if it were a citation of its own is called a pin reference, not an error. Quotes are compared to the opinion text and scored: 95 percent or better is clean, 70 reads as paraphrase, below that is flagged, and the correction carries the opinion's own words and star page. Each resolved case carries its flag, the name of whoever overruled it if it is red, and whether it is published. This is the check that would have caught the famous fabricated cases. It was not hard. It just was not done.

What a case is good for, and whether it still is

get_treatment

Is it still good law. Red is overruled or superseded. Yellow is questioned, limited or distinguished. Green is followed. You get the citing cases behind each signal, negative first, with the judge's own words, plus who overruled it, plus still-good authority to cite instead, plus early warnings when a case is under fire or has split the circuits. Tell it what you are citing the case for and it answers for that point. A case can be green as a whole and red on the one proposition you need.

How it works: Syfertize, the treatment engine built for this site. Each citing sentence in the map is classified on its own: is this court following, distinguishing, criticizing or overruling, and is the target of that verb this case. Grammar matters. "We overrule Smith" and "Smith, which overruled our earlier rule" are different events, and a keyword matcher gets them backwards. Signals are weighted by court hierarchy and piled into a histogram per case. The flag falls out of the histogram. A Supreme Court reversal or vacatur of the very judgment below is read from the Court's own opinion and counts as red, and the answer says so in those words. The "overruled by" line needs consensus before it names names: two independent citing courts agreeing, or a near-unanimous signal. The propositions come from the same map, each with its own histogram.

get_propositions

What is this case actually cited for. The distinct propositions courts rely on it for, headnote-grade, each with its own flag and counts, and the opinion's own wording of each with its star page. Cite the case for the right point, not just the right name.

How it works: the parentheticals, quoted passages and host sentences of everyone who cites the case are clustered into distinct propositions. Each cluster keeps its own treatment histogram, citer counts, and use over the last ten years. That is why a case can be green on one proposition and dead on another, and why this tool exists. The famous passages get a second look: the words as commonly quoted are compared with the opinion text on file and come back verbatim, close, drifted or absent. Drifted means the courts have collectively changed the wording. Absent means the words are not in the opinion. Both happen more than anyone would like.

get_citing_cases

The citator list. Ranked citing cases with parentheticals a judge wrote, which you can drop into a string cite as they are, plus verbatim quotes, pin cites, and each citing court's own signal. Filter by flag color.

How it works: the citator build keeps each case's top-ranked citers, about fifty, ordered by treatment salience and rank. The parenthetical and the quote are lifted straight from the citing judge's text, which is what makes them usable in a brief. The signal is the one that judge used: see, but see, cf. Because the list is top-ranked and not exhaustive, the tool tells your robot to run get_treatment for the full negative sweep rather than call a case clean from this list alone.

find_related_cases

Hand it one good case and get the line it belongs to: the family of cases courts keep citing together around an anchor authority.

How it works: co-citation clustering. About 1,500 major doctrinal lines are built this way, landmark cases only. A case that belongs to no family gets its own most co-cited cases instead, and the answer says which kind you got.

find_issues

Entry by issue. When the question arrives as facts or a doctrine name rather than a case name ("tipsy coachman," "economic loss rule," "can the appellate court affirm on a ground the trial court never reached") this returns the doctrine as the courts of that state actually call it, the cases on each side of it, the sentences judges wrote applying it, the statutes those opinions construe, and every other state where the same phrase is alive, with years. Read the questioned-by side before you lean on the followed-by side.

How it works: a state-keyed issue map mined from the citation-event map. Doctrine phrases are clustered from the sentences in which courts cite authority. Each citing sentence is classified as following or questioning the case it cites. The result is aggregated per state, so a doctrine kept in one state and abandoned in another shows as a stalled span. A question of more than eight real words is read as a proposition and the matching propositions come first. Doctrine health and case health are reported separately, because an issue can be alive while its anchor case is dead.

Statutes and rules

search_statutes and get_statute

The codes of all fifty states and D.C., the U.S. Code, the C.F.R., the federal rules, the sentencing guidelines, the Florida Administrative Code, and the court rules of forty-four states in the same corpus as their statutes. Search by topic or by citation. Fetch the full section with its cross-references, so a new amendment cannot hide. Every section comes annotated: the leading cases construing it, one-sentence squibs, subsection by subsection. A federal section that has been struck down carries a banner saying so.

How it works: fifty-five separate corpora, each its own FTS index, scraped from the official state and federal sources with the scrape date carried in every answer. A query ending in a number tries the exact-citation arm first. Topic queries rank by tokens, weighted hard toward citation and title over body text, strict AND first with an OR retry so near-misses surface. The unglamorous part is citation normalization, hundreds of small rules so the cite a lawyer types finds the string the corpus stores. "42 USC 1983" gets its section sign. "CPL 440.10" grows into the full New York law name. "TRCP 166a" becomes "Tex. R. Civ. P. 166a." North Dakota sections get their zero-padding back. Six states (Kansas, Louisiana, New Hampshire, Oklahoma, South Dakota, Vermont) keep no separate rules set because their rules are codified as statutes, and the tools say so. Coverage limits are printed in the results, not hidden. Pennsylvania is consolidated-statutes-only, and the answer says that every time.

Two odd ones

suggest_treatment

The one tool that writes. When your AI sees evidence that a flag is wrong, an overruling the flag missed, or a red case a later court says is still good, it can propose red or green with a one-line reason and the authority. The suggestion goes into a queue a human reads. Nothing on the site changes until a human says yes.

How it works: only the case, the proposed flag, the reason, the authority and the date are stored. No account, no token, no address, no time of day. Identical suggestions count as votes on one entry. A per-case daily limit keeps one looping agent from flooding the queue. An accepted suggestion becomes the same hand-curation patch the engine's own audits produce, so it survives the next rebuild.

That is all of them. The robot reads these definitions every time it connects, so what it sees is what is written above. If something in this list does not do what it says here, that is a bug, and I would like to hear about it.

How it works

  1. Create a free account: the icon at the right of the toolbar opens it, and a six-digit code by email confirms the address.
  2. You get a private URL, shown exactly once. Save it like a password.
  3. Paste it into your AI chatbot or TUI coding terminal. In Claude that is Settings, then Connectors, then Add custom connector; other MCP-capable assistants work the same way. Copy-paste setup for Claude Code, claude.ai, ChatGPT, Codex, Cursor, VS Code, Gemini CLI and MikeOSS is on the install page.
Check this first: some firm AI plans lock custom connectors so only an administrator can add one. Open your assistant's settings and make sure you can add a custom connector before you ask for access. If you get stuck, call me and we will sort it out.

Pricing

Free
The free tier is real and it is staying. No card, no trial clock, nothing to cancel: anonymous use needs no token at all, and a free token lifts the limits. There is no card on file here to charge quietly.
$30 / month
Pro: or $300 a year, ten months for twelve. The dedicated fast index instead of the shared one, priority ahead of free traffic rather than a queue, call limits you will not hit, and semantic search when it lands. Cancel in two clicks; sales tax added where a state requires it. Everyone already holding an access URL is Pro through 2027-09 at no charge.

The terms, in plain English

When something does not work, tell me and I will fix it.

What flows through the pipe is case law: opinions, citations, statutes, treatment data. Your searches necessarily pass through this server, but I do not log them: not the citation you checked, not the case name, not your query, not a brief you pasted in. What I keep is operational only: which tool ran, whether it succeeded, and how long it took, so I can keep the lights on and catch abuse. Nobody sees even that but me, Graham W. Syfert, Esq., P.A., and it is not shared with third parties, not sold, and not fed to any advertising machine. Be sensible anyway: do not paste client secrets into a search box, here or anywhere.

Your access URL is a secret. Treat it like one, because anyone holding it can search on your subscription. If it leaks, tell me and I will issue you a fresh one and retire the old one.

The service is provided as-is, with no warranty of any kind, express or implied. The robot checks the citations, but you are still the lawyer, and the filings are still yours. Nothing here is legal advice, and no attorney-client relationship forms by subscribing.

Use of this service constitutes your acknowledgment and acceptance of these terms. You are probably an attorney. I am an attorney. If you have any problems you could just call me at 904-383-7448.