CourtListener
by Vaquill-AI · remote · no sign-in to list tools · v0.1.0 · published by GitHub user Vaquill-AI
MCP for CourtListener: US federal and state opinions, dockets, judges, plus eCFR regulations.
34 tools: 3 change things and 31 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads31Claude Code: allow: see these tools
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-mcp.vaquill.ai/mcp/ --header 'X-CourtListener-Token: <your-x-courtlistener-token>'Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
34 tools
Changes things 3Claude Code: ask
citation_extract_citations_from_textExtract all legal citations from a block of text using citeurl.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
citation_parse_citation_with_citeurlParse a legal citation using citeurl's advanced citation recognition.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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 including: - Recognized citation format and source - Extracted tokens (volume, reporter, page, etc.) - Generated URL if available - Normalized citation text
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
citation_verify_citation_formatVerify if a citation string is in a valid format using citeurl's advanced parsing.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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 regex matching. Returns information about the citation format and any detected issues.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
Only reads 31Claude Code: allow
citation_batch_lookup_citationsLook up multiple legal citations in a single request.No findings
Why it is in this group
- The name "citation_batch_lookup_citations" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
citation_enhanced_citation_lookupEnhanced citation lookup combining citeurl parsing with CourtListener data.No findings
Why it is in this group
- The name "citation_enhanced_citation_lookup" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
citation_lookup_citationLook up a legal citation to find the opinion it references in CourtListener.No findings
Why it is in this group
- The name "citation_lookup_citation" says "lookup": a word for reading.
Description, as the server wrote it 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") - State reporter citations
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_ancestryGet the ancestry chain (title -> ...No findings
Why it is in this group
- The name "ecfr_get_ancestry" says "get": a word for reading.
Description, as the server wrote it Get the ancestry chain (title -> ... -> node) for a CFR node on a date.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_daily_search_countsGet search result counts broken down by date (daily histogram).No findings
Why it is in this group
- The name "ecfr_get_daily_search_counts" says "get": a word for reading.
Description, as the server wrote it Get search result counts broken down by date (daily histogram).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_hierarchy_search_countsGet search result counts distributed across the CFR hierarchy.No findings
Why it is in this group
- The name "ecfr_get_hierarchy_search_counts" says "get": a word for reading.
Description, as the server wrote it Get search result counts distributed across the CFR hierarchy.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_search_countGet the total number of CFR sections matching a search query.No findings
Why it is in this group
- The name "ecfr_get_search_count" says "get": a word for reading.
Description, as the server wrote it Get the total number of CFR sections matching a search query.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_search_suggestionsGet search-term suggestions for a partial CFR query.No findings
Why it is in this group
- The name "ecfr_get_search_suggestions" says "get": a word for reading.
Description, as the server wrote it Get search-term suggestions for a partial CFR query.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_search_summaryGet summary details (counts + metadata) for a CFR search query.No findings
Why it is in this group
- The name "ecfr_get_search_summary" says "get": a word for reading.
Description, as the server wrote it Get summary details (counts + metadata) for a CFR search query.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_source_xmlFetch the source regulation TEXT (XML) for a CFR node on a snapshot date.No findings
Why it is in this group
- The name "ecfr_get_source_xml" says "get": a word for reading.
Description, as the server wrote it 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``.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_title_search_countsGet search result counts broken down by CFR title.No findings
Why it is in this group
- The name "ecfr_get_title_search_counts" says "get": a word for reading.
Description, as the server wrote it Get search result counts broken down by CFR title.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_title_structureGet the full hierarchical structure (title -> section) of a CFR title on a date.No findings
Why it is in this group
- The name "ecfr_get_title_structure" says "get": a word for reading.
Description, as the server wrote it Get the full hierarchical structure (title -> section) of a CFR title on a date.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_get_title_versionsList the available content versions (issue dates) for one CFR title.No findings
Why it is in this group
- The name "ecfr_get_title_versions" says "get": a word for reading.
Description, as the server wrote it List the available content versions (issue dates) for one CFR title.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_list_agenciesList all agencies that appear in the CFR, with their title/chapter references.No findings
Why it is in this group
- The name "ecfr_list_agencies" says "list": a word for reading.
Description, as the server wrote it List all agencies that appear in the CFR, with their title/chapter references.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_list_all_correctionsList CFR corrections, optionally filtered by title and/or effective date.No findings
Why it is in this group
- The name "ecfr_list_all_corrections" says "list": a word for reading.
Description, as the server wrote it List CFR corrections, optionally filtered by title and/or effective date.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_list_corrections_by_titleList all corrections for a single CFR title.No findings
Why it is in this group
- The name "ecfr_list_corrections_by_title" says "list": a word for reading.
Description, as the server wrote it List all corrections for a single CFR title.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_list_titlesList all 50 CFR titles with their latest amended/issue dates and status.No findings
Why it is in this group
- The name "ecfr_list_titles" says "list": a word for reading.
Description, as the server wrote it List all 50 CFR titles with their latest amended/issue dates and status.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
ecfr_search_regulationsFull-text search over federal regulations, returning matching sections with hierarchy.No findings
Why it is in this group
- The name "ecfr_search_regulations" says "search": a word for reading.
Description, as the server wrote it Full-text search over federal regulations, returning matching sections with hierarchy.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_audioGet oral argument audio information by ID from CourtListener.No findings
Why it is in this group
- The name "get_audio" says "get": a word for reading.
Description, as the server wrote it Get oral argument audio information by ID from CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_clusterGet an opinion cluster by ID from CourtListener.No findings
Why it is in this group
- The name "get_cluster" says "get": a word for reading.
Description, as the server wrote it Get an opinion cluster by ID from CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_courtGet court information by ID from CourtListener.No findings
Why it is in this group
- The name "get_court" says "get": a word for reading.
Description, as the server wrote it Get court information by ID from CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_docketGet a specific court docket by ID from CourtListener.No findings
Why it is in this group
- The name "get_docket" says "get": a word for reading.
Description, as the server wrote it Get a specific court docket by ID from CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_opinionGet a specific court opinion by ID from CourtListener.No findings
Why it is in this group
- The name "get_opinion" says "get": a word for reading.
Description, as the server wrote it Get a specific court opinion by ID from CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_personGet judge or legal professional information by ID from CourtListener.No findings
Why it is in this group
- The name "get_person" says "get": a word for reading.
Description, as the server wrote it Get judge or legal professional information by ID from CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
search_audioSearch oral argument audio recordings in CourtListener.No findings
Why it is in this group
- The name "search_audio" says "search": a word for reading.
Description, as the server wrote it Search oral argument audio recordings in CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
search_docketsSearch federal cases (dockets) from PACER in CourtListener.No findings
Why it is in this group
- The name "search_dockets" says "search": a word for reading.
Description, as the server wrote it Search federal cases (dockets) from PACER in CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
search_dockets_with_documentsSearch federal cases (dockets) with up to three nested documents.No findings
Why it is in this group
- The name "search_dockets_with_documents" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
search_opinionsSearch case law opinion clusters with nested Opinion documents in CourtListener.No findings
Why it is in this group
- The name "search_opinions" says "search": a word for reading.
Description, as the server wrote it Search case law opinion clusters with nested Opinion documents in CourtListener.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
search_peopleSearch judges and legal professionals in the CourtListener database.No findings
Why it is in this group
- The name "search_people" says "search": a word for reading.
Description, as the server wrote it Search judges and legal professionals in the CourtListener database.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
search_recap_documentsSearch federal filing documents from PACER in the RECAP archive.No findings
Why it is in this group
- The name "search_recap_documents" says "search": a word for reading.
Description, as the server wrote it Search federal filing documents from PACER in the RECAP archive.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
statusCheck the status of the CourtListener MCP server.No findings
Why it is in this group
- The name "status" says "status": a word for reading.
Description, as the server wrote it Check the status of the CourtListener MCP server. Returns: A dictionary containing server status, system metrics, and service information.
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.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http courtlistener https://courtlistener-mcp.vaquill.ai/mcp/ --header 'X-CourtListener-Token: <your-x-courtlistener-token>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__courtlistener__status",
"mcp__courtlistener__search_opinions",
"mcp__courtlistener__search_dockets",
"mcp__courtlistener__search_dockets_with_documents",
"mcp__courtlistener__search_recap_documents",
"mcp__courtlistener__search_audio",
"mcp__courtlistener__search_people",
"mcp__courtlistener__get_opinion",
"mcp__courtlistener__get_docket",
"mcp__courtlistener__get_audio",
"mcp__courtlistener__get_cluster",
"mcp__courtlistener__get_person",
"mcp__courtlistener__get_court",
"mcp__courtlistener__citation_lookup_citation",
"mcp__courtlistener__citation_batch_lookup_citations",
"mcp__courtlistener__citation_enhanced_citation_lookup",
"mcp__courtlistener__ecfr_list_titles",
"mcp__courtlistener__ecfr_get_title_versions",
"mcp__courtlistener__ecfr_get_title_structure",
"mcp__courtlistener__ecfr_get_ancestry",
"mcp__courtlistener__ecfr_get_source_xml",
"mcp__courtlistener__ecfr_list_agencies",
"mcp__courtlistener__ecfr_list_all_corrections",
"mcp__courtlistener__ecfr_list_corrections_by_title",
"mcp__courtlistener__ecfr_search_regulations",
"mcp__courtlistener__ecfr_get_search_count",
"mcp__courtlistener__ecfr_get_search_summary",
"mcp__courtlistener__ecfr_get_title_search_counts",
"mcp__courtlistener__ecfr_get_daily_search_counts",
"mcp__courtlistener__ecfr_get_hierarchy_search_counts",
"mcp__courtlistener__ecfr_get_search_suggestions"
],
"ask": [
"mcp__courtlistener__citation_verify_citation_format",
"mcp__courtlistener__citation_parse_citation_with_citeurl",
"mcp__courtlistener__citation_extract_citations_from_text"
],
"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.
