# PACER Court Records Intelligence MCP — 1B+ Federal Cases (`andrew_avina/pacer-intelligence-mcp`) Actor

The PACER Court Records Intelligence MCP is an Apify actor that exposes CourtListener's comprehensive federal court database via the Model Context Protocol (MCP). It gives AI assistants — Claude, GPT-4, and any MCP-compatible agent — direct, structured access to over one billi...

- **URL**: https://apify.com/andrew\_avina/pacer-intelligence-mcp.md
- **Developed by:** [Andrew Avina](https://apify.com/andrew_avina) (community)
- **Categories:** MCP servers, Business
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 result item returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## PACER Court Records Intelligence MCP
#### Search 1B+ Federal Court Records — Free, No Auth Required

The **PACER Court Records Intelligence MCP** is an Apify actor that exposes CourtListener's comprehensive federal court database via the Model Context Protocol (MCP). It gives AI assistants — Claude, GPT-4, and any MCP-compatible agent — direct, structured access to over one billion federal court records including every opinion ever published by the US federal courts, live docket data from PACER, citation networks, and judge analytics.

Unlike PACER's cumbersome, paid web interface ($0.10/page, minimum $30 setup), this actor provides **free, programmatic access** to the same underlying data through CourtListener's free REST API — structured, clean, and ready for AI consumption.

---

### What This Solves

**The problem with PACER:** Federal court data is trapped behind a per-page fee system that makes programmatic access expensive and painful. Attorneys pay $0.10 per page for records that should be public. Downloading a docket with 500 entries costs $50. There is no official search API.

**The CourtListener solution:** The Free Law Project's CourtListener indexes all public federal court records — opinions, dockets, oral arguments, and citation networks — and provides a free REST API with no authentication required for read-only access. This actor wraps that API with an MCP interface, making it natively accessible to any AI assistant.

---

### Who This Is For

#### Litigation Attorneys and Paralegals
- Monitor all new opinions in your practice area (patent, antitrust, securities)
- Track opposing counsel's litigation history across all federal courts
- Identify favorable circuits for your legal theory using precedent analysis
- Alert on new cases involving your client's patents or trademarks

#### M&A Due Diligence Teams
- Screen acquisition targets for undisclosed federal litigation exposure
- Search by company name across all federal district courts simultaneously
- Identify pending patent litigation that could affect deal value
- Review executive history for personal federal court involvement

#### Legal Operations and GC Offices
- Monitor litigation trends in your industry vertical
- Track regulatory enforcement actions (SEC, DOJ, FTC) in real time
- Identify outside counsel conflicts by searching for firm appearances
- Build litigation risk dashboards from structured case data

#### Competitive Intelligence Analysts
- Map competitors' patent litigation strategy across the Federal Circuit
- Identify trade secret and IP disputes before they become public news
- Track antitrust investigations and enforcement trends
- Analyze regulatory posture by reviewing agency litigation patterns

#### Legal Tech Builders
- Power legal research tools with structured opinion data
- Build citation analysis engines using CourtListener's citation network
- Create judge analytics tools (win rates, ruling patterns by topic)
- Automate docket monitoring and alerting systems

---

### Data Source

**CourtListener REST API v3** — operated by the Free Law Project (https://www.courtlistener.com/)

CourtListener is a 501(c)(3) nonprofit that:
- Indexes **1B+ federal court documents** including all published and unpublished opinions
- Covers **100% of federal circuit and district courts** plus SCOTUS
- Updates daily with new PACER filings
- Provides **free read-only API access** — no authentication, no fees, no rate limit for reasonable use
- Offers a **citation network** linking every opinion to every other opinion it cites

The underlying PACER data is public record. CourtListener simply makes it accessible.

---

### MCP Tools

#### 1. `search_opinions`

Search federal court opinions by keyword, court, and date range.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | Full-text keyword search (e.g. `"patent exhaustion"`, `"personal jurisdiction minimum contacts"`) |
| `court` | string | No | Court code filter (see `get_court_list`). Examples: `scotus`, `ca2`, `cafc`, `nysd` |
| `date_filed_min` | string | No | Return opinions filed on or after this date (YYYY-MM-DD) |
| `date_filed_max` | string | No | Return opinions filed on or before this date (YYYY-MM-DD) |
| `limit` | integer | No | Max results (default 20, max 100) |

**Output fields per opinion:**
| Field | Description |
|-------|-------------|
| `case_name` | Full case name (e.g. "Apple Inc. v. Samsung Electronics Co., Ltd.") |
| `docket_number` | Court docket number |
| `court` | Court code (e.g. `cafc`, `nysd`) |
| `date_filed` | Date opinion was filed (YYYY-MM-DD) |
| `status` | Published or Unpublished |
| `citation_count` | Number of times this opinion has been cited |
| `author_str` | Authoring judge |
| `url` | CourtListener canonical URL |
| `absolute_url` | Direct link to the opinion page |
| `source` | Always `"courtlistener.com"` |

**Example query (via MCP call):**
```json
{
  "name": "search_opinions",
  "arguments": {
    "query": "doctrine of equivalents patent infringement",
    "court": "cafc",
    "date_filed_min": "2023-01-01",
    "limit": 20
  }
}
````

**Example response:**

```json
[
  {
    "_meta": {
      "total_matching": 847,
      "returned": 20,
      "query": "doctrine of equivalents patent infringement",
      "court": "cafc"
    }
  },
  {
    "case_name": "Myco Industries v. BlephEx LLC",
    "docket_number": "2022-1758",
    "court": "cafc",
    "date_filed": "2023-09-14",
    "status": "Published",
    "citation_count": 12,
    "author_str": "Stoll, J.",
    "url": "https://www.courtlistener.com/api/rest/v3/opinions/7543210/",
    "absolute_url": "https://www.courtlistener.com/opinion/7543210/myco-industries-v-blephex/",
    "source": "courtlistener.com"
  }
]
```

***

#### 2. `search_dockets`

Search active and historical federal case dockets across all federal courts.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | Keyword search across case names and docket text |
| `court` | string | No | Court code (e.g. `nysd`, `cacd`, `dcd`) |
| `nature_of_suit` | string | No | Filter by nature of suit (`patent`, `antitrust`, `securities`, `employment`, `bankruptcy`) |
| `limit` | integer | No | Max results (default 20, max 100) |

**Output fields per docket:**
| Field | Description |
|-------|-------------|
| `case_name` | Full case name |
| `docket_number` | Court docket number |
| `court` | Court code |
| `date_filed` | Case filing date |
| `date_terminated` | Case termination date (blank if active) |
| `nature_of_suit` | Nature of suit code and description |
| `cause` | Cause of action (e.g. "35 U.S.C. § 271 Patent Infringement") |
| `assigned_to_str` | Presiding judge |
| `url` | CourtListener docket URL |
| `source` | Always `"courtlistener.com"` |

**Example query:**

```json
{
  "name": "search_dockets",
  "arguments": {
    "query": "Tesla Autopilot",
    "nature_of_suit": "patent",
    "limit": 10
  }
}
```

***

#### 3. `get_court_list`

Return the complete list of supported federal court codes and their full names. Use this to discover valid codes for the `court` parameter.

**No parameters required.**

**Returns:** Array of `{"code": "...", "name": "..."}` objects covering SCOTUS, all 13 circuit courts of appeals, and 18 major district courts.

**Supported courts include:**

| Code | Court |
|------|-------|
| `scotus` | Supreme Court of the United States |
| `ca1` – `ca11` | First through Eleventh Circuit Courts of Appeals |
| `cadc` | D.C. Circuit Court of Appeals |
| `cafc` | Federal Circuit Court of Appeals (patents, international trade) |
| `dcd` | D.D.C. (D.C. District Court) |
| `nysd` | S.D.N.Y. (Southern District of New York) |
| `cand` | N.D. Cal. (Northern District of California) |
| `cacd` | C.D. Cal. (Central District of California) |
| `txsd` | S.D. Tex. (Southern District of Texas) |
| `ilnd` | N.D. Ill. (Northern District of Illinois) |
| ... | 18 major district courts total |

***

### Quick Start

#### Option 1: Batch Mode (Apify Dataset Output)

Run the actor with standard Apify input and get results pushed to an Apify dataset. Perfect for one-off research tasks, integrating with Apify workflows, or downloading to CSV/JSON.

**Input:**

```json
{
  "query": "patent infringement Apple",
  "court": "cafc",
  "mode": "opinions",
  "limit": 50
}
```

Run via Apify console → Results appear in the actor's dataset, downloadable as JSON/CSV/XLSX.

#### Option 2: MCP Server Mode (Live AI Integration)

Enable `serveMcp: true` in the input to start an HTTP server on port 4321. Connect Claude Desktop or any MCP client to get real-time access.

**Input:**

```json
{
  "serveMcp": true
}
```

**Claude Desktop config (`claude_desktop_config.json`):**

```json
{
  "mcpServers": {
    "pacer-intelligence": {
      "command": "npx",
      "args": ["-y", "@apify/actor-mcp-bridge", "your-actor-run-url:4321"]
    }
  }
}
```

Once connected, Claude can answer questions like:

- *"Find all Federal Circuit opinions on patent exhaustion from the last 2 years"*
- *"What federal lawsuits has Qualcomm been involved in regarding 5G patents?"*
- *"Search for antitrust cases involving Google in the Northern District of California"*
- *"Show me the most-cited patent infringement opinions in the 9th Circuit"*

***

### Input Schema Reference

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `query` | string | `"patent infringement"` | Full-text keyword search |
| `court` | string | `""` | Court code filter (blank = all courts) |
| `mode` | string | `"opinions"` | Search mode: `opinions`, `dockets`, or `courts` |
| `dateFiledMin` | string | `""` | Earliest filing date filter (YYYY-MM-DD) |
| `dateFiledMax` | string | `""` | Latest filing date filter (YYYY-MM-DD) |
| `natureOfSuit` | string | `""` | Nature of suit filter (dockets mode only) |
| `limit` | integer | `20` | Max results (1–100) |
| `serveMcp` | boolean | `false` | Enable MCP server mode on port 4321 |

***

### Use Case Playbooks

#### Patent Litigation Due Diligence

```
Search all Federal Circuit opinions mentioning "InterDigital" from 2020-2025
→ Map their patent portfolio litigation strategy
→ Identify which patents survive post-grant review
→ Assess settlement patterns from docket termination dates
```

#### M\&A Target Screening

```
Search all federal dockets for "Acme Corp" across all district courts
→ Identify pending litigation the target hasn't disclosed
→ Quantify litigation exposure for deal modeling
→ Flag any DOJ/FTC/SEC enforcement actions
```

#### Regulatory Enforcement Monitoring

```
Search dockets with query="SEC enforcement" and nature_of_suit="securities"
→ Track monthly enforcement volume by district
→ Identify enforcement trends (crypto, AI, ESG fraud)
→ Alert when enforcement hits specific company names
```

#### Judge Research for Forum Selection

```
Search opinions by court="nysd" with query="class certification securities fraud"
→ Analyze how specific judges rule on class cert motions
→ Identify favorable forums for your legal theory
→ Compare denial rates across circuits
```

***

### Pricing Context: Why Not Just Use PACER?

| | PACER | This Actor |
|--|-------|------------|
| Cost | $0.10/page (~$0.10–$3.00 per docket) | Free |
| API | None | MCP + REST |
| Search | Per-court, limited query | Full-text across all courts |
| AI integration | None | Native MCP |
| Bulk download | Manual, expensive | Automated |
| Historical coverage | 1990s–present | Same (via CourtListener) |

PACER charges attorneys millions of dollars annually to access public court records. CourtListener — and this actor — make the same data freely available.

***

### Data Freshness and Limitations

- **Opinions:** Updated daily. CourtListener ingests new opinions within 24–48 hours of publication.
- **Dockets:** Updated via PACER's bulk data program. Some docket entries may lag 24–72 hours.
- **Coverage:** All federal circuit and district courts. Does not include state courts.
- **Full text:** Opinion text available for download via CourtListener's API (not returned in this actor for size reasons — use the URL field to access full text).
- **Rate limits:** CourtListener asks for reasonable use. This actor respects their terms; for high-volume use consider CourtListener's RECAP Archive bulk download.

***

### Technical Notes

- **Data source:** CourtListener REST API v3 (`https://www.courtlistener.com/api/rest/v3/`)
- **Authentication:** None required
- **Rate limits:** Reasonable use policy; actor includes User-Agent header per CourtListener's guidelines
- **MCP port:** 4321 (GET `/mcp/tools`, POST `/mcp/call`)
- **Docker base:** `apify/actor-python:3.11`
- **Dependencies:** `apify>=2.0.0`, `httpx>=0.24.0`
- **Error handling:** All tool failures return `{"_meta": {"error": "...", "fallback_tried": true}}`

***

### Support and Feedback

This actor is built by the SECC platform team. Issues, feature requests, and court coverage expansion requests are welcome via the Apify actor page.

CourtListener is operated by the Free Law Project — a 501(c)(3) nonprofit. Consider supporting their work at https://free.law/donate/.

# Actor input Schema

## `query` (type: `string`):

Full-text keyword search across federal court opinions and dockets (e.g. 'patent infringement', 'antitrust Section 1', 'securities fraud', 'ERISA fiduciary')

## `court` (type: `string`):

Filter by specific federal court code. Examples: 'scotus' (Supreme Court), 'ca2' (2nd Circuit), 'cafc' (Federal Circuit - patent cases), 'nysd' (S.D.N.Y.), 'cand' (N.D. Cal.). Leave blank to search all courts. Use mode=courts to list all supported codes.

## `mode` (type: `string`):

What to search. 'notable' = curated landmark cases dataset (no API key needed). 'opinions'/'dockets' = live CourtListener search (requires free apiToken). 'courts' = list court codes.

## `category` (type: `string`):

Filter notable cases by category: Patent, Antitrust, Securities, Administrative, Employment, Privacy, Bankruptcy, Commercial, Regulatory, Trade

## `apiToken` (type: `string`):

Free API token from courtlistener.com for live opinion/docket searches. Register at https://www.courtlistener.com/register/ to get your token.

## `dateFiledMin` (type: `string`):

Only return cases filed on or after this date

## `dateFiledMax` (type: `string`):

Only return cases filed on or before this date

## `natureOfSuit` (type: `string`):

Filter dockets by nature of suit (e.g. 'patent', 'antitrust', 'securities', 'employment', 'ERISA', 'bankruptcy'). Only applies when mode=dockets.

## `limit` (type: `integer`):

Maximum number of results to return (max 100)

## `serveMcp` (type: `boolean`):

When enabled, starts an MCP-compatible HTTP server on port 4321 instead of returning a batch dataset. Use this to connect Claude Desktop or any MCP client directly to federal court data.

## Actor input object example

```json
{
  "query": "patent infringement",
  "court": "",
  "mode": "notable",
  "category": "",
  "apiToken": "",
  "dateFiledMin": "",
  "dateFiledMax": "",
  "natureOfSuit": "",
  "limit": 20,
  "serveMcp": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("andrew_avina/pacer-intelligence-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("andrew_avina/pacer-intelligence-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call andrew_avina/pacer-intelligence-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=andrew_avina/pacer-intelligence-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PACER Court Records Intelligence MCP — 1B+ Federal Cases",
        "description": "The PACER Court Records Intelligence MCP is an Apify actor that exposes CourtListener's comprehensive federal court database via the Model Context Protocol (MCP). It gives AI assistants — Claude, GPT-4, and any MCP-compatible agent — direct, structured access to over one billi...",
        "version": "0.1",
        "x-build-id": "PUPBKHzOGvJtegzQ4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/andrew_avina~pacer-intelligence-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-andrew_avina-pacer-intelligence-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/andrew_avina~pacer-intelligence-mcp/runs": {
            "post": {
                "operationId": "runs-sync-andrew_avina-pacer-intelligence-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/andrew_avina~pacer-intelligence-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-andrew_avina-pacer-intelligence-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Full-text keyword search across federal court opinions and dockets (e.g. 'patent infringement', 'antitrust Section 1', 'securities fraud', 'ERISA fiduciary')",
                        "default": "patent infringement"
                    },
                    "court": {
                        "title": "Court Code",
                        "type": "string",
                        "description": "Filter by specific federal court code. Examples: 'scotus' (Supreme Court), 'ca2' (2nd Circuit), 'cafc' (Federal Circuit - patent cases), 'nysd' (S.D.N.Y.), 'cand' (N.D. Cal.). Leave blank to search all courts. Use mode=courts to list all supported codes.",
                        "default": ""
                    },
                    "mode": {
                        "title": "Search Mode",
                        "enum": [
                            "notable",
                            "opinions",
                            "dockets",
                            "courts"
                        ],
                        "type": "string",
                        "description": "What to search. 'notable' = curated landmark cases dataset (no API key needed). 'opinions'/'dockets' = live CourtListener search (requires free apiToken). 'courts' = list court codes.",
                        "default": "notable"
                    },
                    "category": {
                        "title": "Case Category (Notable mode)",
                        "type": "string",
                        "description": "Filter notable cases by category: Patent, Antitrust, Securities, Administrative, Employment, Privacy, Bankruptcy, Commercial, Regulatory, Trade",
                        "default": ""
                    },
                    "apiToken": {
                        "title": "CourtListener API Token (optional)",
                        "type": "string",
                        "description": "Free API token from courtlistener.com for live opinion/docket searches. Register at https://www.courtlistener.com/register/ to get your token.",
                        "default": ""
                    },
                    "dateFiledMin": {
                        "title": "Date Filed From (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Only return cases filed on or after this date",
                        "default": ""
                    },
                    "dateFiledMax": {
                        "title": "Date Filed To (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Only return cases filed on or before this date",
                        "default": ""
                    },
                    "natureOfSuit": {
                        "title": "Nature of Suit (Dockets only)",
                        "type": "string",
                        "description": "Filter dockets by nature of suit (e.g. 'patent', 'antitrust', 'securities', 'employment', 'ERISA', 'bankruptcy'). Only applies when mode=dockets.",
                        "default": ""
                    },
                    "limit": {
                        "title": "Result Limit",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of results to return (max 100)",
                        "default": 20
                    },
                    "serveMcp": {
                        "title": "MCP Server Mode",
                        "type": "boolean",
                        "description": "When enabled, starts an MCP-compatible HTTP server on port 4321 instead of returning a batch dataset. Use this to connect Claude Desktop or any MCP client directly to federal court data.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
