CourtListener

Search US case law, dockets, and opinions from the Free Law Project's archive. Sign in with CourtListener to connect.

OAuthWeb search19 tools
Tools

What CourtListener exposes.

Every tool below is one this server advertised the last time Omniio refreshed it, under the courtlistener__ namespace. Your agent never loads them all — it searches, and gets the few that match.

19 tools
  • courtlistener__analyze_citations3 arguments

    Analyze Citations

    Analyze and verify legal citations against CourtListener. Extracts all citations locally using eyecite, then verifies each unique case citation against CourtListener's database via the citation-lookup API. Returns case name, date, citation count, and verification status for each citation. For documents with more than 250 unique case citations, the first batch is verified immediately and a job_id is returned. Use resume_citation_analysis to continue verifying remaining citations. Terminology in the output: * **citation occurrence** — each citation as it appears in the text. * **unique citation string** — distinct ``volume reporter page`` triples (e.g., one case cited three times is one string). * **unique case cluster** — distinct CourtListener case clusters after parallel-citation dedup (several strings may map to one). Case-name cross-check: when a citation verifies by reporter but its input case name differs significantly from the cluster's canonical name, a WARNING is emitted flagging a possible hallucinated citation. Input should include exactly one of opinion_id or cluster_id.

  • courtlistener__call_endpoint3 arguments · 1 required

    Call API Endpoint

    Call CourtListener API endpoint. Use this for additional API endpoints which do not have a dedicated MCP tool. These endpoints are distinct from the search endpoint and often include more detailed metadata.

    Requiredendpoint_id

  • courtlistener__create_search_alert4 arguments · 3 required

    Create Search Alert

    Create a search alert on CourtListener. Use `call_endpoint` with endpoint_id "alerts" to list existing alerts.

    Requirednamequeryrate

  • courtlistener__delete_search_alert1 argument · 1 required

    Delete Search Alert

    Delete a search alert on CourtListener. Use `call_endpoint` with endpoint_id "alerts" to list existing alerts.

    Requiredid

  • courtlistener__extract_citations2 arguments · 1 required

    Extract Citations

    Extract and resolve legal citations from text using eyecite. Runs locally with no API calls or rate limits. Handles all citation types: full case citations, id., supra, short cites, and statutes. Use this tool to understand the citation structure of a document before selectively verifying citations with analyze_citations.

    Requiredtext

  • courtlistener__get_api_usageno arguments

    Get API Usage

    Check the user's CourtListener API usage and rate limits. Returns live usage per throttle scope, daily request counts for the last 14 days, and membership status. The `user` scope is the one that matters: it is the main API quota and governs nearly every endpoint and tool. When the user asks about their rate limit, remaining requests, or 429 errors, answer from the `user` scope; `summary` states it in plain language. The other scopes are narrow: `citations` counts citation lookups, `fetch` counts PACER fetch requests, and `api_usage` only limits this usage check itself. Do not confuse `api_usage` with the user's API usage. Each limit reports `used`, `limit`, `remaining`, `reset_at` (null when the window is empty) and `blocked`. This tool never spends the `user` quota, so it works while other tools are rate limited.

  • courtlistener__get_choices2 arguments · 2 required

    Get Field Choices

    Get the valid choices for a field on a CourtListener API endpoint. Use this when a field's schema says to look up choices with this tool.

    Requiredendpoint_idfield_name

  • courtlistener__get_counts1 argument · 1 required

    Get Result Count

    Get the number of results from a previous query. Some endpoints return the count lazily. Use this tool to retrieve the count from a previous query if it is not available.

    Requiredquery_id

  • courtlistener__get_endpoint_item3 arguments · 2 required

    Get Item by ID

    Get an item by ID from a CourtListener API endpoint.

    Requiredendpoint_iditem_id

  • courtlistener__get_endpoint_schema1 argument · 1 required

    Get Endpoint Schema

    Get the schema for a CourtListener API endpoint. Use this for additional API endpoints which do not have a dedicated MCP tool. These endpoints are distinct from the search endpoint and often include more detailed metadata.

    Requiredendpoint_id

  • courtlistener__get_more_results2 arguments · 1 required

    Get More Results

    Get more results from a previous query. Use this tool to continue paginating through results returned by the `search` or `call_endpoint` tools.

    Requiredquery_id

  • courtlistener__pray_for_document1 argument · 1 required

    Pray for Document

    Request a RECAP document that is not yet available on CourtListener through Pray and Pay. Prayers are pooled across users: when anyone buys the document from PACER, it is added to CourtListener for free and everyone praying for it is emailed. Nothing is charged to the user, but fulfillment is not immediate and not guaranteed. Only documents whose `is_available` is false need a prayer. This tool checks first and, if the document is already available, tells you to read it with `read_document` instead. Prayers count against a daily per-user limit, so only pray when the user actually wants the filing. Use `call_endpoint` with endpoint_id "prayers" to list the user's pending prayers.

    Requiredrecap_document_id

  • courtlistener__read_document5 arguments

    Read Document

    Read the full text of a court opinion or RECAP document. Fetches the document text and either returns it in full or as one or more paginated chunks. For opinions, uses the ``html_with_citations`` field (the most complete text representation). For RECAP documents, uses ``plain_text``. **Usage patterns** - *Full read*: omit ``chunk_index`` to receive the entire document along with its ``total_chars``. - *Single chunk*: pass an integer ``chunk_index`` (0-based) to receive one window of ``chunk_size`` characters. The response includes ``total_chunks`` so you can jump directly to any part of the document (e.g. set ``chunk_index`` to ``total_chunks - 1`` to read the conclusion). - *Multiple chunks*: pass a list of chunk indexes to retrieve several non-contiguous windows in a single call (up to 10). Useful when you already know the chunk size from a previous call and want the next N pages at once. Input should include exactly one of opinion_id, recap_document_id, or cluster_id.

  • courtlistener__resume_citation_analysis2 arguments · 1 required

    Resume Citation Analysis

    Resume verifying citations from a previous analysis. Use this after analyze_citations returns with pending citations due to rate limiting (more than 250 unique case citations). Takes the job_id and verifies the next batch.

    Requiredjob_id

  • courtlistener__search46 arguments

    Search

    Search for case law, dockets, judges, and oral arguments. When returning results to the user, consider presenting them as color-coded visual cards with clickable "view on CourtListener" links rather than plain text, grouping by relevance or significance where helpful. Fields like `absolute_url`, `caseName`, `dateFiled`, etc. can be useful here.

  • courtlistener__search_document5 arguments · 1 required

    Search Document

    Search for snippets within one or more court opinions or RECAP documents. Performs a case-insensitive literal search (similar to grep) and returns up to 20 matching excerpts per document with surrounding context. Use this to locate specific language—a party name, a statutory citation, a key phrase—without reading whole documents. Pass a list of IDs (up to 10) to search several documents in a single call. Results are returned as a list; errors on individual documents are included as an ``error`` field so one unavailable document does not abort the rest. When ``match_count`` exceeds ``shown``, the first 20 matches are returned. Use ``read_document`` with ``chunk_index`` to read the area around a match's ``position`` if you need more context. Input should include exactly one of opinion_id, recap_document_id, or cluster_id.

    Requiredquery

  • courtlistener__subscribe_to_docket_alert1 argument · 1 required

    Subscribe to Docket Alert

    Subscribe to alerts for a docket on CourtListener. Use `call_endpoint` with endpoint_id "docket-alerts" to list existing subscriptions.

    Requireddocket

  • courtlistener__unsubscribe_from_docket_alert1 argument · 1 required

    Unsubscribe from Docket Alert

    Unsubscribe from alerts for a docket on CourtListener. Looks up the alert by docket ID and deletes it, so you only need the docket ID (not the alert ID). Use `call_endpoint` with endpoint_id "docket-alerts" to list existing subscriptions.

    Requireddocket

  • courtlistener__withdraw_prayer1 argument · 1 required

    Withdraw Prayer

    Withdraw a pending Pray and Pay request for a RECAP document. Looks up the user's pending prayer by RECAP document ID and deletes it, so you only need the document ID (not the prayer ID). Prayers that have already been granted cannot be withdrawn and do not need to be: the document is available. Use `call_endpoint` with endpoint_id "prayers" to list the user's pending prayers.

    Requiredrecap_document_id

Connecting

Three steps, and the last one is not yours.

01

Point a client at Omniio

One URL, authorized once by your client. If you already use Omniio, this step is done.

02

Switch CourtListener on

Authorize it from your library; the grant is yours and stays yours.

03

Ask for what you need

The agent searches, reads the one schema it picked, and runs it. You do not name the tool.

claude code
claude mcp add --transport http omniio https://mcp.omniio.dev
Web search

Others in the same category.

They share the endpoint, so having more than one on costs you nothing in context — the search decides which is relevant.

Browse the whole library