protogrid

Search / io.github.Vaquill-AI/courtlistener-mcp

CourtListener

R1· needs a key

MCP for CourtListener: US federal and state opinions, dockets, judges, plus eCFR regulations.

v0.1.0 · active · repository · descriptor JSON · versions

An agent can connect on its own if it already holds X_COURTLISTENER_TOKEN, X_COURTLISTENER_TOKEN.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality85good
Trust87of 100
Uptime, 30 days100%
Latency p50721 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "courtlistener-mcp": {
      "type": "http",
      "url": "https://courtlistener-mcp.vaquill.ai/mcp/",
      "headers": {
        "X-CourtListener-Token": "${X_COURTLISTENER_TOKEN}",
        "Authorization": "${X_COURTLISTENER_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http courtlistener-mcp https://courtlistener-mcp.vaquill.ai/mcp/ --header "X-CourtListener-Token: ${X_COURTLISTENER_TOKEN}" --header "Authorization: ${X_COURTLISTENER_TOKEN}"
[mcp_servers.courtlistener-mcp]
url = "https://courtlistener-mcp.vaquill.ai/mcp/"
env_http_headers = { "X-CourtListener-Token" = "X_COURTLISTENER_TOKEN", "Authorization" = "X_COURTLISTENER_TOKEN" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "courtlistener-mcp": {
      "type": "remote",
      "url": "https://courtlistener-mcp.vaquill.ai/mcp/",
      "enabled": true,
      "headers": {
        "X-CourtListener-Token": "{env:X_COURTLISTENER_TOKEN}",
        "Authorization": "{env:X_COURTLISTENER_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "courtlistener-mcp": {
      "type": "http",
      "url": "https://courtlistener-mcp.vaquill.ai/mcp/",
      "headers": {
        "X-CourtListener-Token": "${X_COURTLISTENER_TOKEN}",
        "Authorization": "${X_COURTLISTENER_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=courtlistener-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vY291cnRsaXN0ZW5lci1tY3AudmFxdWlsbC5haS9tY3AvIiwiaGVhZGVycyI6eyJYLUNvdXJ0TGlzdGVuZXItVG9rZW4iOiIke1hfQ09VUlRMSVNURU5FUl9UT0tFTn0iLCJBdXRob3JpemF0aW9uIjoiJHtYX0NPVVJUTElTVEVORVJfVE9LRU59In19"
}
{
  "servers": {
    "courtlistener-mcp": {
      "type": "http",
      "url": "https://courtlistener-mcp.vaquill.ai/mcp/",
      "headers": {
        "X-CourtListener-Token": "${X_COURTLISTENER_TOKEN}",
        "Authorization": "${X_COURTLISTENER_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "courtlistener-mcp": {
      "httpUrl": "https://courtlistener-mcp.vaquill.ai/mcp/",
      "headers": {
        "X-CourtListener-Token": "${X_COURTLISTENER_TOKEN}",
        "Authorization": "${X_COURTLISTENER_TOKEN}"
      }
    }
  }
}
extensions:
  "courtlistener-mcp":
    enabled: true
    name: "courtlistener-mcp"
    type: streamable_http
    uri: "https://courtlistener-mcp.vaquill.ai/mcp/"
    headers:
      "X-CourtListener-Token": "${X_COURTLISTENER_TOKEN}"
      "Authorization": "${X_COURTLISTENER_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${X_COURTLISTENER_TOKEN}, ${X_COURTLISTENER_TOKEN}. The registry never accepts secret values.

Quality 85 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations33 of 34 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: search_opinions (destructiveHint, idempotentHint); search_dockets_with_documents (destructiveHint, idempotentHint); search_recap_documents (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 5,526 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

34 tools, about 5,526 tokens to load them all · tool set 84802d82605e · checked 2026-10-19 18:29 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 87 / 100

provenance80
liveness100
freshness65
hygiene100

+repository +namespace-matches-repo +reachable +uptime-100% ~updated-158d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://courtlistener-mcp.vaquill.ai/mcp/ streamable-httpapi_key ${X_COURTLISTENER_TOKEN}yes100%721 ms2025-11-252026-10-19

Tools (34)

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.
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.
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).
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
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
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.
ecfr_get_ancestryread-onlyGet the ancestry chain (title -> ... -> node) for a CFR node on a date.
ecfr_get_daily_search_countsread-onlyGet search result counts broken down by date (daily histogram).
ecfr_get_hierarchy_search_countsread-onlyGet search result counts distributed across the CFR hierarchy.
ecfr_get_search_countread-onlyGet the total number of CFR sections matching a search query.
ecfr_get_search_suggestionsread-onlyGet search-term suggestions for a partial CFR query.
ecfr_get_search_summaryread-onlyGet summary details (counts + metadata) for a CFR search query.
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``.
ecfr_get_title_search_countsread-onlyGet search result counts broken down by CFR title.
ecfr_get_title_structureread-onlyGet the full hierarchical structure (title -> section) of a CFR title on a date.
ecfr_get_title_versionsread-onlyList the available content versions (issue dates) for one CFR title.
ecfr_list_agenciesread-onlyList all agencies that appear in the CFR, with their title/chapter references.
ecfr_list_all_correctionsread-onlyList CFR corrections, optionally filtered by title and/or effective date.
ecfr_list_corrections_by_titleread-onlyList all corrections for a single CFR title.
ecfr_list_titlesread-onlyList all 50 CFR titles with their latest amended/issue dates and status.
ecfr_search_regulationsread-onlyFull-text search over federal regulations, returning matching sections with hierarchy.
get_audioread-onlyGet oral argument audio information by ID from CourtListener.
get_clusterread-onlyGet an opinion cluster by ID from CourtListener.
get_courtread-onlyGet court information by ID from CourtListener.
get_docketread-onlyGet a specific court docket by ID from CourtListener.
get_opinionread-onlyGet a specific court opinion by ID from CourtListener.
get_personread-onlyGet judge or legal professional information by ID from CourtListener.
search_audioread-onlySearch oral argument audio recordings in CourtListener.
search_docketsread-onlySearch federal cases (dockets) from PACER in CourtListener.
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.
search_opinionsread-onlySearch case law opinion clusters with nested Opinion documents in CourtListener.
search_peopleread-onlySearch judges and legal professionals in the CourtListener database.
search_recap_documentsread-onlySearch federal filing documents from PACER in the RECAP archive.
statusCheck the status of the CourtListener MCP server. Returns: A dictionary containing server status, system metrics, and service information.

Schemas: list_tools.

Similar MCP servers

More from io.github.Vaquill-AI

Official server.json
{
  "name": "io.github.Vaquill-AI/courtlistener-mcp",
  "title": "CourtListener",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://courtlistener-mcp.vaquill.ai/mcp/",
      "type": "streamable-http",
      "headers": [
        {
          "name": "X-CourtListener-Token",
          "format": "string",
          "isSecret": true,
          "isRequired": true,
          "description": "Your free CourtListener API token from https://www.courtlistener.com/help/api/rest/. The server never stores your key."
        }
      ]
    }
  ],
  "version": "0.1.0",
  "repository": {
    "url": "https://github.com/Vaquill-AI/courtlistener-mcp",
    "source": "github"
  },
  "description": "MCP for CourtListener: US federal and state opinions, dockets, judges, plus eCFR regulations."
}