echr_search
Pack: hudoc · Endpoint: https://gateway.pipeworx.io/hudoc/mcp
Search European Court of Human Rights (ECHR / Strasbourg) case law by free text, Convention Article, respondent state and/or date. Returns case name, application number(s), Article(s) engaged, the conclusion (violation/no violation), importance level and the itemid to read the full judgment with echr_judgment. Use for “what has Strasbourg ruled on Article 8 against France”, “recent Article 10 freedom-of-expression judgments”, etc. Covers judgments by default; pass collection to search decisions, advisory opinions, resolutions, communicated cases or reports instead.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | no | Free-text words to match anywhere in the case (case name, conclusion text, keywords), e.g. “surveillance”, “freedom of expression”. Optional if article/respondent narrow enough on their own. |
article | string | no | Convention Article number, e.g. “8” (private/family life), “10” (freedom of expression), “6” (fair trial). Matches the Article and its sub-paragraphs. |
respondent | string | no | Respondent state — ISO3 code (e.g. “FRA”, “GBR”) or common name (e.g. “France”, “United Kingdom”). One of the 46 Council of Europe states, or Russia for pre-2022 cases. |
collection | string | no | Document type to search (default “judgments”). “decisions” = admissibility decisions; “communicated_cases” = pending cases the Court has notified the government of, no ruling yet. |
importance | number | no | HUDOC importance level: 1 = highest (leading cases), 4 = lowest. Omit for all. |
date_from | string | no | ISO date (YYYY-MM-DD). Only documents on or after this date. |
date_to | string | no | ISO date (YYYY-MM-DD). Only documents on or before this date. |
limit | number | no | Max results, default 10, max 25. |
Example call
Arguments
{
"article": "8",
"respondent": "GBR",
"date_from": "2024-01-01",
"date_to": "2026-12-31",
"limit": 5
}
curl
curl -X POST https://gateway.pipeworx.io/hudoc/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"echr_search","arguments":{"article":"8","respondent":"GBR","date_from":"2024-01-01","date_to":"2026-12-31","limit":5}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('echr_search', {
"article": "8",
"respondent": "GBR",
"date_from": "2024-01-01",
"date_to": "2026-12-31",
"limit": 5
});
More examples
{
"query": "surveillance",
"article": "8",
"respondent": "FRA",
"date_from": "2023-01-01"
}
Response shape
Always returns: query, total_matches, count, results, source
| Field | Type | Description |
|---|---|---|
query | object | Echo of the resolved filters actually sent to HUDOC, after country-name and date normalisation. |
total_matches | number | Total documents in HUDOC matching the query, which is usually far larger than count — page with limit. |
count | number | Number of results returned in this response. |
results | array | Matching documents, most recent first. |
note | string | Present ONLY when results is empty: how to broaden the query. Its presence means zero matches, not an error. |
source | string | Attribution string for the HUDOC database. |
Full JSON Schema
{
"type": "object",
"properties": {
"query": {
"type": "object",
"description": "Echo of the resolved filters actually sent to HUDOC, after country-name and date normalisation.",
"properties": {
"text": {
"type": [
"string",
"null"
],
"description": "Free-text phrase searched, or null."
},
"article": {
"type": [
"string",
"null"
],
"description": "Convention Article filter applied, or null."
},
"respondent": {
"type": [
"string",
"null"
],
"description": "Respondent state as the ISO3 code HUDOC uses (e.g. \"FRA\"), resolved from the caller's input, or null."
},
"collection": {
"type": "string",
"description": "Document collection searched: judgments, decisions, advisory_opinions, resolutions, communicated_cases or reports."
},
"importance": {
"type": [
"number",
"null"
],
"description": "Importance level filter (1 = leading case, 4 = lowest), or null."
},
"date_from": {
"type": [
"string",
"null"
],
"description": "Lower date bound (YYYY-MM-DD), or null."
},
"date_to": {
"type": [
"string",
"null"
],
"description": "Upper date bound (YYYY-MM-DD), or null."
}
}
},
"total_matches": {
"type": "number",
"description": "Total documents in HUDOC matching the query, which is usually far larger than count — page with limit."
},
"count": {
"type": "number",
"description": "Number of results returned in this response."
},
"results": {
"type": "array",
"description": "Matching documents, most recent first.",
"items": {
"type": "object",
"properties": {
"itemid": {
"type": [
"string",
"null"
],
"description": "HUDOC document id, e.g. \"001-219226\". Pass to echr_judgment for the full text."
},
"case_name": {
"type": [
"string",
"null"
],
"description": "Case title, e.g. \"CASE OF DRELON v. FRANCE\"."
},
"doctype": {
"type": [
"string",
"null"
],
"description": "HUDOC document type code, e.g. \"HEJUD\" (Chamber/Grand Chamber judgment)."
},
"respondent": {
"type": [
"string",
"null"
],
"description": "Respondent state ISO3 code."
},
"article": {
"type": [
"string",
"null"
],
"description": "Semicolon-separated Convention Articles engaged, including sub-paragraphs, e.g. \"8;8-1;8-2\"."
},
"importance": {
"type": [
"number",
"null"
],
"description": "Importance level: 1 = leading case, 4 = lowest."
},
"date": {
"type": [
"string",
"null"
],
"description": "Judgment date, ISO 8601."
},
"application_numbers": {
"type": [
"string",
"null"
],
"description": "Semicolon-separated application numbers, e.g. \"3153/16;27758/18\"."
},
"conclusion": {
"type": [
"string",
"null"
],
"description": "The Court's conclusion in its own words, e.g. \"Violation of Article 8 ...\" or \"No violation of Article 8 ...\"."
},
"citation_url": {
"type": [
"string",
"null"
],
"description": "Public hudoc.echr.coe.int URL for the document."
},
"read_full_text_with": {
"type": [
"string",
"null"
],
"description": "Ready-to-run echr_judgment call that returns this document's full text."
}
}
}
},
"note": {
"type": "string",
"description": "Present ONLY when results is empty: how to broaden the query. Its presence means zero matches, not an error."
},
"source": {
"type": "string",
"description": "Attribution string for the HUDOC database."
}
},
"required": [
"query",
"total_matches",
"count",
"results",
"source"
]
}
Connect
Add this to your MCP client config, or use one-click install buttons:
{
"mcpServers": {
"hudoc": {
"url": "https://gateway.pipeworx.io/hudoc/mcp"
}
}
}
See Getting Started for client-specific install steps.