Skip to content

io.github.cyanheads/courtlistener-mcp-server

by cyanheads · remote · local (npm) · no sign-in to list tools · v0.8.0 · published by GitHub user cyanheads

Search US court opinions, federal dockets, judges, citations, and oral arguments via CourtListener.

Read only

14 tools: 14 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http courtlistener https://courtlistener.caseyjhand.com/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

14 tools

Only reads 14Claude Code: allow
  • courtlistener_get_citationsRetrieve the citation network for an opinion cluster.No findings

    Why it is in this group

    • The name "courtlistener_get_citations" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve the citation network for an opinion cluster. Supports two directions: "cited_by" (opinions that cite this one — measures precedential influence) and "citing" (opinions this one cites — reveals the authority chain relied on). This is the primary tool for tracing legal precedent chains. Note: the free tier supports shallow traversal — following 1–2 hops of a single case is practical; deep multi-hop analysis burns through the daily budget quickly.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
  • courtlistener_get_docketFetch full docket metadata and entry list for a single federal case by docket ID.No findings

    Why it is in this group

    • The name "courtlistener_get_docket" says "get": a word for reading.
    Description, as the server wrote it
    Fetch full docket metadata and entry list for a single federal case by docket ID. Returns all available docket entries with document availability status. Documents with is_available=true have a RECAP-stored copy; others require a PACER account. Obtain docket IDs from courtlistener_search_dockets or from opinion results.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_get_financial_disclosureFetch a judicial financial disclosure by disclosure_id from courtlistener_search_financial_disclosures.No findings

    Why it is in this group

    • The name "courtlistener_get_financial_disclosure" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a judicial financial disclosure by disclosure_id from courtlistener_search_financial_disclosures. Returns metadata, counts and typed line items with coded values decoded to dollar ranges. Select categories or omit for all. Oversized selections return outline then page responses; continue retrieval.next_cursor as cursor with the unchanged ID/categories selection until null. Large individual row fields remain recoverable through text_chunks.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_get_judgeFetch full biographical profile for a single judge: positions on record — judicial appointments across all courts plus non-judicial roles — education, political affiliations, and A…No findings

    Why it is in this group

    • The name "courtlistener_get_judge" says "get": a word for reading.
    Description, as the server wrote it
    Fetch full biographical profile for a single judge: positions on record — judicial appointments across all courts plus non-judicial roles — education, political affiliations, and ABA ratings. The position list is paginated upstream and walked under a page bound; the response reports whether it was truncated. Obtain person IDs from courtlistener_search_judges results.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_get_opinionFetch text and metadata for an opinion cluster by cluster ID.No findings

    Why it is in this group

    • The name "courtlistener_get_opinion" says "get": a word for reading.
    Description, as the server wrote it
    Fetch text and metadata for an opinion cluster by cluster ID. Returns majority, concurrence and dissent variants with raw HTML and readable plain text, variants_completion for source coverage, and docket_enrichment. Oversized selections return outline then page responses; continue retrieval.next_cursor as cursor with the unchanged ID/sections selection until null. Obtain cluster IDs from courtlistener_search_opinions, courtlistener_lookup_citation, or docket results.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_get_oral_argumentFetch an oral argument recording by audio_id from courtlistener_search_oral_arguments.No findings

    Why it is in this group

    • The name "courtlistener_get_oral_argument" says "get": a word for reading.
    Description, as the server wrote it
    Fetch an oral argument recording by audio_id from courtlistener_search_oral_arguments. Returns case metadata, panel IDs, duration, MP3 URL, docket and available transcript. Oversized text or metadata returns outline then page responses; continue retrieval.next_cursor as cursor with the unchanged ID/sections selection until null. The argument date comes from search or the linked docket.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_get_partiesFetch a page of parties and their attorneys of record for a RECAP federal docket by docket ID.No findings

    Why it is in this group

    • The name "courtlistener_get_parties" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a page of parties and their attorneys of record for a RECAP federal docket by docket ID. Returns each party's name, role (Plaintiff, Defendant, Petitioner, Respondent, etc.), and their attorneys with contact information, scoped to this docket. Costs one party request plus up to five attorney roster requests. A later roster page blocked by the local request budget returns fetched detail with capped resolution, unresolved IDs, and the remaining roster cursor. Obtain docket IDs from courtlistener_search_dockets or courtlistener_get_docket.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_lookup_citationResolve legal citations (e.g., "410 U.S.No findings

    Why it is in this group

    • The name "courtlistener_lookup_citation" says "lookup": a word for reading.
    Description, as the server wrote it
    Resolve legal citations (e.g., "410 U.S. 113", "93 S. Ct. 705") to opinion cluster IDs and case metadata. Enables workflows that start from a known citation rather than a search query. CourtListener extracts every citation it finds in the submitted text, so passing a passage returns one entry per citation, each with its own resolution status — an unresolved or ambiguous citation is reported in the results, not raised as an error. Supports standard US reporter formats. Costs one request against CourtListener's per-citation quota, plus one ordinary request per distinct docket whose court is resolved — max_court_lookups bounds that second half (default 4, set 0 to skip court resolution entirely). CourtListener meters this endpoint by citations submitted rather than by call, so a long passage spends proportionally more of that quota. Requires authentication — uses the CourtListener /citation-lookup/ endpoint.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
  • courtlistener_lookup_courtsList courts with optional filtering by jurisdiction type, active/inactive status, and scraper coverage.No findings

    Why it is in this group

    • The name "courtlistener_lookup_courts" says "lookup": a word for reading.
    Description, as the server wrote it
    List courts with optional filtering by jurisdiction type, active/inactive status, and scraper coverage. Primarily used to discover court IDs for use in search and filter parameters across all other courtlistener tools. Defaults to the active bench — the courts CourtListener still scrapes; pass status:'inactive' for historical courts or status:'any' for every court. A bundled snapshot returns the complete list of matching court IDs without paging whenever the filtered set fits the response budget, which covers the default bench and every jurisdiction filter. Full court records — names, citation strings, scraper status — come live from CourtListener at a fixed 20 rows per page, so pull those only when a court ID alone is not enough.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
  • courtlistener_search_docketsSearch RECAP federal court dockets.No findings

    Why it is in this group

    • The name "courtlistener_search_dockets" says "search": a word for reading.
    Description, as the server wrote it
    Search RECAP federal court dockets. Query terms match case name, docket number, party, and attorney names; filters narrow by party name, court, and filing date. RECAP is a crowd-sourced mirror of PACER (the federal court filing system) — coverage varies by court and date. Returns docket metadata with the parties, attorneys, and firms of record, plus up to 3 sample document entries per docket. Use courtlistener_lookup_courts to find court IDs.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
  • courtlistener_search_financial_disclosuresSearch federal judicial financial disclosure filings — the annual reports judges file on investments, gifts, debts, outside positions, and income.No findings

    Why it is in this group

    • The name "courtlistener_search_financial_disclosures" says "search": a word for reading.
    Description, as the server wrote it
    Search federal judicial financial disclosure filings — the annual reports judges file on investments, gifts, debts, outside positions, and income. Filter by judge (person ID from courtlistener_search_judges) and/or filing year; the year filter is applied to the fetched page only (CourtListener has no server-side year filter), so page through with cursor to reach a judge's filings for a year that fall on later pages. Returns per-filing metadata, category counts, itemized gifts, and a link to the source PDF. Line-item investments (often hundreds per filing, with coded values) are summarized as counts; the linked PDF carries the full itemization. Use this for judicial-ethics and recusal research after identifying a judge's person ID.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
  • courtlistener_search_judgesSearch judge/person records by name, appointing president, court, political affiliation, or demographic.No findings

    Why it is in this group

    • The name "courtlistener_search_judges" says "search": a word for reading.
    Description, as the server wrote it
    Search judge/person records by name, appointing president, court, political affiliation, or demographic. Returns biographical data, current position, and appointment summary. Use courtlistener_get_judge for full appointment history and education records.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
  • courtlistener_search_opinionsFull-text search across 9M+ written US court opinions with field-level filtering.No findings

    Why it is in this group

    • The name "courtlistener_search_opinions" says "search": a word for reading.
    Description, as the server wrote it
    Full-text search across 9M+ written US court opinions with field-level filtering. Returns opinion cluster summaries with case metadata, citations, matched text snippets, and the individual opinion variants filed in each case. Supports CourtListener field syntax (caseName:"roe v wade", court_id:scotus, judge:"Alito") and boolean operators (AND, OR, NOT). Use courtlistener_lookup_courts to find court IDs. CourtListener publishes free-tier limits of 5 req/min, 50/hr, 125/day; actual limits vary by token tier.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false
  • courtlistener_search_oral_argumentsSearch appellate oral argument audio recordings — the largest public collection of oral argument audio.No findings

    Why it is in this group

    • The name "courtlistener_search_oral_arguments" says "search": a word for reading.
    Description, as the server wrote it
    Search appellate oral argument audio recordings — the largest public collection of oral argument audio. Returns recording metadata with two direct MP3 links per result (download_url at the originating court, local_path for CourtListener's durable copy), panel judge IDs, and transcript snippets where available. Panel judge IDs can be passed to courtlistener_get_judge for biographical context.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • idempotentHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.8.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http courtlistener https://courtlistener.caseyjhand.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__courtlistener__courtlistener_search_opinions",
      "mcp__courtlistener__courtlistener_get_opinion",
      "mcp__courtlistener__courtlistener_get_citations",
      "mcp__courtlistener__courtlistener_lookup_citation",
      "mcp__courtlistener__courtlistener_search_dockets",
      "mcp__courtlistener__courtlistener_get_docket",
      "mcp__courtlistener__courtlistener_get_parties",
      "mcp__courtlistener__courtlistener_search_judges",
      "mcp__courtlistener__courtlistener_get_judge",
      "mcp__courtlistener__courtlistener_lookup_courts",
      "mcp__courtlistener__courtlistener_search_oral_arguments",
      "mcp__courtlistener__courtlistener_get_oral_argument",
      "mcp__courtlistener__courtlistener_search_financial_disclosures",
      "mcp__courtlistener__courtlistener_get_financial_disclosure"
    ],
    "ask": [],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as courtlistener. Review it before you use it.