MCP Tools

Integrate Midpage's legal database with AI assistants using the Model Context Protocol.

Note: MCP tools currently support court opinion research. Statute and regulation tools are coming soon.

Setup

For trying out the MCP in Claude or Cursor you can create a free trial account at app.midpage.ai. Then add app.midpage.ai/mcp to Claude or Cursor.

For production use cases contact our team - we can setup an OAuth integration.

Cursor

{
  "mcpServers": {
    "midpage": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://app.midpage.ai/mcp"
      ]
    }
  }
}

Available Tools

Search US case law across federal and state courts.

Parameters:

Parameter Type Required Description
queries array Yes Array of search queries (1-5)
queries[].query string Yes Search query
queries[].jurisdictionType string Yes "federal", "state", or "state_and_federal"
queries[].circuits string[] No Federal circuits: "1"-"11", "dc", "federal_circuit", "supreme_court"
queries[].states string[] No State names (e.g., ["California", "New York"])
queries[].startDate string No Start date (YYYY-MM-DD)
queries[].endDate string No End date (YYYY-MM-DD)
queries[].negativeQuery string No Ranks cases lower if they match this query
queries[].includeCourts string[] No Additional courts to narrow the search
maxResultsPerQuery number No Results per query (default: 10, max: 15)

Example:

{
  "queries": [{
    "query": "breach of fiduciary duty elements",
    "jurisdictionType": "state_and_federal",
    "circuits": ["9"],
    "states": ["California"]
  }],
  "maxResultsPerQuery": 10
}

findInOpinion

Find quotable passages within a single opinion using keyword search.

Parameters:

Parameter Type Required Description
opinionId string No* Midpage document ID (e.g., "7228818")
reporterCitation string No* Bluebook citation (e.g., "556 U.S. 662")
docket object No* Court and docket number pair
docket.courtAbbreviation string Yes Court abbreviation (e.g., "S.D.N.Y.", "9th Cir.")
docket.docketNumber string Yes Docket number (e.g., "12-cv-20100")
query string Yes Key terms to match

* Provide one of opinionId, reporterCitation, or docket

Example:

{
  "opinionId": "7228818",
  "query": "minimum contacts purposeful availment"
}

analyzeOpinion

Reads the full document, then answers your question and returns the answer alongside text excerpts.

Accepts either opinionId, reporterCitation, or docket as input.

Parameters:

Parameter Type Required Description
opinionId string No* Midpage document ID
reporterCitation string No* Bluebook citation (e.g., "556 U.S. 662")
docket object No* Court and docket number pair
docket.courtAbbreviation string Yes Court abbreviation (e.g., "S.D.N.Y.", "9th Cir.")
docket.docketNumber string Yes Docket number (e.g., "12-cv-20100")
question string Yes The legal question you want answered

* Provide one of opinionId, reporterCitation, or docket

Example:

{
  "reporterCitation": "556 U.S. 662",
  "question": "What standard does this case establish for pleading requirements?"
}