vaquill-ai avatar

CourtListener

vaquill-ai/courtlistener-mcp

Connects Claude to CourtListener's v4 API and the Electronic Code of Federal Regulations, giving you programmatic access to US federal and state court opinions, dockets, RECAP filings, oral arguments, judge profiles, and live eCFR regulations. You get 25+ tools spanning search, citation parsing, batch lookup, and regulatory text retrieval. The Vaquill team runs a public HTTPS endpoint where you bring your own free CourtListener token via custom headers, so there's no local install required for Claude Desktop, Cursor, or VS Code. Useful when you're building legal research workflows, need to verify citations in context, or want to pull current CFR text without leaving your editor.

GitHub stars
1
tools
34
auth
Secret needed
transport
HTTP
last updated
May 15, 2026

Install

From registry metadata
$ npx add-mcp https://courtlistener-mcp.vaquill.ai/mcp/ --name courtlistener-mcp --header 'X-CourtListener-Token: ${X_COURTLISTENER_TOKEN}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http courtlistener-mcp https://courtlistener-mcp.vaquill.ai/mcp/ --header 'X-CourtListener-Token: YOUR_X_COURTLISTENER_TOKEN'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 34 tools

Verified live against the running server on Nov 6, 2026.

statusCheck the status of the CourtListener MCP server. Returns: A dictionary containing server status, system metrics, and service information.

Check the status of the CourtListener MCP server. Returns: A dictionary containing server status, system metrics, and service information.

No parameters. Call it with no arguments.

search_opinionsSearch case law opinion clusters with nested Opinion documents in CourtListener.11 params

Search case law opinion clusters with nested Opinion documents in CourtListener.

Parameters* required
case_namevalue
Filter by case name
cited_gtvalue
Minimum number of times opinion has been cited
cited_ltvalue
Maximum number of times opinion has been cited
courtvalue
Court ID filter (e.g., 'scotus', 'ca9')
cursorvalue
Pagination cursor from a prior response's next_cursor
filed_aftervalue
Only show opinions filed after this date (YYYY-MM-DD)
filed_beforevalue
Only show opinions filed before this date (YYYY-MM-DD)
judgevalue
Filter by judge name
limitinteger
Max results from this page (upper bound; CL pages ~20)default: 20
order_bystring
Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'default: score desc
q*string
Search query for full text of opinions
search_docketsSearch federal cases (dockets) from PACER in CourtListener.10 params

Search federal cases (dockets) from PACER in CourtListener.

Parameters* required
case_namevalue
Filter by case name
courtvalue
Court ID filter (e.g., 'scotus', 'ca9')
cursorvalue
Pagination cursor from a prior response's next_cursor
date_filed_aftervalue
Filter dockets filed after this date (YYYY-MM-DD)
date_filed_beforevalue
Filter dockets filed before this date (YYYY-MM-DD)
docket_numbervalue
Specific docket number to search for
limitinteger
Max results from this page (upper bound; CL pages ~20)default: 20
order_bystring
Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'default: score desc
party_namevalue
Filter by party name
q*string
Search query for docket text
search_dockets_with_documentsSearch federal cases (dockets) with up to three nested documents. If there are more than three matching documents, the more_docs field will be true.10 params

Search federal cases (dockets) with up to three nested documents. If there are more than three matching documents, the more_docs field will be true.

Parameters* required
case_namevalue
Filter by case name
courtvalue
Court ID filter (e.g., 'scotus', 'ca9')
cursorvalue
Pagination cursor from a prior response's next_cursor
date_filed_aftervalue
Filter dockets filed after this date (YYYY-MM-DD)
date_filed_beforevalue
Filter dockets filed before this date (YYYY-MM-DD)
docket_numbervalue
Specific docket number to search for
limitinteger
Max results from this page (upper bound; CL pages ~20)default: 20
order_bystring
Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'default: score desc
party_namevalue
Filter by party name
q*string
Search query for federal cases
search_recap_documentsSearch federal filing documents from PACER in the RECAP archive.12 params

Search federal filing documents from PACER in the RECAP archive.

Parameters* required
attachment_numbervalue
Specific attachment number to search for
case_namevalue
Filter by case name
courtvalue
Court ID filter (e.g., 'scotus', 'ca9')
cursorvalue
Pagination cursor from a prior response's next_cursor
docket_numbervalue
Specific docket number to search for
document_numbervalue
Specific document number to search for
filed_aftervalue
Filter documents filed after this date (YYYY-MM-DD)
filed_beforevalue
Filter documents filed before this date (YYYY-MM-DD)
limitinteger
Max results from this page (upper bound; CL pages ~20)default: 20
order_bystring
Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'default: score desc
party_namevalue
Filter by party name
q*string
Search query for RECAP filing documents
search_audioSearch oral argument audio recordings in CourtListener.9 params

Search oral argument audio recordings in CourtListener.

Parameters* required
argued_aftervalue
Filter arguments after this date (YYYY-MM-DD)
argued_beforevalue
Filter arguments before this date (YYYY-MM-DD)
case_namevalue
Filter by case name
courtvalue
Court ID filter (e.g., 'scotus', 'ca9')
cursorvalue
Pagination cursor from a prior response's next_cursor
judgevalue
Filter by judge name
limitinteger
Max results from this page (upper bound; CL pages ~20)default: 20
order_bystring
Sort by 'score desc', 'dateArgued desc', or 'dateArgued asc'default: score desc
q*string
Search query for oral argument audio
search_peopleSearch judges and legal professionals in the CourtListener database.10 params

Search judges and legal professionals in the CourtListener database.

Parameters* required
appointed_byvalue
Filter by appointing authority
cursorvalue
Pagination cursor from a prior response's next_cursor
limitinteger
Max results from this page (upper bound; CL pages ~20)default: 20
namevalue
Filter by person's name
order_bystring
Sort by 'score desc' or 'name asc'default: score desc
political_affiliationvalue
Filter by political affiliation
position_typevalue
Filter by position type (e.g., 'jud' for judge)
q*string
Search query for judges and legal professionals
schoolvalue
Filter by school attended
selection_methodvalue
Filter by selection method
get_opinionGet a specific court opinion by ID from CourtListener.1 params

Get a specific court opinion by ID from CourtListener.

Parameters* required
opinion_id*string
The opinion ID to retrieve
get_docketGet a specific court docket by ID from CourtListener.1 params

Get a specific court docket by ID from CourtListener.

Parameters* required
docket_id*string
The docket ID to retrieve
get_audioGet oral argument audio information by ID from CourtListener.1 params

Get oral argument audio information by ID from CourtListener.

Parameters* required
audio_id*string
The audio recording ID to retrieve
get_clusterGet an opinion cluster by ID from CourtListener.1 params

Get an opinion cluster by ID from CourtListener.

Parameters* required
cluster_id*string
The opinion cluster ID to retrieve
get_personGet judge or legal professional information by ID from CourtListener.1 params

Get judge or legal professional information by ID from CourtListener.

Parameters* required
person_id*string
The person (judge) ID to retrieve
get_courtGet court information by ID from CourtListener.1 params

Get court information by ID from CourtListener.

Parameters* required
court_id*string
The court ID to retrieve (e.g., 'scotus', 'ca9')
citation_lookup_citationLook up a legal citation to find the opinion it references in CourtListener. This tool accepts various citation formats including: - U.S. Reporter citations (e.g., "410 U.S. 113") - Federal Reporter citations (e.g., "123 F.3d 456") - WestLaw citations (e.g., "2023 WL 12345") -...1 params

Look up a legal citation to find the opinion it references in CourtListener. This tool accepts various citation formats including: - U.S. Reporter citations (e.g., "410 U.S. 113") - Federal Reporter citations (e.g., "123 F.3d 456") - WestLaw citations (e.g., "2023 WL 12345") -...

Parameters* required
citation*string
The citation to look up (e.g., '410 U.S. 113', '2023 WL 12345')
citation_batch_lookup_citationsLook up multiple legal citations in a single request. This is more efficient than making individual requests for each citation. Accepts up to 100 citations at once.1 params

Look up multiple legal citations in a single request. This is more efficient than making individual requests for each citation. Accepts up to 100 citations at once.

Parameters* required
citations*array
List of citations to look up (max 100)
citation_verify_citation_formatVerify if a citation string is in a valid format using citeurl's advanced parsing. This tool performs validation using citeurl's comprehensive citation templates to check if a citation appears to be in a recognized legal citation format. This is much more accurate than simple...1 params

Verify if a citation string is in a valid format using citeurl's advanced parsing. This tool performs validation using citeurl's comprehensive citation templates to check if a citation appears to be in a recognized legal citation format. This is much more accurate than simple...

Parameters* required
citation*string
The citation to verify
citation_parse_citation_with_citeurlParse a legal citation using citeurl's advanced citation recognition. This tool uses the citeurl library to parse legal citations and extract structured information including tokens, normalized format, and URL generation. Returns detailed information about the citation includi...2 params

Parse a legal citation using citeurl's advanced citation recognition. This tool uses the citeurl library to parse legal citations and extract structured information including tokens, normalized format, and URL generation. Returns detailed information about the citation includi...

Parameters* required
broadboolean
Use broad matching for more flexible parsingdefault: true
citation*string
The citation to parse (e.g., '410 U.S. 113', '42 USC § 1988')
citation_extract_citations_from_textExtract all legal citations from a block of text using citeurl. This tool finds and parses all legal citations within a given text, including both long-form and short-form citations (like 'id.' references).1 params

Extract all legal citations from a block of text using citeurl. This tool finds and parses all legal citations within a given text, including both long-form and short-form citations (like 'id.' references).

Parameters* required
text*string
Text containing legal citations to extract
citation_enhanced_citation_lookupEnhanced citation lookup combining citeurl parsing with CourtListener data. This tool first uses citeurl to parse and validate the citation format, then optionally queries the CourtListener API for additional case information.2 params

Enhanced citation lookup combining citeurl parsing with CourtListener data. This tool first uses citeurl to parse and validate the citation format, then optionally queries the CourtListener API for additional case information.

Parameters* required
citation*string
The citation to look up and analyze
include_courtlistenerboolean
Whether to also perform CourtListener API lookupdefault: true
ecfr_list_titlesList all 50 CFR titles with their latest amended/issue dates and status.

List all 50 CFR titles with their latest amended/issue dates and status.

No parameters. Call it with no arguments.

ecfr_get_title_versionsList the available content versions (issue dates) for one CFR title.1 params

List the available content versions (issue dates) for one CFR title.

Parameters* required
title*integer
CFR title number (1-50)
ecfr_get_title_structureGet the full hierarchical structure (title -> section) of a CFR title on a date.2 params

Get the full hierarchical structure (title -> section) of a CFR title on a date.

Parameters* required
date*string
Snapshot date (YYYY-MM-DD)
title*integer
CFR title number (1-50)
ecfr_get_ancestryGet the ancestry chain (title -> ... -> node) for a CFR node on a date.4 params

Get the ancestry chain (title -> ... -> node) for a CFR node on a date.

Parameters* required
date*string
Snapshot date (YYYY-MM-DD)
partvalue
Restrict to a part, e.g. '75'
sectionvalue
Restrict to a section, e.g. '75.1'
title*integer
CFR title number (1-50)
ecfr_get_source_xmlFetch the source regulation TEXT (XML) for a CFR node on a snapshot date. Pass a part or section to scope the request. Fetching an entire large title at once can time out on the eCFR side, so narrowing is strongly recommended. Returns the raw XML under ``content_xml``.9 params

Fetch the source regulation TEXT (XML) for a CFR node on a snapshot date. Pass a part or section to scope the request. Fetching an entire large title at once can time out on the eCFR side, so narrowing is strongly recommended. Returns the raw XML under ``content_xml``.

Parameters* required
appendixvalue
Appendix identifier
chaptervalue
Chapter, e.g. 'I'
date*string
Snapshot date (YYYY-MM-DD)
partvalue
Part to fetch, e.g. '75'. STRONGLY recommended: whole-title fetches can time out.
sectionvalue
Section, e.g. '75.1'
subchaptervalue
Subchapter, e.g. 'B'
subpartvalue
Subpart, e.g. 'C'
subtitlevalue
Subtitle, e.g. 'A'
title*integer
CFR title number (1-50)
ecfr_list_agenciesList all agencies that appear in the CFR, with their title/chapter references.

List all agencies that appear in the CFR, with their title/chapter references.

No parameters. Call it with no arguments.

ecfr_list_all_correctionsList CFR corrections, optionally filtered by title and/or effective date.2 params

List CFR corrections, optionally filtered by title and/or effective date.

Parameters* required
datevalue
Corrections in effect on this date (YYYY-MM-DD)
titlevalue
Restrict to a CFR title number
ecfr_list_corrections_by_titleList all corrections for a single CFR title.1 params

List all corrections for a single CFR title.

Parameters* required
title*integer
CFR title number (1-50)
ecfr_search_regulationsFull-text search over federal regulations, returning matching sections with hierarchy.7 params

Full-text search over federal regulations, returning matching sections with hierarchy.

Parameters* required
agency_slugsvalue
Restrict to one or more agency slugs (from list_agencies)
datevalue
Search the CFR as of this date (YYYY-MM-DD)
ordervalue
Sort order: 'relevance', 'hierarchy', 'newest_first', 'oldest_first'
pageinteger
Page numberdefault: 1
per_pageinteger
Results per page (max 20)default: 20
query*string
Full-text search query over the CFR
titlevalue
Restrict to a CFR title number
ecfr_get_search_countGet the total number of CFR sections matching a search query.4 params

Get the total number of CFR sections matching a search query.

Parameters* required
agency_slugsvalue
Restrict to agency slugs
datevalue
As-of date (YYYY-MM-DD)
query*string
Full-text search query over the CFR
titlevalue
Restrict to a title
ecfr_get_search_summaryGet summary details (counts + metadata) for a CFR search query.4 params

Get summary details (counts + metadata) for a CFR search query.

Parameters* required
agency_slugsvalue
Restrict to agency slugs
datevalue
As-of date (YYYY-MM-DD)
query*string
Full-text search query over the CFR
titlevalue
Restrict to a title
ecfr_get_title_search_countsGet search result counts broken down by CFR title.2 params

Get search result counts broken down by CFR title.

Parameters* required
datevalue
As-of date (YYYY-MM-DD)
query*string
Full-text search query over the CFR
ecfr_get_daily_search_countsGet search result counts broken down by date (daily histogram).2 params

Get search result counts broken down by date (daily histogram).

Parameters* required
datevalue
As-of date (YYYY-MM-DD)
query*string
Full-text search query over the CFR
ecfr_get_hierarchy_search_countsGet search result counts distributed across the CFR hierarchy.2 params

Get search result counts distributed across the CFR hierarchy.

Parameters* required
datevalue
As-of date (YYYY-MM-DD)
query*string
Full-text search query over the CFR
ecfr_get_search_suggestionsGet search-term suggestions for a partial CFR query.1 params

Get search-term suggestions for a partial CFR query.

Parameters* required
query*string
Partial query to get suggestions for

Sponsors

Readme

CourtListener MCP Server

A Model Context Protocol server that gives AI assistants access to the CourtListener legal database (US federal + state court opinions, dockets, RECAP filings, PACER data, oral arguments, judges) and the Electronic Code of Federal Regulations via the official CourtListener API v4.

Use it with Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, ChatGPT Desktop, or any MCP-compatible client.

Forked from Travis-Prall/court-listener-mcp. This fork adds a hosted endpoint, bring-your-own-key (BYOK) auth, a /health route, Dockerfile hardening, a full eCFR (federal regulations) tool suite, cursor pagination, per-client rate limiting, and read-only tool annotations. See the changelog for details.

When to use this vs. the official server


View the full README on GitHub

Details

Repository
github.com/vaquill-ai/courtlistener-mcp
Transport
HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

More from vaquill-ai