Skip to main content

MCP: Court Rules

The Court Rules MCP server gives AI agents access to structured filing rules for 20+ courts and 630+ judges. Four tools let you list courts, search judges, retrieve rules, and generate compliance check parameters.

What you get

Four court rules tools:
ToolPurpose
list_courtsList all courts with status and judge counts
search_judgesSearch judges by district, name, or type
get_judge_rulesGet all rules for a specific judge (page limits, format, procedures)
check_complianceGenerate compliance check parameters for the REST API (/api/v1/check)
The same MCP server also provides three enforcement data tools for monitoring privacy enforcement actions across 21 jurisdictions. See MCP: Enforcement Data.

Quick start

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

Claude Code

claude mcp add --transport http court-rules https://mcp.courtrules.app/mcp

Claude Desktop

Add to your Claude Desktop config:
{
  "mcpServers": {
    "court-rules": {
      "url": "https://mcp.courtrules.app/mcp"
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:
{
  "mcpServers": {
    "court-rules": {
      "url": "https://mcp.courtrules.app/mcp"
    }
  }
}

VS Code

Add to .vscode/mcp.json:
{
  "servers": {
    "court-rules": {
      "type": "http",
      "url": "https://mcp.courtrules.app/mcp"
    }
  }
}

Codex CLI

codex mcp add court-rules --url https://mcp.courtrules.app/mcp

Windsurf

Add to Windsurf MCP settings:
{
  "mcpServers": {
    "court-rules": {
      "serverUrl": "https://mcp.courtrules.app/mcp"
    }
  }
}
Once connected, try asking your agent: “What are Judge Amon’s page limits for motions in EDNY?”

Sample vs Full access

The hosted MCP server has two access tiers:
SampleFull
Auth requiredNoOAuth 2.1
Court rules3 courts, 3 judges20+ courts, 630+ judges
FiltersDisabledFull query support
Use caseTry before you authenticateProduction integration
Sample data is available immediately, no sign-up needed. Try any tool to see real court rules data before authenticating. To upgrade to full access, sign in at console.courtrules.app or contact api@courtrules.app. See Authentication for setup details.

Tool reference

list_courts

List all courts. Parameters:
ParameterTypeDescription
statusstringOptional filter: “live”, “preview”, or “coming_soon”
Example response:
[
  { "district_id": "edny", "name": "Eastern District of New York", "judge_count": 47 },
  { "district_id": "sdny", "name": "Southern District of New York", "judge_count": 72 },
  { "district_id": "cdca", "name": "Central District of California", "judge_count": 47 },
  { "district_id": "ndca", "name": "Northern District of California", "judge_count": 43 },
  { "district_id": "sdfl", "name": "Southern District of Florida", "judge_count": 46 }
]

search_judges

Search for judges by district, name, or type. Parameters:
ParameterTypeDescription
district_idstringDistrict identifier (e.g., “edny”, “sdny”, “cdca”)
namestringPartial name match
judge_typestring”district”, “senior”, “magistrate”, “chief_district”, etc.
limitnumberMax results (default 20)
Example response:
[
  {
    "judge_slug": "carol-bagley-amon",
    "judge_name": "Carol Bagley Amon",
    "judge_type": "senior",
    "district_id": "edny",
    "status": "active"
  },
  {
    "judge_slug": "frederic-block",
    "judge_name": "Frederic Block",
    "judge_type": "senior",
    "district_id": "edny",
    "status": "active"
  },
  {
    "judge_slug": "gary-r-brown",
    "judge_name": "Gary R. Brown",
    "judge_type": "district",
    "district_id": "edny",
    "status": "active"
  }
]

get_judge_rules

Get all extracted rules for a specific judge. Parameters:
ParameterTypeRequiredDescription
judge_slugstringYesJudge identifier (e.g., “carol-bagley-amon”, “frederic-block”)
district_idstringYesDistrict identifier (e.g., “edny”)
Example response:
[
  {
    "rule_id": "rule-001",
    "content": {
      "logic_type": "PageWordLimitRule",
      "summary": "Memoranda of law in support of or in opposition to motions shall not exceed 20 pages",
      "page_limit": 20,
      "trigger": { "document_type_set": ["brief_support", "brief_opposition"] },
      "source_citation": { "document": "Individual Rules", "section": "§2.B", "page": 3 }
    },
    "doc_kind": "standing_order",
    "document_date": "2024-06-15",
    "source_url": "https://www.nyed.uscourts.gov/..."
  },
  {
    "rule_id": "rule-002",
    "content": {
      "logic_type": "PageWordLimitRule",
      "summary": "Reply memoranda shall not exceed 10 pages",
      "page_limit": 10,
      "trigger": { "document_type_set": ["brief_reply"] },
      "source_citation": { "document": "Individual Rules", "section": "§2.B", "page": 3 }
    },
    "doc_kind": "standing_order",
    "document_date": "2024-06-15",
    "source_url": "https://www.nyed.uscourts.gov/..."
  },
  {
    "rule_id": "rule-003",
    "content": {
      "logic_type": "FormatConstraint",
      "summary": "All documents must be double-spaced with 12-point font and one-inch margins",
      "source_citation": { "document": "Individual Rules", "section": "§2.A", "page": 2 }
    },
    "doc_kind": "standing_order",
    "document_date": "2024-06-15",
    "source_url": "https://www.nyed.uscourts.gov/..."
  }
]

check_compliance

Generate compliance check parameters for the Court Rules REST API. This tool formats your check request; the actual compliance check runs at api.courtrules.app/api/v1/check (requires an API key). Parameters:
ParameterTypeRequiredDescription
judge_slugstringYesJudge identifier
district_idstringYesDistrict identifier
document_scopestringYesDocument type (brief_support, brief_opposition, brief_reply, etc.)
page_countnumberYesTotal body pages
word_countnumberYesTotal word count
motion_typestringNoMotion type (Rule_56, Rule_12, etc.)
is_pro_sebooleanNoWhether filer is pro se
This tool does not perform compliance checks directly. It generates the parameters and a curl example for calling the REST API. Example response:
{
  "content": [
    {
      "type": "text",
      "text": "Compliance checking requires the REST API. Use https://api.courtrules.app/api/v1/check for live checks.\n\nYou can use the following parameters in your API call:\n{\n  \"judge_slug\": \"gary-r-brown\",\n  \"district_id\": \"edny\",\n  \"document_scope\": \"brief_support\",\n  \"page_count\": 25,\n  \"word_count\": 6500\n}\n\nExample:\ncurl -X POST https://api.courtrules.app/api/v1/check \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"judge_slug\":\"gary-r-brown\",\"district_id\":\"edny\",\"document_scope\":\"brief_support\",\"page_count\":25,\"word_count\":6500}'"
    }
  ]
}

Integration patterns

Pre-filing compliance

Check documents against judge-specific rules before filing:
1. get_judge_rules (judge_slug, district_id) -> show requirements during drafting
2. check_compliance (page_count, word_count, etc.) -> validate before filing
3. Surface failures and warnings in your document editor
This is the core workflow for legal tech platforms integrating filing compliance. Call get_judge_rules early in the drafting process so users see requirements before they finish writing, then call check_compliance as a final gate before submission.

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:
{
  "content": [
    {
      "type": "text",
      "text": "Error: No judge found with slug \"invalid-slug\" in district \"edny\"."
    }
  ]
}
Common error patterns:
  • Invalid judge_slug: "No judge found with slug \"...\" in district \"...\"."
  • Invalid district_id: "No court found with ID \"...\"."
  • Database error: "Error querying courts: ..." or "Error searching judges: ..."
The hosted server at mcp.courtrules.app does not currently enforce rate limits on MCP tool calls.

Next steps