CourtListener
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
MCP for CourtListener: US federal and state opinions, dockets, judges, plus eCFR regulations.
| Author | io.github.Vaquill-AI |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 712 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"CourtListener": {
"url": "https://courtlistener-mcp.vaquill.ai/mcp/",
"transport": "streamable-http"
}
}
}
Measured tools (34)
statusCheck the status of the CourtListener MCP server. Returns: A dictionary containing server status, system metrics, and service information.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
search_opinionsread-onlySearch case law opinion clusters with nested Opinion documents in CourtListener.
Parameters:
q(required) — string — Search query for full text of opinionscourt— Court ID filter (e.g., 'scotus', 'ca9')judge— Filter by judge namelimit— integer — Max results from this page (upper bound; CL pages ~20)cursor— Pagination cursor from a prior response's next_cursorcited_gt— Minimum number of times opinion has been citedcited_lt— Maximum number of times opinion has been citedorder_by— string — Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'case_name— Filter by case namefiled_after— Only show opinions filed after this date (YYYY-MM-DD)filed_before— Only show opinions filed before this date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
search_docketsread-onlySearch federal cases (dockets) from PACER in CourtListener.
Parameters:
q(required) — string — Search query for docket textcourt— Court ID filter (e.g., 'scotus', 'ca9')limit— integer — Max results from this page (upper bound; CL pages ~20)cursor— Pagination cursor from a prior response's next_cursororder_by— string — Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'case_name— Filter by case nameparty_name— Filter by party namedocket_number— Specific docket number to search fordate_filed_after— Filter dockets filed after this date (YYYY-MM-DD)date_filed_before— Filter dockets filed before this date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
search_dockets_with_documentsread-onlySearch 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:
q(required) — string — Search query for federal casescourt— Court ID filter (e.g., 'scotus', 'ca9')limit— integer — Max results from this page (upper bound; CL pages ~20)cursor— Pagination cursor from a prior response's next_cursororder_by— string — Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'case_name— Filter by case nameparty_name— Filter by party namedocket_number— Specific docket number to search fordate_filed_after— Filter dockets filed after this date (YYYY-MM-DD)date_filed_before— Filter dockets filed before this date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
search_recap_documentsread-onlySearch federal filing documents from PACER in the RECAP archive.
Parameters:
q(required) — string — Search query for RECAP filing documentscourt— Court ID filter (e.g., 'scotus', 'ca9')limit— integer — Max results from this page (upper bound; CL pages ~20)cursor— Pagination cursor from a prior response's next_cursororder_by— string — Sort by 'score desc', 'dateFiled desc', or 'dateFiled asc'case_name— Filter by case nameparty_name— Filter by party namefiled_after— Filter documents filed after this date (YYYY-MM-DD)filed_before— Filter documents filed before this date (YYYY-MM-DD)docket_number— Specific docket number to search fordocument_number— Specific document number to search forattachment_number— Specific attachment number to search for
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
search_audioread-onlySearch oral argument audio recordings in CourtListener.
Parameters:
q(required) — string — Search query for oral argument audiocourt— Court ID filter (e.g., 'scotus', 'ca9')judge— Filter by judge namelimit— integer — Max results from this page (upper bound; CL pages ~20)cursor— Pagination cursor from a prior response's next_cursororder_by— string — Sort by 'score desc', 'dateArgued desc', or 'dateArgued asc'case_name— Filter by case nameargued_after— Filter arguments after this date (YYYY-MM-DD)argued_before— Filter arguments before this date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
search_peopleread-onlySearch judges and legal professionals in the CourtListener database.
Parameters:
q(required) — string — Search query for judges and legal professionalsname— Filter by person's namelimit— integer — Max results from this page (upper bound; CL pages ~20)cursor— Pagination cursor from a prior response's next_cursorschool— Filter by school attendedorder_by— string — Sort by 'score desc' or 'name asc'appointed_by— Filter by appointing authorityposition_type— Filter by position type (e.g., 'jud' for judge)selection_method— Filter by selection methodpolitical_affiliation— Filter by political affiliation
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_opinionread-onlyGet a specific court opinion by ID from CourtListener.
Parameters:
opinion_id(required) — string — The opinion ID to retrieve
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_docketread-onlyGet a specific court docket by ID from CourtListener.
Parameters:
docket_id(required) — string — The docket ID to retrieve
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_audioread-onlyGet oral argument audio information by ID from CourtListener.
Parameters:
audio_id(required) — string — The audio recording ID to retrieve
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_clusterread-onlyGet an opinion cluster by ID from CourtListener.
Parameters:
cluster_id(required) — string — The opinion cluster ID to retrieve
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_personread-onlyGet judge or legal professional information by ID from CourtListener.
Parameters:
person_id(required) — string — The person (judge) ID to retrieve
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_courtread-onlyGet court information by ID from CourtListener.
Parameters:
court_id(required) — string — The court ID to retrieve (e.g., 'scotus', 'ca9')
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
citation_lookup_citationread-onlyLook 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") - State reporter citations
Parameters:
citation(required) — string — The citation to look up (e.g., '410 U.S. 113', '2023 WL 12345')
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
citation_batch_lookup_citationsread-onlyLook 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:
citations(required) — array — List of citations to look up (max 100)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
citation_verify_citation_formatread-onlyVerify 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 regex matching. Returns information about the citation format and any detected issues.
Parameters:
citation(required) — string — The citation to verify
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
citation_parse_citation_with_citeurlread-onlyParse 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 including: - Recognized citation format and source - Extracted tokens (volume, reporter, page, etc.) - Generated URL if available - Normalized citation text
Parameters:
citation(required) — string — The citation to parse (e.g., '410 U.S. 113', '42 USC § 1988')broad— boolean — Use broad matching for more flexible parsing
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
citation_extract_citations_from_textread-onlyExtract 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:
text(required) — string — Text containing legal citations to extract
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
citation_enhanced_citation_lookupread-onlyEnhanced 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:
citation(required) — string — The citation to look up and analyzeinclude_courtlistener— boolean — Whether to also perform CourtListener API lookup
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_list_titlesread-onlyList all 50 CFR titles with their latest amended/issue dates and status.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_title_versionsread-onlyList the available content versions (issue dates) for one CFR title.
Parameters:
title(required) — integer — CFR title number (1-50)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_title_structureread-onlyGet the full hierarchical structure (title -> section) of a CFR title on a date.
Parameters:
title(required) — integer — CFR title number (1-50)date(required) — string — Snapshot date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_ancestryread-onlyGet the ancestry chain (title -> ... -> node) for a CFR node on a date.
Parameters:
title(required) — integer — CFR title number (1-50)date(required) — string — Snapshot date (YYYY-MM-DD)part— Restrict to a part, e.g. '75'section— Restrict to a section, e.g. '75.1'
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_source_xmlread-onlyFetch 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:
title(required) — integer — CFR title number (1-50)date(required) — string — Snapshot date (YYYY-MM-DD)part— Part to fetch, e.g. '75'. STRONGLY recommended: whole-title fetches can time out.chapter— Chapter, e.g. 'I'section— Section, e.g. '75.1'subpart— Subpart, e.g. 'C'appendix— Appendix identifiersubtitle— Subtitle, e.g. 'A'subchapter— Subchapter, e.g. 'B'
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_list_agenciesread-onlyList all agencies that appear in the CFR, with their title/chapter references.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_list_all_correctionsread-onlyList CFR corrections, optionally filtered by title and/or effective date.
Parameters:
date— Corrections in effect on this date (YYYY-MM-DD)title— Restrict to a CFR title number
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_list_corrections_by_titleread-onlyList all corrections for a single CFR title.
Parameters:
title(required) — integer — CFR title number (1-50)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_search_regulationsread-onlyFull-text search over federal regulations, returning matching sections with hierarchy.
Parameters:
query(required) — string — Full-text search query over the CFRdate— Search the CFR as of this date (YYYY-MM-DD)page— integer — Page numberorder— Sort order: 'relevance', 'hierarchy', 'newest_first', 'oldest_first'title— Restrict to a CFR title numberper_page— integer — Results per page (max 20)agency_slugs— Restrict to one or more agency slugs (from list_agencies)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_search_countread-onlyGet the total number of CFR sections matching a search query.
Parameters:
query(required) — string — Full-text search query over the CFRdate— As-of date (YYYY-MM-DD)title— Restrict to a titleagency_slugs— Restrict to agency slugs
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_search_summaryread-onlyGet summary details (counts + metadata) for a CFR search query.
Parameters:
query(required) — string — Full-text search query over the CFRdate— As-of date (YYYY-MM-DD)title— Restrict to a titleagency_slugs— Restrict to agency slugs
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_title_search_countsread-onlyGet search result counts broken down by CFR title.
Parameters:
query(required) — string — Full-text search query over the CFRdate— As-of date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_daily_search_countsread-onlyGet search result counts broken down by date (daily histogram).
Parameters:
query(required) — string — Full-text search query over the CFRdate— As-of date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_hierarchy_search_countsread-onlyGet search result counts distributed across the CFR hierarchy.
Parameters:
query(required) — string — Full-text search query over the CFRdate— As-of date (YYYY-MM-DD)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
ecfr_get_search_suggestionsread-onlyGet search-term suggestions for a partial CFR query.
Parameters:
query(required) — string — Partial query to get suggestions for
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.