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
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?"
}