# Court Listener (npm · @pipeworx/mcp-court-listener)

CourtListener MCP — Free Law Project's CourtListener API (v4).

- Trust score: 83/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `gateway.pipeworx.io`: 80/100, [markdown](https://verifymcp.io/servers/pipeworx-io-court-listener/court-listener-mcp.md), [page](https://verifymcp.io/servers/pipeworx-io-court-listener/court-listener-mcp)
- npm · `@pipeworx/mcp-court-listener`: 83/100 (this document), [markdown](https://verifymcp.io/servers/pipeworx-io-court-listener/pipeworx-mcp-court-listener.md), [page](https://verifymcp.io/servers/pipeworx-io-court-listener/pipeworx-mcp-court-listener)

## Channel facts

- Registry: `npm`
- Package: `@pipeworx/mcp-court-listener`
- Version: `0.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-court-listener).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 4 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2237 tokens (~203/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Court Listener MCP server?

Court Listener runs locally as an npm package, launched with npx -y @pipeworx/mcp-court-listener. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pipeworx-io-court-listener -- npx -y @pipeworx/mcp-court-listener
```

### Cursor

```json
{
  "mcpServers": {
    "pipeworx-io-court-listener": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-court-listener"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pipeworx-io-court-listener": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-court-listener"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pipeworx-io-court-listener -- npx -y @pipeworx/mcp-court-listener
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pipeworx-io-court-listener": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@pipeworx/mcp-court-listener"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pipeworx-io-court-listener --command npx --arg -y --arg @pipeworx/mcp-court-listener
```

### Hermes

```yaml
mcp_servers:
  pipeworx-io-court-listener:
    command: "npx"
    args: ["-y", "@pipeworx/mcp-court-listener"]
```

### Netclaw

```json
{
  "McpServers": {
    "pipeworx-io-court-listener": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@pipeworx/mcp-court-listener"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pipeworx-io-court-listener -t stdio -c npx -a -y @pipeworx/mcp-court-listener
```

### Other

```json
{
  "mcpServers": {
    "pipeworx-io-court-listener": {
      "command": "npx",
      "args": [
        "-y",
        "@pipeworx/mcp-court-listener"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 81, +26)

- [security improvement] Known CVEs: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional improvement] Dependency health: unverified → pass

### 2026-10-31 (score 55, −25)

- [security regression] Known CVEs: pass → unverified
- [security regression] Malware scan: pass → unverified
- [functional regression] Dependency health: pass → unverified
- [functional] Package version: 0.2.0 → 0.2.1

### 2026-10-29 (score 80)

First indexed and scored.

## MCP tools (11)

### `search_opinions` (~495 tokens)

Search US court opinions from CourtListener — 8.3 million of them, with no API key and no rate limit. Covers the UNITED STATES SUPREME COURT (SCOTUS), the federal circuit courts of appeals, the federal district courts, and the state courts (71% of the corpus is state case law). THE tool for what a US court HELD, decided or ruled in a NAMED CASE — "What did the Supreme Court hold in Air France v. Saks?", "Miranda v. Arizona", "the Ninth Circuit ruling in ..." — including the treaty and statutory questions such cases turn on (Warsaw Convention, ERISA, the Fourth Amendment). Matches the case name, the judge, and (where CourtListener recorded one) a nature-of-suit/disposition category, so it is strongest on party names, judges, and case categories ("workers compensation", "habeas", "immigration") and weaker on a legal DOCTRINE that would not appear in those fields (e.g. "qualified immunity") — use find_case when you know the party, and expect this to sometimes miss on doctrine-only phrasing. Filter by jurisdiction (state vs federal, inferred from the citation reporter) and by date_filed (the real ruling date). A specific court code (e.g. "scotus", "ca9") or a filing after the covered window falls back to a live, token-less CourtListener search automatically. Every result carries snapshot_date and opinion_ids to read with get_opinion.

Input parameters:

- `court` (string): A specific court code (e.g. "scotus", "ca9", "nysd"). Not available on the indexed search — supplying this falls back to a live CourtListener search.
- `date_after` (string): Only opinions with a real filing date (date_filed) on or after this date (YYYY-MM-DD).
- `date_before` (string): Only opinions with a real filing date (date_filed) on or before this date (YYYY-MM-DD).
- `jurisdiction` (string): Filter to state or federal case law (inferred from the reporter citation).
- `limit` (number): How many cases to return, 1–100 (default 10).
- `query` (string, required): Search keywords — strongest on party names, judges and case categories (e.g. "workers compensation", "Sotomayor").

### `search_dockets` (~141 tokens)

Search US court dockets by keyword. Covers PACER and RECAP archives. Each result carries docket_id, case name, court, filing and termination dates, docket number, nature of suit, the cause of action, the assigned judge, and the PACER case id.

Input parameters:

- `court` (string): Court filter (e.g., "nysd" for Southern District of New York)
- `limit` (number): How many dockets to return, 1–100 (default 20). CourtListener pages at 20, so higher values fetch additional pages.
- `query` (string, required): Search keywords (e.g., "antitrust merger")

### `search_case_law` (~209 tokens)

Search the FULL TEXT of US court opinions by subject matter — "qualified immunity for police dogs", "securities fraud scienter pleading standard". Searches the full text of CourtListener opinions with no API key and no rate limit, and returns the most relevant opinion ids, a relevance score and how often each case has been cited; set include_snippets for a passage around the match, or call get_opinion to read the whole thing. Use this when you know the TOPIC. To find a case by NAME use find_case; by reporter citation use lookup_citation. Phrase queries need quotes.

Input parameters:

- `include_snippets` (boolean): Return a passage of text around the match for each result (default false). Costs one extra fetch per result, so leave it off when you only need ids.
- `limit` (number): Maximum opinions to return (1-50, default 10).
- `query` (string, required): Subject matter to search for. Quote phrases: "clear and present danger".

### `find_case` (~141 tokens)

Find a US court case BY NAME and get its citations, filing date, judges and how often it has been cited. Searches 8.3 million opinions across 3,361 courts — no API key, no rate limit. Ranked by citation count, so the leading case for a name comes first. Use this when you know what the case is CALLED; use search_opinions when you only know the TOPIC.

Input parameters:

- `limit` (number): Maximum cases to return (1-25, default 5).
- `name` (string, required): Case name or a distinctive party, e.g. "Roe v. Wade" or "Sullivan".

### `lookup_citation` (~108 tokens)

Resolve a US reporter citation such as "410 U.S. 113" or "347 U.S. 483" to the case it refers to, with name, filing date, judges and citation count. No API key, no rate limit. Use when a brief, opinion or article cites a case by reporter and you need to know which case that is.

Input parameters:

- `citation` (string, required): Reporter citation: volume, reporter, page. E.g. "410 U.S. 113".

### `list_case_opinions` (~87 tokens)

List every opinion filed in one case (cluster) — majority, concurrences and dissents — with the opinion_id needed to read each one via get_opinion. No API key, no rate limit. Use after find_case or lookup_citation to get from a case to its readable text.

Input parameters:

- `cluster_id` (number, required): Cluster id from find_case or lookup_citation.

### `get_opinion` (~116 tokens)

Get the FULL TEXT of a US court opinion by its CourtListener opinion ID (the opinion_id returned by search_opinions). Covers 8.3 million opinions, 71% state case law — no API key needed. Returns the opinion text, the case name, the real filing date, author, citation count, whether the text came from OCR of a scan, and the data as-of date. Opinions filed after that date may fall through to live search.

Input parameters:

- `id` (number, required): CourtListener opinion ID (numeric)

### `list_docket_filings` (~198 tokens)

List the filings on a US FEDERAL district or bankruptcy court docket — every complaint, motion, order and exhibit RECAP has recorded for that case, in filing order, with the document id, entry number, filing date, page count and a link to the PDF. This is the docket sheet: what was filed, when, and by which entry number. Each filing reports whether its PDF is actually held (`pdf_available`); RECAP holds the docket text for far more filings than it holds documents, so treat a filing with no PDF as a real filing whose document nobody has purchased yet, not as a missing record. Takes the docket_id from search_dockets. Court opinions are a different thing and live in search_case_law / get_opinion.

Input parameters:

- `docket_id` (number, required): Docket id from search_dockets (the docket_id field).
- `limit` (number): Maximum filings to return (default 20).

### `get_docket_filing` (~125 tokens)

Get one filing from a US federal court docket by its document id — the entry description as the clerk wrote it, the filing date, page count, the docket_id it belongs to, a text excerpt where the document has been scanned, and a direct PDF link. Use after list_docket_filings or search_court_filings to read a specific document. Returns pdf_available false when RECAP has the docket entry but not the document itself.

Input parameters:

- `document_id` (number, required): RECAP document id, from list_docket_filings or search_court_filings.

### `search_court_filings` (~200 tokens)

Search the TEXT of US federal court filings — complaints, motions, briefs, orders and exhibits from PACER as archived in RECAP, roughly 9.7 million documents. Use this to find what was actually argued or ordered in litigation ("trade secret misappropriation", a company named as a defendant, a specific contract term), as opposed to the appellate opinions that search_case_law covers. Returns the filing description as the clerk wrote it, the filing date, a matching text excerpt, a PDF link where the document is held, and the docket_id to read the rest of that case with list_docket_filings. Quote a phrase to search it exactly.

Input parameters:

- `court` (string): Optional court code to narrow to, e.g. "cand" or "txsd".
- `limit` (number): Maximum filings to return (default 20).
- `query` (string, required): Search text. Quote a phrase for an exact match.

### `find_case_patents` (~362 tokens)

Patent litigation cross-reference: a named US district-court case to its docket, its asserted patent NUMBERS, and its defendants. Pass a case name (e.g. "TurboCode LLC v. Quectel Wireless Solutions") or a docket_id already known from search_dockets. Patent numbers come ONLY from text CourtListener/RECAP already indexes — the clerk's own docket-entry descriptions (e.g. an exhibit filed as "United States Patent No. 6,813,742") and the text of any document someone else has already purchased from PACER — never from buying a PACER document. Each patent number says exactly which filing it was found in and the label that preceded it, and carries USPTO patent metadata (title, status, grant date, inventor) when a platform USPTO key is configured — the number is still returned without one. Defendants come from the case caption CourtListener indexed, not an authenticated PACER party list, and say so. This is a thin cross-reference: a patent asserted only inside an unpurchased complaint PDF, or a defendant list CourtListener truncated with "et al.", will not be complete here — the response names that gap rather than hiding it.

Input parameters:

- `case_name` (string): Case name, e.g. "TurboCode LLC v. Quectel Wireless Solutions". Required unless docket_id is given.
- `court` (string): Optional court filter when searching by case_name (e.g. "txed" for E.D. Texas).
- `docket_id` (number): Docket id already known from search_dockets. Skips the case-name lookup.
- `filing_limit` (number): How many docket filings to scan for patent numbers (default 50, max 100).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pipeworx-io-court-listener/pipeworx-mcp-court-listener#diagnostics

## Score history

- 2026-11-05: 83
- 2026-11-04: 82
- 2026-11-03: 82
- 2026-11-02: 81
- 2026-11-01: 81
- 2026-10-31: 55
- 2026-10-30: 80
- 2026-10-29: 80

## Common questions

### What is the Court Listener MCP server?

Court Listener is an MCP server listed in the public MCP registry as io.github.pipeworx-io/court-listener. CourtListener MCP, Free Law Project's CourtListener API (v4). This page covers its npm package (@pipeworx/mcp-court-listener).

### Is the Court Listener MCP server safe to use?

Court Listener scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Court Listener MCP server expose?

Court Listener exposes 11 tools: search_opinions, search_dockets, search_case_law, find_case, lookup_citation, and 6 more. Their descriptions and schemas cost roughly 2,182 tokens of context every time the server is loaded.

### Is the Court Listener MCP server still maintained?

Court Listener is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Court Listener MCP server under?

Court Listener declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@pipeworx/mcp-court-listener
- Socket report: https://socket.dev/npm/package/@pipeworx/mcp-court-listener
- Repository: https://github.com/pipeworx-io/mcp-court-listener
- Website: https://pipeworx.io/packs/court-listener
- Changelog RSS feed: https://verifymcp.io/servers/pipeworx-io-court-listener/pipeworx-mcp-court-listener.xml
- Changelog JSON feed: https://verifymcp.io/servers/pipeworx-io-court-listener/pipeworx-mcp-court-listener.json
- HTML version of this page: https://verifymcp.io/servers/pipeworx-io-court-listener/pipeworx-mcp-court-listener
