MCPサーバー

Entscheidsuche — Schweizer Gerichtsentscheide

ch.entscheidsuche/mcp

このMCPでできること

Searches and retrieves Swiss court decisions and case law, with filters for courts, cantons, chambers, and case numbers.

fetch_document
Fetch decision
Fetch a single Swiss court decision, judgment or Federal Supreme Court decision by its document ID (`_id`). Returns the indexed full text of the decision together with metadata, title, abstract and links. Use this when the full decision should be read or processed after a search. Note: for very long decisions the indexed text is capped at 100,000 characters; if `text_truncated` is true, the complete document is available at `document_url`.
入力スキーマ
{'type': 'object', '$defs': {'Language': {'enum': ['de', 'fr', 'it'], 'type': 'string', 'title': 'Language', 'description': 'Verfügbare Sprachen der Entscheide.'}}, 'title': 'fetch_documentArguments', 'required': ['id'], 'properties': {'id': {'type': 'string', 'title': 'Id', 'description': "Document ID (e.g. 'CH_BGer_001_5A_123_2024_2024-06-15')."}, 'language': {'anyOf': [{'$ref': '#/$defs/Language'}, {'type': 'null'}], 'default': None, 'description': 'Optional preferred language for title/abstract. If omitted, the first available language field is returned.'}}}
出力スキーマ
{'type': 'object', '$defs': {'SearchHit': {'type': 'object', 'title': 'SearchHit', 'required': ['id'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'meta': {'type': 'string', 'title': 'Meta', 'default': ''}, 'sort': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Sort', 'default': None, 'description': 'Sort values of the hit (for search_after).'}, 'text': {'type': 'string', 'title': 'Text', 'default': '', 'description': 'Highlight excerpt from the full text.'}, 'court': {'type': 'string', 'title': 'Court', 'default': '', 'description': 'Court (derived from the ID).'}, 'title': {'type': 'string', 'title': 'Title', 'default': ''}, 'canton': {'type': 'string', 'title': 'Canton', 'default': ''}, 'is_pdf': {'type': 'boolean', 'title': 'Is Pdf', 'default': False}, 'abstract': {'type': 'string', 'title': 'Abstract', 'default': ''}, 'scrape_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Scrape Date', 'default': None, 'description': 'ISO date YYYY-MM-DD.'}, 'document_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Document Url', 'default': None, 'description': 'Direct download link to the original document.'}, 'original_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Original Url', 'default': None, 'description': 'URL of the original source web page.'}, 'decision_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Decision Date', 'default': None, 'description': 'ISO date YYYY-MM-DD.'}, 'content_length': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Content Length', 'default': None, 'description': 'Length of the indexed full text in characters. Only set by `fetch_document`.'}, 'text_truncated': {'type': 'boolean', 'title': 'Text Truncated', 'default': False, 'description': 'True if the indexed full text was truncated by Elasticsearch at 100,000 characters. In that case `text` contains only the beginning of the decision; the complete document is available at `document_url`.'}}, 'description': 'Ein einzelner Such-Treffer.'}}, 'title': 'fetch_documentOutput', 'required': ['result'], 'properties': {'result': {'anyOf': [{'$ref': '#/$defs/SearchHit'}, {'type': 'null'}]}}}
list_facets
Facet tree (localized)
Hierarchical facet tree with localized labels for cantons, courts and chambers. The `id` fields can be used in the `hierarchy` filter of the search.
入力スキーマ
{'type': 'object', 'title': 'list_facetsArguments', 'properties': {}}
出力スキーマ
{'type': 'object', 'title': 'list_facetsOutput', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Result'}}}
list_hierarchy
List hierarchy buckets
Returns the available hierarchy IDs for Swiss cantons, courts and chambers together with document counts. Useful for narrowing subsequent searches to the Federal Supreme Court, cantonal courts, Obergerichte or Verwaltungsgerichte.
入力スキーマ
{'type': 'object', 'title': 'list_hierarchyArguments', 'properties': {'size': {'type': 'integer', 'title': 'Size', 'default': 1000, 'maximum': 10000, 'minimum': 1, 'description': 'Maximum number of entries.'}, 'query': {'type': 'string', 'title': 'Query', 'default': '*', 'description': 'Optional full-text query.'}}}
出力スキーマ
{'type': 'object', '$defs': {'HierarchyEntry': {'type': 'object', 'title': 'HierarchyEntry', 'required': ['id', 'count'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'count': {'type': 'integer', 'title': 'Count'}}}}, 'title': 'HierarchyResponse', 'required': ['entries'], 'properties': {'entries': {'type': 'array', 'items': {'$ref': '#/$defs/HierarchyEntry'}, 'title': 'Entries'}}}
search
Search decisions
Full-text search across Swiss court judgments, court decisions and case law from entscheidsuche.ch. Covers decisions of the Federal Supreme Court (BGer, BGE) and cantonal courts such as Kantonsgericht, Obergericht or Verwaltungsgericht. Typical use cases: - Search Federal Supreme Court judgments, BGE or rulings by topic - Find Swiss case law on tenancy law, ZGB, OR, StGB or BV - Verify case numbers, judgment numbers or citations - Related tools: fetch_document, search_by_case_number, list_hierarchy, list_facets Search syntax (Lucene query string): - Phrase / case-number search: "BGE 142 III 1" (in quotes) - Boolean operators: AND, OR, NOT (or +, -) - Wildcards: * and ? - The default operator between terms is AND. Filters are combined with AND. Use hierarchy IDs from `list_hierarchy` or `list_facets`. Pagination: after the first call, pass the `next_cursor` value from the response as `search_after` in the next call.
入力スキーマ
{'type': 'object', '$defs': {'Language': {'enum': ['de', 'fr', 'it'], 'type': 'string', 'title': 'Language', 'description': 'Verfügbare Sprachen der Entscheide.'}}, 'title': 'searchArguments', 'properties': {'size': {'type': 'integer', 'title': 'Size', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Results per page (1–100).'}, 'sort': {'enum': ['relevance', 'date', 'scrapedate'], 'type': 'string', 'title': 'Sort', 'default': 'relevance', 'description': "Optional sort order: 'relevance' | 'date' (decision date) | 'scrapedate'. Default is 'relevance'."}, 'query': {'type': 'string', 'title': 'Query', 'default': '*', 'description': 'Full-text query. "..." for phrases, AND/OR/NOT for Boolean operators, * and ? for wildcards. "*" matches everything.'}, 'language': {'anyOf': [{'$ref': '#/$defs/Language'}, {'type': 'null'}], 'default': None, 'description': 'Optional preferred language for highlighting/display (de, fr, it). If omitted, the first available language field is returned — this does NOT filter; use `language_filter` for that.'}, 'hierarchy': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Hierarchy', 'default': None, 'description': 'List of hierarchy IDs (canton/court/chamber). Multiple IDs are combined with OR; with other filters, AND.'}, 'search_after': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Search After', 'default': None, 'description': 'Cursor from `next_cursor` of the previous response.'}, 'scrape_date_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Scrape Date To', 'default': None, 'description': 'Upper bound for the scrape date (YYYY-MM-DD, inclusive).'}, 'language_filter': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/Language'}}, {'type': 'null'}], 'title': 'Language Filter', 'default': None, 'description': 'Filter by document language(s).'}, 'decision_date_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Decision Date To', 'default': None, 'description': 'Upper bound for the decision date (YYYY-MM-DD, inclusive).'}, 'scrape_date_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Scrape Date From', 'default': None, 'description': 'Lower bound for the scrape date (YYYY-MM-DD, inclusive).'}, 'decision_date_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Decision Date From', 'default': None, 'description': 'Lower bound for the decision date (YYYY-MM-DD, inclusive).'}, 'include_aggregations': {'type': 'boolean', 'title': 'Include Aggregations', 'default': False, 'description': 'Include aggregations (distributions over the results).'}}}
出力スキーマ
{'type': 'object', '$defs': {'SearchHit': {'type': 'object', 'title': 'SearchHit', 'required': ['id'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'meta': {'type': 'string', 'title': 'Meta', 'default': ''}, 'sort': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Sort', 'default': None, 'description': 'Sort values of the hit (for search_after).'}, 'text': {'type': 'string', 'title': 'Text', 'default': '', 'description': 'Highlight excerpt from the full text.'}, 'court': {'type': 'string', 'title': 'Court', 'default': '', 'description': 'Court (derived from the ID).'}, 'title': {'type': 'string', 'title': 'Title', 'default': ''}, 'canton': {'type': 'string', 'title': 'Canton', 'default': ''}, 'is_pdf': {'type': 'boolean', 'title': 'Is Pdf', 'default': False}, 'abstract': {'type': 'string', 'title': 'Abstract', 'default': ''}, 'scrape_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Scrape Date', 'default': None, 'description': 'ISO date YYYY-MM-DD.'}, 'document_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Document Url', 'default': None, 'description': 'Direct download link to the original document.'}, 'original_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Original Url', 'default': None, 'description': 'URL of the original source web page.'}, 'decision_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Decision Date', 'default': None, 'description': 'ISO date YYYY-MM-DD.'}, 'content_length': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Content Length', 'default': None, 'description': 'Length of the indexed full text in characters. Only set by `fetch_document`.'}, 'text_truncated': {'type': 'boolean', 'title': 'Text Truncated', 'default': False, 'description': 'True if the indexed full text was truncated by Elasticsearch at 100,000 characters. In that case `text` contains only the beginning of the decision; the complete document is available at `document_url`.'}}, 'description': 'Ein einzelner Such-Treffer.'}, 'AggregationBucket': {'type': 'object', 'title': 'AggregationBucket', 'required': ['key', 'count'], 'properties': {'key': {'title': 'Key'}, 'count': {'type': 'integer', 'title': 'Count'}}}}, 'title': 'SearchResponse', 'required': ['total', 'hits'], 'properties': {'hits': {'type': 'array', 'items': {'$ref': '#/$defs/SearchHit'}, 'title': 'Hits'}, 'total': {'type': 'integer', 'title': 'Total'}, 'next_cursor': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None, 'description': 'Cursor for the next page. Pass it again as `search_after` in the next request. None if there are no further results.'}, 'aggregations': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'$ref': '#/$defs/AggregationBucket'}}}, {'type': 'null'}], 'title': 'Aggregations', 'default': None}}, 'description': 'Antwort des `search`-Tools.'}
search_by_case_number
Search by case number
Specialized search for case numbers, judgment numbers and BGE citations in Swiss court judgments. This tool automatically wraps the given case number in quotes and runs an exact phrase search, for example for 'BGE 142 III 1', '5A_396/2015' or similar references from the Federal Supreme Court (BGer, BGE) and cantonal case law.
入力スキーマ
{'type': 'object', '$defs': {'Language': {'enum': ['de', 'fr', 'it'], 'type': 'string', 'title': 'Language', 'description': 'Verfügbare Sprachen der Entscheide.'}}, 'title': 'search_by_case_numberArguments', 'required': ['case_number'], 'properties': {'size': {'type': 'integer', 'title': 'Size', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Results per page (1–100).'}, 'sort': {'enum': ['relevance', 'date', 'scrapedate'], 'type': 'string', 'title': 'Sort', 'default': 'relevance', 'description': "Optional sort order: 'relevance' | 'date' (decision date) | 'scrapedate'. Default is 'relevance'."}, 'language': {'anyOf': [{'$ref': '#/$defs/Language'}, {'type': 'null'}], 'default': None, 'description': 'Optional preferred language for highlighting/display (de, fr, it). If omitted, the first available language field is returned — this does NOT filter; use `language_filter` for that.'}, 'hierarchy': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Hierarchy', 'default': None, 'description': 'Optional hierarchy IDs for canton/court/chamber.'}, 'case_number': {'type': 'string', 'title': 'Case Number', 'description': "Case number (docket reference), BGE citation or judgment number, e.g. 'BGE 142 III 1' or '5A_396/2015'."}, 'search_after': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Search After', 'default': None, 'description': 'Cursor from `next_cursor` of the previous response.'}, 'scrape_date_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Scrape Date To', 'default': None, 'description': 'Optional upper bound for the scrape date (YYYY-MM-DD).'}, 'language_filter': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/Language'}}, {'type': 'null'}], 'title': 'Language Filter', 'default': None, 'description': 'Optional filter by document language(s).'}, 'decision_date_to': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Decision Date To', 'default': None, 'description': 'Optional upper bound for the decision date (YYYY-MM-DD).'}, 'scrape_date_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Scrape Date From', 'default': None, 'description': 'Optional lower bound for the scrape date (YYYY-MM-DD).'}, 'decision_date_from': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Decision Date From', 'default': None, 'description': 'Optional lower bound for the decision date (YYYY-MM-DD).'}, 'include_aggregations': {'type': 'boolean', 'title': 'Include Aggregations', 'default': False, 'description': 'Optionally include aggregations.'}}}
出力スキーマ
{'type': 'object', '$defs': {'SearchHit': {'type': 'object', 'title': 'SearchHit', 'required': ['id'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'meta': {'type': 'string', 'title': 'Meta', 'default': ''}, 'sort': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Sort', 'default': None, 'description': 'Sort values of the hit (for search_after).'}, 'text': {'type': 'string', 'title': 'Text', 'default': '', 'description': 'Highlight excerpt from the full text.'}, 'court': {'type': 'string', 'title': 'Court', 'default': '', 'description': 'Court (derived from the ID).'}, 'title': {'type': 'string', 'title': 'Title', 'default': ''}, 'canton': {'type': 'string', 'title': 'Canton', 'default': ''}, 'is_pdf': {'type': 'boolean', 'title': 'Is Pdf', 'default': False}, 'abstract': {'type': 'string', 'title': 'Abstract', 'default': ''}, 'scrape_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Scrape Date', 'default': None, 'description': 'ISO date YYYY-MM-DD.'}, 'document_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Document Url', 'default': None, 'description': 'Direct download link to the original document.'}, 'original_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Original Url', 'default': None, 'description': 'URL of the original source web page.'}, 'decision_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Decision Date', 'default': None, 'description': 'ISO date YYYY-MM-DD.'}, 'content_length': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Content Length', 'default': None, 'description': 'Length of the indexed full text in characters. Only set by `fetch_document`.'}, 'text_truncated': {'type': 'boolean', 'title': 'Text Truncated', 'default': False, 'description': 'True if the indexed full text was truncated by Elasticsearch at 100,000 characters. In that case `text` contains only the beginning of the decision; the complete document is available at `document_url`.'}}, 'description': 'Ein einzelner Such-Treffer.'}, 'AggregationBucket': {'type': 'object', 'title': 'AggregationBucket', 'required': ['key', 'count'], 'properties': {'key': {'title': 'Key'}, 'count': {'type': 'integer', 'title': 'Count'}}}}, 'title': 'SearchResponse', 'required': ['total', 'hits'], 'properties': {'hits': {'type': 'array', 'items': {'$ref': '#/$defs/SearchHit'}, 'title': 'Hits'}, 'total': {'type': 'integer', 'title': 'Total'}, 'next_cursor': {'anyOf': [{'type': 'array', 'items': {}}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None, 'description': 'Cursor for the next page. Pass it again as `search_after` in the next request. None if there are no further results.'}, 'aggregations': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'$ref': '#/$defs/AggregationBucket'}}}, {'type': 'null'}], 'title': 'Aggregations', 'default': None}}, 'description': 'Antwort des `search`-Tools.'}
server_info
Server info
Version info and configured endpoint URLs of the MCP server for Swiss case law and court decisions.
入力スキーマ
{'type': 'object', 'title': 'server_infoArguments', 'properties': {}}
出力スキーマ
{'type': 'object', 'title': 'server_infoDictOutput', 'additionalProperties': True}
追加
server_info
2026年9月25日2:46
追加
list_facets
2026年9月25日2:46
追加
list_hierarchy
2026年9月25日2:46
追加
fetch_document
2026年9月25日2:46
追加
search_by_case_number
2026年9月25日2:46
追加
search
2026年9月25日2:46