> ## Documentation Index
> Fetch the complete documentation index at: https://docs.courtrules.app/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP: Enforcement Data

> Connect AI agents to structured privacy enforcement data from 21 jurisdictions using the Model Context Protocol.

# MCP: Enforcement Data

The Court Rules MCP server gives AI agents access to structured enforcement actions from the FTC, HHS, and 19 state attorneys general. Three tools let you search events, get full details, and aggregate statistics.

## What you get

Three enforcement-focused tools:

| Tool                         | Purpose                                                                   |
| ---------------------------- | ------------------------------------------------------------------------- |
| `search_enforcement_actions` | Search enforcement events by jurisdiction, date, industry, violation type |
| `get_enforcement_details`    | Full event details with laws cited, remedies, and source quotes           |
| `get_enforcement_stats`      | Summary statistics by jurisdiction, violation type, or time period        |

The same MCP server also provides four court rules tools for filing compliance. See [MCP: Court Rules](/guides/mcp-court-rules).

## Quick start

Add the Court Rules MCP server to your client. Sample data works immediately, no API key needed.

### Claude Code

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
claude mcp add --transport http court-rules https://mcp.courtrules.app/mcp
```

### Claude Desktop

Add to your [Claude Desktop config](https://modelcontextprotocol.io/quickstart/user):

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "mcpServers": {
    "court-rules": {
      "url": "https://mcp.courtrules.app/mcp"
    }
  }
}
```

### Cursor

Add to `~/.cursor/mcp.json`:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "mcpServers": {
    "court-rules": {
      "url": "https://mcp.courtrules.app/mcp"
    }
  }
}
```

### VS Code

Add to `.vscode/mcp.json`:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "servers": {
    "court-rules": {
      "type": "http",
      "url": "https://mcp.courtrules.app/mcp"
    }
  }
}
```

### Codex CLI

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
codex mcp add court-rules --url https://mcp.courtrules.app/mcp
```

### Windsurf

Add to Windsurf MCP settings:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "mcpServers": {
    "court-rules": {
      "serverUrl": "https://mcp.courtrules.app/mcp"
    }
  }
}
```

Once connected, try asking your agent: *"What privacy enforcement actions happened in California this year?"*

## Sample vs Full access

The hosted MCP server has two access tiers:

|                        | Sample                      | Full                   |
| ---------------------- | --------------------------- | ---------------------- |
| **Auth required**      | No                          | OAuth 2.1              |
| **Enforcement events** | 3 recent highlights         | 1,200+ events          |
| **Jurisdictions**      | Limited preview             | All 21 jurisdictions   |
| **Filters**            | Disabled                    | Full query support     |
| **Use case**           | Try before you authenticate | Production integration |

Sample data is available immediately, no sign-up needed. Try any tool to see real enforcement data before authenticating.

To upgrade to full access, sign in at [console.courtrules.app](https://console.courtrules.app) or contact [api@courtrules.app](mailto:api@courtrules.app). See [Authentication](/authentication#mcp-authentication) for setup details.

## Tool reference

### search\_enforcement\_actions

Search privacy and regulatory enforcement events. Filters combine with AND logic.

**Parameters:**

| Parameter        | Type   | Description                                                                                  |
| ---------------- | ------ | -------------------------------------------------------------------------------------------- |
| `jurisdiction`   | string | Filter by jurisdiction: CA, FTC, NY, TX, HHS, CT, CO, OR, NJ, VA, MN, etc.                   |
| `date_from`      | string | Start date (YYYY-MM-DD)                                                                      |
| `date_to`        | string | End date (YYYY-MM-DD)                                                                        |
| `industry`       | string | Entity industry: technology, healthcare, gaming, education, financial\_services, etc.        |
| `violation_type` | string | Violation category: data\_breach, opt\_out\_failure, children\_data, security\_failure, etc. |
| `entity_name`    | string | Partial match on entity name                                                                 |
| `risk_level`     | string | critical, high, medium, or low                                                               |
| `limit`          | number | Max results (default 20, max 100)                                                            |

**Example response:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "results": [
    {
      "id": "evt_001",
      "title": "Attorney General Bonta Announces $2.75 Million CCPA Settlement with Disney",
      "event_date": "2026-02-11",
      "jurisdiction": "CA",
      "event_type": "settlement",
      "entity_name": "The Walt Disney Company",
      "fine_amount": 2750000,
      "violation_types": ["opt_out_failure"],
      "risk_level": "high",
      "summary": "Disney's opt-out processes failed to stop data sharing across devices. $2.75M penalty.",
      "primary_source_url": "https://oag.ca.gov/news/press-releases/..."
    }
  ],
  "total": 1
}
```

### get\_enforcement\_details

Get full details for a specific enforcement event, including laws cited, remedies, and verbatim source quotes.

**Parameters:**

| Parameter  | Type   | Required | Description |
| ---------- | ------ | -------- | ----------- |
| `event_id` | string | Yes      | Event UUID  |

**Example response:**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_001",
  "title": "Attorney General Bonta Announces $2.75 Million CCPA Settlement with Disney",
  "event_date": "2026-02-11",
  "jurisdiction": "CA",
  "event_type": "settlement",
  "entity_name": "The Walt Disney Company",
  "entity_industry": "media_entertainment",
  "fine_amount": "$2,750,000",
  "consumers_affected": null,
  "violation_types": ["opt_out_failure"],
  "risk_level": "high",
  "summary": "California AG secured a $2.75M settlement after finding Disney's streaming platforms failed to honor consumer opt-out requests for the sale and sharing of personal information under CCPA.",
  "laws_cited": ["California Consumer Privacy Act (CCPA)", "California Privacy Rights Act (CPRA)"],
  "statute_sections": ["Cal. Civ. Code §1798.120"],
  "remedy_types": ["monetary_penalty", "injunction"],
  "remedy_summary": "Disney must pay $2.75 million in civil penalties and implement opt-out methods that fully stop the sale or sharing of consumers' personal information across all platforms and devices.",
  "document_urls": ["https://oag.ca.gov/system/files/attachments/press-docs/...pdf"],
  "primary_source_url": "https://oag.ca.gov/news/press-releases/...",
  "is_multistate": false,
  "co_enforcers": [],
  "search_terms": ["opt-out", "do not sell", "right to opt out", "GPC", "global privacy control"],
  "contract_impact": "Review vendor agreements for opt-out mechanism requirements.",
  "source_quotes": [],
  "sources": [
    {
      "source_id": "src_001",
      "source_url": "https://oag.ca.gov/news/press-releases/...",
      "scraped_at": "2026-02-12T08:30:00Z"
    }
  ]
}
```

### get\_enforcement\_stats

Aggregate enforcement data by dimension.

**Parameters:**

| Parameter   | Type   | Required | Description                                                  |
| ----------- | ------ | -------- | ------------------------------------------------------------ |
| `group_by`  | string | Yes      | "jurisdiction", "violation\_type", "risk\_level", or "month" |
| `date_from` | string | No       | Start date filter                                            |
| `date_to`   | string | No       | End date filter                                              |

**Example response (group\_by: "jurisdiction"):**

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "stats": [
    { "group": "HHS", "count": 339, "total_fines": "$122,300,000" },
    { "group": "CA", "count": 31, "total_fines": "$48,750,000" },
    { "group": "FTC", "count": 29, "total_fines": "$412,000,000" },
    { "group": "OR", "count": 29, "total_fines": "$0" },
    { "group": "TX", "count": 19, "total_fines": "$1,450,000,000" }
  ],
  "total_events": 1081
}
```

## Integration patterns

### Regulatory feed widget

Use `search_enforcement_actions` with jurisdiction and industry filters to surface relevant enforcement events in your legal workspace. Poll periodically for new events.

```
Agent prompt: "Search for new enforcement actions in [jurisdiction]
since [last_check_date] relevant to [industry]"
-> Calls: search_enforcement_actions
-> Returns: New events with structured data
-> Your platform: Creates feed items or notifications
```

### Auto-matter creation

When a relevant enforcement event appears, automatically create a matter in your legal workspace:

```
1. search_enforcement_actions (filtered by jurisdiction + industry)
2. For each new event: get_enforcement_details
3. Map fields to your matter schema:
   - Matter title <- event title
   - Assigned team <- based on jurisdiction
   - Priority <- risk_level mapping
   - Description <- summary + laws_cited
   - Attachments <- document_urls
```

### Agent-powered research

Combine tools for research queries:

```
"Which companies in the technology industry were fined for data breaches
in the last 6 months, and what remedies were required?"

Agent calls:
1. search_enforcement_actions(industry: "technology", violation_type: "data_breach", date_from: "2025-09-25")
2. For each result: get_enforcement_details(event_id)
3. Synthesizes: entity names, fine amounts, remedy details, with source citations
```

### Polling for new events

The MCP server does not push notifications when new enforcement events are added. To check for new events, poll `search_enforcement_actions` with a `date_from` filter set to your last check time:

```
Tool: search_enforcement_actions
Arguments: { "date_from": "2026-03-20", "limit": 50 }
```

For platform integrations that auto-create matters, run this on a schedule (e.g., every 6 hours) and process any new events.

## Response field reference

Key fields in enforcement event responses, with types and null semantics:

| Field                | Type           | Description                                                                                                             |
| -------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `fine_amount`        | string or null | Formatted currency (e.g., "\$2,750,000"). Null when no monetary penalty was imposed (consent decree or injunction only) |
| `consumers_affected` | number or null | Null when the count was not quantified in the official source                                                           |
| `entity_industry`    | string or null | Industry classification (e.g., "gaming", "education", "social\_media")                                                  |
| `violation_types`    | string\[]      | One or more violation categories from a fixed set of 18 types                                                           |
| `risk_level`         | string         | One of: "critical", "high", "medium", "low"                                                                             |
| `laws_cited`         | string\[]      | Full names of laws referenced (e.g., "California Consumer Privacy Act (CCPA)")                                          |
| `statute_sections`   | string\[]      | Specific statutory references (e.g., "Cal. Civ. Code §1798.120")                                                        |
| `remedy_types`       | string\[]      | Categories of remedies imposed (e.g., "monetary\_penalty", "injunction")                                                |
| `search_terms`       | string\[]      | Contract-relevant keywords for vendor agreement scanning                                                                |
| `contract_impact`    | string or null | What to check in your contracts based on this enforcement action                                                        |
| `source_quotes`      | array          | Verbatim quotes from the official source (may be empty)                                                                 |
| `co_enforcers`       | string\[]      | Other agencies involved in multistate actions (empty if single-state)                                                   |
| `is_multistate`      | boolean        | Whether the action involved multiple jurisdictions                                                                      |

## Error handling

MCP tool calls return errors as text content, not HTTP error codes. If a tool encounters an error (invalid parameters, database unavailable), the response will contain a descriptive error message in the `content` array:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "content": [
    { "type": "text", "text": "Error: No enforcement event found with ID \"invalid-id\"." }
  ]
}
```

Common error patterns:

* **Invalid event\_id**: `"No enforcement event found with ID \"...\"."`
* **Invalid group\_by**: `"Invalid group_by value \"...\". Must be one of: jurisdiction, violation_type, risk_level, month"`
* **Database error**: `"Error querying enforcement data: ..."`

The hosted server at `mcp.courtrules.app` does not currently enforce rate limits on MCP tool calls.

## Current limitations

* **No webhooks yet**: Poll for new events using `date_from` filters
* **No real-time streaming**: Events appear within 24-48 hours of government announcement
* **Read-only**: The MCP server provides data access only, no write operations
* **Auth optional**: Sample data works without authentication. OAuth unlocks the full dataset.

For higher throughput or custom filtering, use the [REST API](/api-reference/overview) directly.

## Next steps

* [Browse enforcement data](https://www.courtrules.app/enforcement) to see the data quality
* [Try the MCP playground](https://www.courtrules.app/mcp) to test tools interactively
* [MCP: Court Rules](/guides/mcp-court-rules) for filing compliance tools on the same MCP server
