We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, to analyze how the site is used.

You can freely give, refuse or withdraw your consent at any time.

Syfert Legal Research

MCP server by Syfert

Verify legal citations, case treatment, quotes and whole briefs against 10.7M U.S. court opinions and statutes

Needs an API key (Needs an API key from the vendor)Streamable HTTP

Syfert Legal Research needs an API key. Connect with its own URL and your key:

https://mcp.syfert.com/mcp

Send your key in the Authorization header. mcp.tc never sees or stores keys. Where to get a key

Share this server

Opens this page, with the URL and setup steps.

mcp.tc/i/syfert-legal-research

Connects to the syfert.com law library: 10.7M U.S. opinions from all states and federal courts, treatment flags showing whether a case is still good law, and statute and court rule corpora for all 50 states plus DC, USC and CFR. Tools search cases and statutes, read full text, check citations and quotes, and audit a whole brief.

Runs as a hosted streamable HTTP endpoint at https://mcp.syfert.com/mcp. A free token sent as an Authorization Bearer header is used for normal access. The site also states that the endpoint answers without a credential, limited to 20 calls a day per address.

  • Search 10.7M U.S. court opinions by topic, party, court or judge
  • Look up a case by citation or caption and read the full opinion
  • Check whether a case is still good law with treatment flags
  • Verify citations, quotes and whole briefs for hallucinated authority
  • Find the source case for a proposition or quoted language
  • Search and read statutes and court rules for all 50 states plus DC and federal
  • Research a doctrine by state with cases on each side
  • search_casesRead-only

    Full-text search over 10.7M U.S. court opinions with state, court, judge and date filters

  • find_caseRead-only

    Direct lookup of one case by citation or caption

  • get_caseRead-only

    Fetch case metadata, parallel citations, treatment flag and opinion text

  • check_citationRead-only

    Verify a case, statute, regulation or rule citation exists and matches the name

  • verify_quoteRead-only

    Check a quotation against the full text of the cited opinion

  • get_treatmentRead-only

    Show whether a case is still good law with citing-case signals

  • check_briefRead-only

    Audit all citations, quotes and statutes in a draft brief at once

  • get_propositionsRead-only

    List the legal propositions courts cite a case for, each with its own flag

  • get_citing_casesRead-only

    List citing cases with parentheticals, quotes and pin cites

  • find_related_casesRead-only

    Expand one case into its doctrinal line of co-cited cases

  • find_courtRead-only

    Resolve a court name to court ids for search filters

  • search_quotesRead-only

    Find every case that quoted a given phrase

Show 10 more tools
  • find_authorityRead-only

    Find the source case to cite for a pasted proposition

  • find_issuesRead-only

    Research a doctrine or fact pattern as courts in a state name it

  • search_statutesRead-only

    Search statutes and court rules by citation or topic for any state or federal

  • get_statuteRead-only

    Fetch full text of a statute, rule or code section with currency details

  • suggest_treatmentWrites

    Propose a red or green treatment flag correction with supporting authority

  • export_documentRead-only

    Return a readable copy of a case or statute for saving locally

  • context_detectorRead-only

    Compare a brief's sentence with what the cited opinion says

  • brief_uploadWrites

    Upload a long brief for check_brief

  • get_brief_resultsRead-only

    Page through a checked brief

  • brief_deleteWrites

    Delete an uploaded brief now

Read from the live server on 15 Nov 2026. Read-only, Writes and Can delete are hints the server declares; your client decides whether to ask before running a tool.

  • Check every citation in this draft brief and list corrections

  • Is Miranda v. Arizona, 384 U.S. 436 still good law?

  • Find Florida authority for this proposition, pasted verbatim

  • Show me Florida statute 83.49 and cases construing it

Every client connects to mcp.syfert.com. Pick yours; the page remembers your choice.

Claude Code

  1. Run this in a terminal, in your project folder:
claude mcp add --transport http syfert-legal-research https://mcp.syfert.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
  1. Replace the placeholder with your key before you run it, then check it with /mcp inside Claude Code.

Add --scope user to make it available in every project, not just this one.

Claude Desktop

  1. Use the mcp-remote bridge, which keeps the key on this computer (a connector added on claude.ai with the key under Request headers also shows up here). Open Settings → Developer → Edit Config and add:
claude_desktop_config.json
{
  "mcpServers": {
    "syfert-legal-research": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.syfert.com/mcp",
        "--header",
        "Authorization: Bearer <YOUR_API_KEY>"
      ]
    }
  }
}
  1. Replace the placeholder with your key and restart Claude Desktop.

The bridge needs Node.js on your computer.

claude.ai

  1. Open the connector form on claude.ai. This button fills in the name and URL for you:
  1. Check that the URL reads https://mcp.syfert.com/mcp. Under Request headers, add Authorization: Bearer <YOUR_API_KEY> with your key from Syfert, then click Add.
  2. Turn it on in a chat from the tools menu.

Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under Organization settings → Connectors.

Cursor

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "mcpServers": {
    "syfert-legal-research": {
      "url": "https://mcp.syfert.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

VS Code

Add it to .vscode/mcp.json. VS Code asks for the key the first time and stores it securely:

.vscode/mcp.json
{
  "servers": {
    "syfert-legal-research": {
      "type": "http",
      "url": "https://mcp.syfert.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "api-key",
      "description": "API key",
      "password": true
    }
  ]
}

Devin Desktop

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "syfert-legal-research": {
      "serverUrl": "https://mcp.syfert.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
  1. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads serverUrl (or url) for remote servers.

Codex

codex mcp add syfert-legal-research --url https://mcp.syfert.com/mcp --bearer-token-env-var SYFERT_LEGAL_RESEARCH_API_KEY

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.syfert-legal-research]
url = "https://mcp.syfert.com/mcp"
bearer_token_env_var = "SYFERT_LEGAL_RESEARCH_API_KEY"

Set SYFERT_LEGAL_RESEARCH_API_KEY to your key in the shell that runs Codex.

Gemini CLI

gemini mcp add --transport http --header "Authorization: Bearer <YOUR_API_KEY>" syfert-legal-research https://mcp.syfert.com/mcp

This adds it to the current project. Add -s user to use it everywhere.

Any client

Most clients accept this shape. Some name the URL field differently: serverUrl in Devin Desktop, httpUrl in Gemini CLI’s settings file.

{
  "mcpServers": {
    "syfert-legal-research": {
      "type": "http",
      "url": "https://mcp.syfert.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

Zed puts servers under context_servers in its settings. Cline needs "type": "streamableHttp", or it assumes SSE.

Client only starts local servers? Bridge it with npx -y mcp-remote https://mcp.syfert.com/mcp.

Show Syfert Legal Research in a README or on your site. Each embed links to this page, uses the server’s own URL, and sets no cookies. How embeds work

The card, the iframe and the JSON are in English. Add ?lang=it, fr, de or es to their address for another language.

We read this server’s tool list every 3 hours and record what changes. Last read 15 Nov 2026, 00:17 UTC.

Follow Syfert Legal Research and we’ll email you when something changes.

  1. , Automatic check

    1 tool changed.

    Details, 13 Nov 2026, 02:49 UTC

    Changed 1

    • find_authoritydescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

  2. , Automatic check

    3 tools changed.

    Details, 12 Nov 2026, 20:49 UTC

    Changed 3

    • check_briefdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • find_authoritydescription and input schema

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

      • New parameters: per_page compact
      • Description of state
        Before

        Optional two-letter state code: relaxed and proposition matches are limited to that state's courts and the federal courts (a federal court sitting in the state cites both), that state's own courts fi…

        After

        Optional two-letter state code: relaxed and proposition matches are limited to that state's courts and the federal courts sitting in or over it (the Supreme Court, its circuit, its districts); other…

    • search_casesdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

  3. , Automatic check

    2 tools changed.

    Details, 11 Nov 2026, 23:47 UTC

    Changed 2

    • check_briefdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • check_citationdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

  4. , Automatic check

    4 tools changed.

    Details, 11 Nov 2026, 20:58 UTC

    Changed 4

    • find_authoritydescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • get_casedescription
      Before

      Fetch one case: metadata, parallel citations, treatment flag, and full opinion text (paginated via offset/max_chars). cited_by is CourtListener's citation count; for a decision filed as several twin clusters it is summed over them (cited_by_note says so), and a duplicate or stub twin id is answered with its survivor (note says so). Citations inside the returned text are checked against the reporter index (embedded_citations); citation_warnings names any the court itself got wrong. Identify the case by cluster_id (from search_cases results) or by reporter citation. find_text returns passages: up to 5 sentence-bounded windows holding a phrase (or its closest match) with star_page and offset, so a long opinion need not be paged (pass include_text=false to get only those); quotable=true adds quotable_passages, the passages of this opinion other courts quote. Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quo…

      After

      Fetch one case: metadata, parallel citations, treatment flag, and full opinion text (paginated via offset/max_chars). cited_by is the number of opinions citing the case: CourtListener's count, or the syfert.com citation graph's when that finds more (cited_by_source: citation_graph says so); for a decision filed as several twin clusters it is summed over them (cited_by_note says so), and a duplicate or stub twin id is answered with its survivor (note says so). Citations inside the returned text are checked against the reporter index (embedded_citations); citation_warnings names any the court itself got wrong. Identify the case by cluster_id (from search_cases results) or by reporter citation. find_text returns passages: up to 5 sentence-bounded windows holding a phrase (or its closest match) with star_page and offset, so a long opinion need not be paged (pass include_text=false to get only those); quotable=true adds quotable_passages, the passages of this opinion other courts quote. Qu…

    • get_propositionsdescription and input schema
      Before

      What is this case actually cited FOR? Returns the distinct legal propositions courts cite the case for (headnote-grade), each with its OWN treatment flag and counts. A case can be good law on one proposition and overruled on another. Use before citing a case for a specific point, and to find the strongest proposition to cite it for. passage is the opinion's own wording of the proposition with its star_page; passage null means citing courts paraphrase it. Pass proposition (your use of the case) to get proposition_match, the one proposition it matches, and proposition_note (MCP14_20260925). Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quote and use best_match. Run check_brief on the finished draft and apply its corrections. Copy cite_as for the citation (first page, then pin).

      After

      What is this case actually cited FOR? Returns the distinct legal propositions courts cite the case for (headnote-grade), each with its OWN treatment flag and counts. A case can be good law on one proposition and overruled on another. Use before citing a case for a specific point, and to find the strongest proposition to cite it for. passage is the opinion's own wording of the proposition with its star_page; passage null means citing courts paraphrase it. Pass proposition (your use of the case) to get proposition_match, the one proposition it matches, and proposition_note (MCP14_20260925). cited_for_pages (a separate array) lists pages later courts pin-cite, with a later court's parenthetical and, where it agrees with it, a machine-generated title that is never the court's words (PROPS229_20261110). Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quote and use best_match. Run check_brief on the finished dr…

      • Description of max_propositions
        Before

        Default 10, max 25

        After

        Rows wanted in propositions and in cited_for_pages, each up to this many, max 25 (at most 3 quoted propositions are indexed per case). Default: up to 2 cited_for_pages (1 when 2 or more propositions…

    • search_casesdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

  5. , Automatic check

    2 tools changed.

    Details, 11 Nov 2026, 17:52 UTC

    Changed 2

    • check_briefdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • check_citationdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

  6. , Automatic check

    New version 2.0.0 (was 1.7.0). Reported by the server.

  7. , Automatic check

    1 tool changed.

    Details, 5 Nov 2026, 23:46 UTC

    Changed 1

    • check_briefdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

  8. , Automatic check

    6 tools changed.

    Details, 5 Nov 2026, 14:52 UTC

    Changed 6

    • check_citationdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • find_casedescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • get_casedescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • get_treatmentdescription

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

    • search_statutesinput schema
      • Description of q
        Before

        Citation or topic query, max 200 chars

        After

        Citation or topic query, max 200 chars. With state, "quotation marks" require that exact phrase; other words are ranked, sections holding the most and rarest of them first, and match_mode says whethe…

    • verify_quotedescription
      Before

      Check one quotation against the full text of the opinion it is attributed to, before it goes in quotation marks. Returns verdict (verbatim | near | absent), percent, best_match (the opinion's own sentence, up to ~600 characters), star_page (the last *page marker before it, null when the text carries none), offset (get_case offset), case and advice. near means the opinion says it in other words: paste matched_span (the opinion's words over the span you quoted) instead; best_match is the sentence around it. absent means the words are not in this opinion. Identify the case by cluster_id or reporter citation (case_name helps a citation newer than the reporter index). Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quote and use best_match. Run check_brief on the finished draft and apply its corrections. Copy cite_as for the citation (first page, then pin).

      After

      Check one quotation against the full text of the opinion it is attributed to, before it goes in quotation marks. Returns verdict (verbatim | near | absent), percent, best_match (the opinion's own sentence, up to ~600 characters), star_page (the last *page marker before it, null when the text carries none), offset (get_case offset), case and advice. near means the opinion says it in other words: paste matched_span (the opinion's words over the span you quoted) instead; best_match is the sentence around it. absent means the words are not in this opinion. Identify the case by cluster_id or reporter citation (case_name helps a citation newer than the reporter index). Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quote and use best_match. Run check_brief on the finished draft and apply its corrections. Copy cite_as for the citation (first page, then pin). A case_name alone also works: find_case decides, and…

  9. , Automatic check

    6 tools changed. Server instructions changed.

    New server instructions

    Details, 4 Nov 2026, 23:39 UTC

    Changed 6

    • brief_deletedescription
      Before

      Delete an uploaded brief and its results from the server now (they are otherwise deleted after the last page is read, or after an hour idle).

      After

      Signed-in accounts only (a free account at https://syfert.com/mcp/; anonymous callers use check_brief with text). Delete an uploaded brief and its results from the server now (they are otherwise deleted after the last page is read, or after an hour idle).

    • brief_uploaddescription
      Before

      Upload a brief of any length for check_brief, in pieces. Send the text in order, about 40,000 characters (10k tokens) per call: the first call returns brief_id; each next call passes brief_id and seq (2, 3, ...); the last passes final=true (a short brief can go in one call with final=true). Then call check_brief with brief_id. The text and its results are held in server RAM only, for your credential alone, and are deleted right after the last page of every section is read, after an hour idle, or by brief_delete.

      After

      Signed-in accounts only (a free account at https://syfert.com/mcp/; anonymous callers use check_brief with text). Upload a brief of any length for check_brief, in pieces. Send the text in order, about 40,000 characters (10k tokens) per call: the first call returns brief_id; each next call passes brief_id and seq (2, 3, ...); the last passes final=true (a short brief can go in one call with final=true). Then call check_brief with brief_id. The text and its results are held in server RAM only, for your credential alone, and are deleted right after the last page of every section is read, after an hour idle, or by brief_delete.

    • check_briefdescription and input schema

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

      • Description of max_cites
        Before

        Max citations to process (default 100, max 200)

        After

        Max citations to process (default 100, max 200); citations past it are named in warnings as not checked

      • Description of brief_id
        Before

        Instead of text: the brief_id of a brief uploaded with brief_upload. Every citation is checked (no max_cites cap); until the check is done the answer is status running with cites_done / cites_total (…

        After

        Signed-in accounts: instead of text, the brief_id of a brief uploaded with brief_upload. Every citation is checked (no max_cites cap); until the check is done the answer is status running with cites_…

    • export_documentdescription
      Before

      Optional. If your client can save files locally and you want a readable copy of a case or statute, this returns the complete document to save; otherwise use get_case / get_statute as before. The document is the syfert.com page as the website renders it (caption, headings, footnotes, star-page markers such as [*551], links to the cited cases): Markdown with YAML front matter (default) or one self-contained HTML file. Returns filename, format, bytes, document and note; the MCP cannot write to disk, so saving document under filename is up to you. A case: cluster_id, or citation (+ case_name). A statute or rule: jurisdiction + citation, as get_statute takes them. A document longer than one response comes in parts (truncated, next_offset): call again with offset and append the parts in order.

      After

      Optional. If your client can save files locally and you want a readable copy of a case or statute, this returns the complete document to save; otherwise use get_case / get_statute as before. The document is the syfert.com page as the website renders it (caption, headings, footnotes, star-page markers such as [*551], links to the cited cases): Markdown with YAML front matter (default) or one self-contained HTML file. Returns filename, format, bytes, document and note; the MCP cannot write to disk, so saving document under filename is up to you. A case: cluster_id, or citation (+ case_name). A statute or rule: jurisdiction + citation, as get_statute takes them. A document longer than one response (about 20k tokens) comes in parts that each fit one (page / pages, truncated, next_offset): call again with offset = next_offset and append the parts in order.

    • get_brief_resultsdescription
      Before

      Read the results of check_brief(brief_id) one page at a time (each page under ~20k tokens). section: corrections (ranked by severity), cites (one full row per citation, as check_brief with detail="full"), quotes_unattached, statutes. Start without cursor, then pass next_cursor until it is null. After the last page of every section the session is deleted (session_deleted: true).

      After

      Signed-in accounts only (a free account at https://syfert.com/mcp/; anonymous callers use check_brief with text). Read the results of check_brief(brief_id) one page at a time (each page under ~20k tokens). section: corrections (ranked by severity), cites (one full row per citation, as check_brief with detail="full"), quotes_unattached, statutes. Start without cursor, then pass next_cursor until it is null. After the last page of every section the session is deleted (session_deleted: true).

    • verify_quotedescription
      Before

      Check one quotation against the full text of the opinion it is attributed to, before it goes in quotation marks. Returns verdict (verbatim | near | absent), percent, best_match (the opinion's own sentence, up to ~600 characters), star_page (the last *page marker before it, null when the text carries none), offset (get_case offset), case and advice. near means the opinion says it in other words: paste best_match instead. absent means the words are not in this opinion. Identify the case by cluster_id or reporter citation (case_name helps a citation newer than the reporter index). Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quote and use best_match. Run check_brief on the finished draft and apply its corrections. Copy cite_as for the citation (first page, then pin).

      After

      Check one quotation against the full text of the opinion it is attributed to, before it goes in quotation marks. Returns verdict (verbatim | near | absent), percent, best_match (the opinion's own sentence, up to ~600 characters), star_page (the last *page marker before it, null when the text carries none), offset (get_case offset), case and advice. near means the opinion says it in other words: paste matched_span (the opinion's words over the span you quoted) instead; best_match is the sentence around it. absent means the words are not in this opinion. Identify the case by cluster_id or reporter citation (case_name helps a citation newer than the reporter index). Quotation marks mean pasted from a tool result (opinion text, passage, best_match). If you typed a quote from memory, run verify_quote and use best_match. Run check_brief on the finished draft and apply its corrections. Copy cite_as for the citation (first page, then pin).

    Server instructions

    Before

    Legal research tools backed by syfert.com: 10.8M U.S. opinions (all states + federal), Syfertize treatment flags, and statute corpora for 50 states + DC (44 also hold court rules, kind="rule"; not ks, la, nh, ok, sd, vt), the Florida Administrative Code and USC/CFR/federal rules (state="xx"; get_statute takes the two-letter code). Path: (0) a doctrine or fact pattern -> find_issues(state="xx"): the doctrine as that state's courts name it, cases on each side (followed_by / questioned_by), statutes construed. (0b) a proposition or quote -> find_authority, verbatim. (1) party, statute number or keywords -> search_cases / search_statutes. (2) get_case / get_statute read it. (3) check_citation verifies a cite (hallucinations, name mismatches; expected_case_name finds a cite newer than the index; statute and rule cites too); for id., supra and short forms pass the sentence containing the cite and any quotation; id. is never the case last mentioned. (3b) check_brief audits a draft and lists corrections. (3c) get_propositions: what courts cite a case for, each with its flag and quote_integrity ('absent' = not in the opinion); get_citing_cases: judges' parentheticals; find_related_cases: the doctrinal line. (4) get_treatment: red = overruled, yellow = questioned, overruled_by, still_good_companions, risk_signals. get_statute adds Notes of Decisions and currency: the text is the edition held, so for crimes, contracts, limitations or procedure the operative date goes in as_of. Rows carry bluebook, url, link_md; a passage's cite_as is bluebook + pin; cross_references on a statute hold amendments no case has reached. Coverage after ~2020 is partial in some regional reporters: a miss on a recent case may be a gap, not a hallucination. An answer dates itself from the tool calls (a statute's currency; no "current through" date for cases) and labels each proposition: tool + cite, user's text, own reasoning, or unchecked. Quotation marks mean pasted from a tool result (verify_quote'…

    After

    Legal research tools backed by syfert.com: 10.8M U.S. opinions (all states + federal), Syfertize treatment flags, and statute corpora for 50 states + DC (44 also hold court rules, kind="rule"; not ks, la, nh, ok, sd, vt), the Florida Administrative Code and USC/CFR/federal rules (state="xx"; get_statute takes the two-letter code). Path: (0) a doctrine or fact pattern -> find_issues(state="xx"): the doctrine as that state's courts name it, cases on each side (followed_by / questioned_by), statutes construed. (0b) a proposition or quote -> find_authority, verbatim. (1) party, statute number or keywords -> search_cases / search_statutes. (2) get_case / get_statute read it. (3) check_citation verifies a cite (hallucinations, name mismatches; expected_case_name finds a cite newer than the index; statute and rule cites too); for id., supra and short forms pass the sentence containing the cite and any quotation; id. is never the case last mentioned. (3b) check_brief audits a draft and lists corrections. (3c) get_propositions: what courts cite a case for, each with its flag and quote_integrity ('absent' = not in the opinion); get_citing_cases: judges' parentheticals; find_related_cases: the doctrinal line. (4) get_treatment: red = overruled, yellow = questioned, overruled_by, still_good_companions, risk_signals. get_statute adds Notes of Decisions and currency: the text is the edition held, so for crimes, contracts, limitations or procedure the operative date goes in as_of. Rows carry bluebook, url, link_md; a passage's cite_as is bluebook + pin; cross_references on a statute hold amendments no case has reached. Coverage after ~2020 is partial in some regional reporters: a recent miss may be a gap, not a hallucination. An answer dates itself from the tool calls (a statute's currency; no "current through" date for cases) and labels each proposition: tool + cite, user's text, own reasoning, or unchecked. Quotation marks mean pasted from a tool result (verify_quote's matched_…

  10. , Automatic check

    3 tools added and 1 tool changed.

    Details, 4 Nov 2026, 20:59 UTC

    Added 3

    • brief_deleteWrites

      Delete an uploaded brief and its results from the server now (they are otherwise deleted after the last page is read, or after an hour idle).

    • brief_uploadWrites

      Upload a brief of any length for check_brief, in pieces. Send the text in order, about 40,000 characters (10k tokens) per call: the first call returns brief_id; each next call passes brief_id and seq (2, 3, ...); the last passes final=true (a short brief can go in one call with final=true). Then call check_brief with brief_id. The text and its results are held in server RAM only, for your credential alone, and are deleted right after the last page of every section is read, after an hour idle, or by brief_delete.

    • get_brief_resultsRead-only

      Read the results of check_brief(brief_id) one page at a time (each page under ~20k tokens). section: corrections (ranked by severity), cites (one full row per citation, as check_brief with detail="full"), quotes_unattached, statutes. Start without cursor, then pass next_cursor until it is null. After the last page of every section the session is deleted (session_deleted: true).

    Changed 1

    • check_briefdescription and input schema

      The text shown here is the same before and after: the change is past the first 1,000 characters or in characters that don’t show.

      • New parameters: brief_id
      • No longer required: text
      • Description of text
        Before

        The full document text (up to 512KB)

        After

        The full document text (up to 512KB). Omit it when you pass brief_id.

  11. , Automatic check

    2 tools changed.

    Details, 4 Nov 2026, 14:51 UTC

    Changed 2

    check_brief check_citation

    The 10 newest entries show every detail; older ones show names only.

  12. , Automatic check

    6 tools changed. Server instructions changed.

    New server instructions

    Details, 3 Nov 2026, 17:49 UTC

    Changed 6

    check_citation find_case get_case get_statute get_treatment search_cases

    The 10 newest entries show every detail; older ones show names only.

  13. , Automatic check

    5 tools changed.

    Details, 2 Nov 2026, 23:36 UTC

    Changed 5

    check_brief check_citation find_case get_case get_treatment

    The 10 newest entries show every detail; older ones show names only.

  14. , Automatic check

    4 tools changed.

    Details, 2 Nov 2026, 20:52 UTC

    Changed 4

    check_citation find_case get_treatment search_cases

    The 10 newest entries show every detail; older ones show names only.

  15. , Automatic check

    1 tool changed.

    Details, 2 Nov 2026, 02:44 UTC

    Changed 1

    check_brief

    The 10 newest entries show every detail; older ones show names only.

  16. , Automatic check

    1 tool changed.

    Details, 27 Oct 2026, 02:39 UTC

    Changed 1

    find_court

    The 10 newest entries show every detail; older ones show names only.

  17. , Automatic check

    1 tool changed.

    Details, 26 Oct 2026, 17:47 UTC

    Changed 1

    find_court

    The 10 newest entries show every detail; older ones show names only.

  18. , Automatic check

    New version 1.7.0 (was 1.6.0). Reported by the server.

  19. , Automatic check

    3 tools changed.

    Details, 26 Oct 2026, 02:49 UTC

    Changed 3

    find_case get_case get_treatment

    The 10 newest entries show every detail; older ones show names only.

  20. , Automatic check

    2 tools changed. Server instructions changed.

    New server instructions

    Details, 25 Oct 2026, 20:38 UTC

    Changed 2

    check_citation find_case

    The 10 newest entries show every detail; older ones show names only.

  21. , Automatic check

    1 tool changed.

    Details, 25 Oct 2026, 17:43 UTC

    Changed 1

    get_case

    The 10 newest entries show every detail; older ones show names only.

  22. , Automatic check

    Tracking started: 19 tools.

Can I paste mcp.tc/i/syfert-legal-research into my MCP client?

No. mcp.tc links are pages, not server addresses. Connect with https://mcp.syfert.com/mcp, so your client talks to Syfert Legal Research directly. Your key goes there too, never to mcp.tc. The quick link is for sharing: it opens this page, with setup steps for every client.

Does Syfert Legal Research need an API key or a sign-in?

Yes. Syfert Legal Research needs an API key, sent as the Authorization header. Get one from Syfert and keep it in your client’s config, never in a shared file.

Is Syfert Legal Research a remote or a local server?

Remote. Syfert hosts it at https://mcp.syfert.com/mcp, and it speaks Streamable HTTP. There’s nothing to install.

What can Syfert Legal Research do?

It has 22 tools, including search_cases, find_case and get_case. You can search 10.7M U.S. court opinions by topic, party, court or judge, look up a case by citation or caption and read the full opinion and check whether a case is still good law with treatment flags.

Which clients can use it?

Any client that supports remote MCP servers and can send your key: Claude Code, Cursor, VS Code, Devin Desktop, Codex, Gemini CLI, Zed and others. On claude.ai and Claude Desktop, add the key as a request header when you create the custom connector. ChatGPT can’t send a key, so it can’t use it.

Does mcp.tc track changes to Syfert Legal Research?

Yes. Syfert Legal Research’s History tab shows each change we find to its tools, down to descriptions and parameters, plus new versions and edits by its owner. Follow the listing to get an email when it changes.

Who wrote this page?

mcp.tc’s robot read Syfert Legal Research’s own metadata (its MCP handshake, tool list and public pages), and an AI model drafted the text from it. A person reviews anything the checks can’t confirm. The text can still be wrong, so if you spot a mistake, use Report this listing on this page.

mcp.tc isn’t affiliated with Syfert. This page was built from Syfert Legal Research’s public metadata, last checked on 15 Nov 2026, and an AI model wrote the description, so it can be wrong. Names and marks belong to their owners. Something off? Report this listing.