Skip to content

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.

Changes · 3

34 tools: 3 change things and 31 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-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.

.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.