search_opinions
Pack: court-listener · Endpoint: https://gateway.pipeworx.io/court-listener/mcp
Search US court opinions by keyword (e.g., “qualified immunity”, “Fourth Amendment”). Covers federal and state courts. Each result carries the case name, court, filing date, docket number, official citation, how many later cases cite it (cite_count — a rough importance signal), the authoring judge, and a matching snippet. Pass a result’s opinion_id to get_opinion for the full text.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | Search keywords (e.g., “patent infringement software”) |
court | string | no | Court filter (e.g., “scotus” for Supreme Court, “ca9” for 9th Circuit) |
date_after | string | no | Only opinions after this date (YYYY-MM-DD) |
limit | number | no | How many opinions to return, 1–100 (default 20). CourtListener pages at 20, so higher values fetch additional pages. |
Example call
Arguments
{
"query": "qualified immunity Fourth Amendment"
}
curl
curl -X POST https://gateway.pipeworx.io/court-listener/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_opinions","arguments":{"query":"qualified immunity Fourth Amendment"}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('search_opinions', {
"query": "qualified immunity Fourth Amendment"
});
More examples
{
"query": "patent infringement software",
"court": "ca9",
"date_after": "2020-01-01"
}
Response shape
Always returns: query, total, returned, opinions
| Field | Type | Description |
|---|---|---|
query | string | The search query used |
total | number | Total number of matching opinions |
returned | number | Number of opinions in this response |
opinions | array | List of opinion search results |
Full JSON Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query used"
},
"total": {
"type": "number",
"description": "Total number of matching opinions"
},
"returned": {
"type": "number",
"description": "Number of opinions in this response"
},
"opinions": {
"type": "array",
"description": "List of opinion search results",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"number",
"null"
],
"description": "Opinion ID"
},
"caseName": {
"type": [
"string",
"null"
],
"description": "Case name"
},
"court": {
"type": [
"string",
"null"
],
"description": "Court identifier"
},
"dateFiled": {
"type": [
"string",
"null"
],
"description": "Date opinion was filed"
},
"docketNumber": {
"type": [
"string",
"null"
],
"description": "Docket number"
},
"suitNature": {
"type": [
"string",
"null"
],
"description": "Nature of suit"
},
"snippet": {
"type": [
"string",
"null"
],
"description": "Text snippet from opinion"
},
"absolute_url": {
"type": [
"string",
"null"
],
"description": "URL to opinion"
},
"status": {
"type": [
"string",
"null"
],
"description": "Opinion status"
}
}
}
}
},
"required": [
"query",
"total",
"returned",
"opinions"
]
}
Connect
Add this to your MCP client config, or use one-click install buttons:
{
"mcpServers": {
"court-listener": {
"url": "https://gateway.pipeworx.io/court-listener/mcp"
}
}
}
See Getting Started for client-specific install steps.