Skip to main content
Glama

judikatura-mcp – MCP server pro soudní rozhodnutí ČR (rozhodnuti.justice.cz)

CI License: MIT Python

English summary. A local Model Context Protocol server (stdio) for the Czech Ministry of Justice public database of anonymised court decisions of district, regional and high courts (rozhodnuti.justice.cz). Full-text search with filters (court, legal-institute keywords, statutory provision, judge, type, dates), lookup by case number or ECLI, browsing of the official open-data API by publication date, full decision text, DOCX/TXT export and a local SQLite/FTS5 cache. Czech documentation follows.

Lokální MCP server pro Claude Desktop, Claude Code a další MCP klienty. Umožňuje asistentovi vyhledávat a číst plné texty anonymizovaných rozhodnutí okresních, krajských a vrchních soudů zveřejňovaných Ministerstvem spravedlnosti.

Nástroje

Nástroj

Zdroj

Co dělá

search_decisions

vyhledávací API webu

fulltext (všechna slova / kterékoli / přesná fráze) + filtry: soud, klíčová slova, ustanovení předpisu (§ + číslo/rok), soudce, typ rozhodnutí, datum vydání / zveřejnění, vztah k napadenému rozhodnutí

find_by_case_number

vyhledávací API webu

hledání podle spisové značky 20 C 98/2026 (doporučeno zadat i soud)

browse_published

oficiální opendata API

procházení podle data zveřejnění: roky → měsíce → dny → seznam rozhodnutí (po 100)

get_decision

oficiální opendata API

plný text podle uuid nebo ECLI (záhlaví, výrok, odůvodnění, poučení, metadata); ukládá do cache

export_decision

–

uloží rozhodnutí jako .docx nebo .txt

cache_fill, cache_fill_day

obojí

hromadně stáhne plné texty podle filtru / za den do lokální SQLite cache

cache_search

lokální cache

fulltext FTS5 bez ohledu na diakritiku (OR, "fráze", prefix*, NOT) nad staženými rozhodnutími

cache_stats

lokální cache

stav cache

list_courts, list_keywords

číselníky

109 soudů (kód → název), 1 072 klíčových slov (právních institutů)

Soudy i klíčová slova lze zadávat česky (Krajský soud v Ostravě, bezdůvodné obohacení) – server je převede na kódy. Ustanovení se zadává jako § 2991 z. č. 89/2012 Sb. nebo jen 89/2012.

Related MCP server: SAOS MCP

Instalace

A) Claude Desktop – jedním kliknutím (.mcpb)

  1. Stáhněte judikatura-mcp-X.Y.Z.mcpb z Releases.

  2. Otevřete soubor dvojklikem (nebo Claude Desktop → Settings → Extensions → Advanced settings → Install Extension…).

  3. V nastavení rozšíření volitelně zadejte umístění cache a složku pro export.

Balíček používá runtime uv – Claude Desktop si sám obstará Python i závislosti.

B) Ručně (Claude Desktop, Claude Code, jiný klient)

git clone https://github.com/marshall1727/judikatura-mcp.git
cd judikatura-mcp
.\install.ps1          # vytvoří .venv, nainstaluje, spustí testy a vypíše blok pro claude_desktop_config.json

nebo s uv:

{
  "mcpServers": {
    "judikatura": {
      "command": "uv",
      "args": ["--directory", "C:\\cesta\\k\\judikatura-mcp", "run", "judikatura-mcp"]
    }
  }
}

Proměnné prostředí

Proměnná

Význam

Výchozí

JUDIKATURA_MCP_DB

soubor SQLite cache

%LOCALAPPDATA%\judikatura-mcp\cache.sqlite (Windows), ~/.local/share/judikatura-mcp/cache.sqlite

JUDIKATURA_MCP_EXPORT_DIR

složka pro export DOCX/TXT

~/Documents/judikatura-mcp

Příklady dotazů

  • „Najdi rozhodnutí Krajského soudu v Ostravě z roku 2026 k § 2991 OZ (bezdůvodné obohacení).“

  • „Vyhledej rozsudky s klíčovými slovy smluvní pokuta a ochrana spotřebitele vydané po 01.01.2026.“

  • „Najdi 8 Co 85/2026 u KSOS a ulož ho jako DOCX.“

  • „Stáhni do cache rozhodnutí OSPH01 k § 2079 OZ z letošního roku a pak v nich najdi odstoupení od smlouvy.“

  • „Co bylo zveřejněno 19.09.2026?“

Zdroje dat a omezení

  • Oficiální opendata API (https://rozhodnuti.justice.cz/opendata/) umožňuje jen procházení podle data zveřejnění a stažení detailu rozhodnutí. Používají ho browse_published, get_decision, cache_fill_day.

  • Vyhledávací endpoint /api/finaldoc?… je interní API webové aplikace (stejné, které volá formulář na webu). Není dokumentované a může se změnit bez upozornění. Používají ho search_decisions, find_by_case_number, cache_fill a dohledání podle ECLI.

  • Fulltext s velmi častými slovy („smlouva“, „žalobce“) trvá na straně serveru i desítky sekund a může skončit chybou – kombinujte s filtrem soudu, ustanovení nebo data.

  • Texty jsou anonymizované zdrojem; jména, adresy, data a částky mohou být nahrazeny placeholdery, které server zobrazuje v hranatých závorkách ([datum], [Jméno žalobkyně]). Při citaci používejte soud, spisovou značku, ECLI a datum vydání z metadat.

  • Databáze obsahuje rozhodnutí nižších soudů zveřejňovaná přibližně od roku 2021; NS, NSS a ÚS jsou v číselníku, ale primárním zdrojem pro ně zůstávají jejich vlastní databáze.

  • Server posílá nejvýše 4 souběžné požadavky; cache_fill má strop 500 rozhodnutí na volání.

  • Číselníky soudů a klíčových slov odpovídají webové aplikaci verze 2.2.0 (říjen 2026).

Vývoj

pip install -e ".[dev]"
ruff check .
pytest                          # offline testy (fixture, mock HTTP)
python scripts\build_mcpb.py    # dist\judikatura-mcp-<verze>.mcpb (vyžaduje Node.js pro npx @anthropic-ai/mcpb)

Struktura:

judikatura_mcp/      server.py (nástroje), api.py (HTTP klient), format.py (text, číselníky),
                     cache.py (SQLite + FTS5), export.py (DOCX/TXT), courts.json, flags.json
mcpb/                manifest.json, icon.png, src/server.py – podklady balíčku pro Claude Desktop
scripts/build_mcpb.py
tests/               offline testy
.github/workflows/   CI (lint, testy, build) a Release (push tagu vX.Y.Z → .mcpb, wheel, sdist, zip)

Licence

MIT. Data: Ministerstvo spravedlnosti ČR, otevřená data – https://rozhodnuti.justice.cz/opendata/

Available Tools

11 tools
browse_publishedA

Procházení oficiálního opendata API podle data ZVEŘEJNĚNÍ.

  • bez parametrů: přehled roků a počtů rozhodnutí

  • year: přehled měsíců; year+month: přehled dnů

  • year+month+day: seznam rozhodnutí zveřejněných v daný den (stránkováno po 100, page od 0); court = volitelný filtr na kód/název soudu (filtruje se lokálně v rámci stránky).

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo
pageNo
yearNo
courtNo
monthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose two non-obvious traits: results are paginated at 100 per page with page starting at 0, and the court filter is applied locally within the current page rather than globally. This local-filter caveat is genuinely important for correct use. It does not discuss auth, rate limits, or read-only status, so it is not fully complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A one-line purpose followed by a tight bullet ladder that front-loads the no-argument behavior and escalates by specificity. Every line carries information; there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shapes need not be described, and the description does explain the hierarchical responses conceptually. Combined with the pagination and local-filter disclosures, an agent has enough to call it correctly, though permission/read-only context is absent for a no-annotation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: year, month, and day are explained as the drill-down controls, page as the 0-based pagination index, and court as an optional court code/name filter. The main gap is format detail for court (accepted code vs name form) and any valid ranges for month/day.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (browsing) plus the exact resource and axis (official opendata API by publication date), and then decomposes the tool into an explicit drill-down hierarchy. An agent can immediately tell this is a date-hierarchical browser rather than a free-text search like search_decisions or a single-record get_decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It maps every argument combination to the resulting view (no args -> years/counts, year -> months, year+month -> days, full date -> decision list), which tells the agent precisely how to walk the hierarchy. It stops short of naming when to prefer a sibling such as search_decisions or find_by_case_number, so no explicit exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cache_fillA

Stáhne do lokální cache plné texty všech rozhodnutí odpovídajících filtru (stejné parametry jako search_decisions), nejvýše max_decisions (výchozí 50, max 500). Poté lze prohledávat offline nástrojem cache_search. Pozor: každé rozhodnutí = 1 HTTP požadavek; buďte šetrní k veřejnému serveru.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoALL
courtNo
queryNo
typesNo
keywordsNo
issued_toNo
regulationNo
issued_fromNo
published_toNo
max_decisionsNo
published_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations to lean on, the description carries the full behavioral burden and does so: it discloses the local-cache write side effect, the hard cap (max_decisions default 50, max 500), the per-item network cost (1 HTTP request per decision), and a politeness constraint on the public server. This is exactly the operational context an agent needs before triggering a bulk fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences: capability, follow-up workflow, and cost warning. Nothing is wasted and the cap and warning are front-loaded enough to be seen before invocation. Slightly dense packing of the parameters-as-search_decisions note costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description instead covers what an agent uniquely needs: that full texts are stored locally, the volume ceiling, the per-request cost, and how to retrieve results offline. Complete for a bulk-caching tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 11 parameters, so the description must compensate. It only fully specifies max_decisions (default 50, max 500) and delegates the remaining ten filter parameters to search_decisions by reference. That delegation is a workable shortcut but forces the agent to cross-read another tool's docs, leaving semantics partially covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it downloads full texts of decisions into a local cache, and names the sibling it mirrors (search_decisions) and the one that consumes the result (cache_search). An agent can distinguish it from cache_fill_day, cache_search, and search_decisions without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames a workflow: fill the cache with search_decisions-equivalent filters, then search offline with cache_search. It stops short of stating when NOT to use it (e.g. single-decision fetch via get_decision, or cache_fill_day for day-scoped fills), so the routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cache_fill_dayB

Stáhne do cache všechna rozhodnutí zveřejněná v daný den (oficiální opendata API), volitelně jen pro zadaný soud (kód/název). max_decisions: strop (výchozí 100, max 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
dayYes
yearYes
courtNo
monthYes
max_decisionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses only that this writes into a cache from the opendata API and that max_decisions caps results, but says nothing about permissions, rate limits, overwrite/idempotency behavior, or what happens on partial failures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly packed into one sentence with the core action front-loaded, followed by the optional court filter and the max_decisions constraint. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a cache-writing tool with no annotations and zero schema descriptions on five parameters, the description is only minimally complete: it covers the basic action and two parameter constraints but omits safety, idempotency, and error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It usefully clarifies that court accepts a code or name and that max_decisions is a cap with default 100 and max 500, but year, month, and day receive no semantic detail beyond their names, leaving three required parameters under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Stáhne do cache všechna rozhodnutí') and scopes it to decisions published on a given day via the official opendata API. It does not explicitly differentiate itself from the sibling cache_fill, which likely has broader or different scope, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: populate the cache for one day, optionally filtered by court. There is no explicit when-to-use guidance, no when-not-to-use conditions, and no alternatives named (e.g., cache_fill or browse_published), leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cache_statsB

Stav lokální cache: počet rozhodnutí, rozsah dat zveřejnění, nejčastější soudy, umístění databáze.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. 'Stav' and the enumerated read-only metrics imply a safe inspection operation, but the description never states that it is non-destructive, requires no special auth, or whether it triggers any cache work. It does add concrete value by naming the four categories of information returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the core purpose ('Stav lokální cache') leads and the returned metrics follow as a compact list. Slightly list-heavy but every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter inspection tool with an output schema already present, the description need not explain return formatting. It is complete enough for correct invocation, with the only gap being the absence of any usage or safety context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies no inputs are needed, and there is no parameter ambiguity to resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: 'Stav lokální cache' (state of the local cache) followed by the concrete contents it reports (decision count, publication date range, most frequent courts, database location). This clearly distinguishes it from sibling cache tools like cache_fill or cache_search, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. The diagnostic/inspection intent is only implied by the word 'stats'; an agent must infer that this is for checking cache health rather than for retrieving decisions, and no alternative tool is referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_decisionB

Uloží plný text rozhodnutí jako soubor. format: 'docx' | 'txt'. out_dir: cílová složka (výchozí: Dokumenty/judikatura-mcp nebo proměnná JUDIKATURA_MCP_EXPORT_DIR). filename: název souboru bez přípony (výchozí: kód soudu + spisová značka).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNodocx
out_dirNo
filenameNo
uuid_or_ecliYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. It usefully reveals the default output directory, the JUDIKATURA_MCP_EXPORT_DIR override, and the default filename scheme, but omits overwrite behavior, permission requirements, and error conditions for what is a filesystem write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded, and the remaining text is compact per-parameter explanation with no filler. Structure is efficient, though the inline 'param: meaning' style is dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers the non-obvious parameters well. The main gap is the undocumented required uuid_or_ecli input and any failure/overwrite behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it enumerates format values ('docx' | 'txt'), explains out_dir's default and env-var fallback, and defines filename as extensionless with a default of court code + case number. Only the required uuid_or_ecli parameter is left undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Uloží plný text rozhodnutí jako soubor' – saves the full text of a decision as a file), which clearly distinguishes it from read-oriented siblings like get_decision or search_decisions. It does not explicitly name which sibling to use instead or when this differs from plain retrieval, so it's clear but not fully sibling-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use or when-not-to-use guidance and does not reference alternatives such as get_decision. It functions almost entirely as parameter documentation rather than usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_by_case_numberA

Najde rozhodnutí podle spisové značky ve tvaru 'senát rejstřík číslo/rok' (např. '20 C 98/2026', '8 Co 85/2026'). court = kód nebo název soudu (doporučeno; stejná značka existuje u více soudů).

ParametersJSON Schema
NameRequiredDescriptionDefault
courtNo
limitNo
case_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose one non-obvious domain trait — that case numbers are not globally unique and collide across courts — but says nothing about result limits, behavior on zero matches, or whether multiple decisions can be returned. An output schema exists, so return-shape explanation is not required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the core operation and format come first, followed by the one caveat that matters. Nothing is redundant and no filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter lookup with an output schema, the description covers the key input (case number format) and the court caveat, but omits the semantics of limit and the outcome when multiple courts or multiple decisions match. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents the required case_number format and the meaning/recommendation of court, which is genuine added value, but the third parameter (limit, default 10) is left completely unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (find a decision by case number) and pins down the exact expected format with two concrete examples ('20 C 98/2026', '8 Co 85/2026'). It is clear what the tool does, though it never explicitly contrasts itself with siblings like search_decisions or get_decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a useful conditional hint ('the same case number exists at multiple courts', so supply court), which is implied guidance for parameter choice, but it never says when to prefer this tool over search_decisions or get_decision, nor what happens if court is omitted or no match is found.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_decisionA

Vrátí plný text rozhodnutí podle uuid nebo ECLI (např. 'ECLI:CZ:KSOS:2026:8.Co.85.2026.1'). section: 'all' | 'metadata' | 'verdict' (výrok) | 'justification' (odůvodnění) | 'header' | 'information' (poučení). Stažená rozhodnutí se ukládají do lokální cache; refresh=True vynutí nové stažení.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo
sectionNoall
uuid_or_ecliYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add real behavioral context: decisions are persisted to a local cache and refresh=True forces a fresh download. However, it does not say whether an uncached decision is fetched remotely (and how slow that is), what happens when the uuid/ECLI is not found, or how large the returned text can be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded lines with no filler; the purpose and identifier formats come first and the section/refresh details follow. The inline 'section: a | b | c' enumeration is compact and scannable, though the mixed Czech/English phrasing is slightly choppier than a single flowing sentence would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not needed, and the description covers all three parameters plus cache behavior. What is left thin is the failure path (invalid or unknown identifier) and the remote-fetch implications of completely uncached decisions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description fully compensates: it explains the uuid/ECLI identifier with a concrete ECLI example, enumerates every legal value of section with Czech glosses for verdict/justification, and explains refresh's force-redownload semantics. All three parameters gain meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource ('Vrátí plný text rozhodnutí') plus the two accepted identifier forms (uuid or ECLI, with a worked ECLI example), which is highly specific. It never names or contrasts with siblings like search_decisions, find_by_case_number or export_decision, so the agent must infer the fetch-by-id vs. search/export split on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the retrieval step that follows a search which produced a uuid or ECLI. There is no explicit when-to-use, no when-not-to-use, and no routing to alternatives such as export_decision or cache_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_courtsA

Číselník soudů (kód -> název). Volitelný filtr podle části názvu (bez ohledu na diakritiku), např. 'Ostrav', 'krajský', 'Praha'. Kódy se používají v parametru court u ostatních nástrojů.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It implicitly conveys a read-only dictionary lookup and discloses a non-obvious trait — the filter is diacritic-insensitive — but says nothing about result size, ordering, or any auth/rate constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler; the resource identity, the filter semantics, and the cross-tool code usage are each front-loaded and earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation; for a one-parameter read-only lookup the description covers purpose, parameter behavior, example inputs, and how the output is reused elsewhere. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (the single 'filter' param is bare), so the description must compensate, and it does: it defines the filter as a match on part of the name, notes diacritics are ignored, and supplies three concrete example values ('Ostrav', 'krajský', 'Praha'). This fully specifies the only parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource and what it returns (a code -> name lookup table of courts, 'Číselník soudů (kód -> název)'), plus an optional partial-name filter. It is clearly distinguishable from siblings like list_keywords or search_decisions by domain, though it never explicitly names an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for why the tool exists: the returned 'kódy' are consumed by the 'court' parameter of the other tools, which tells the agent when to reach for it. It stops short of explicit when-not-to-use or naming a sibling alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_keywordsA

Číselník klíčových slov (právních institutů), kterými jsou rozhodnutí označena. filter = část názvu (bez ohledu na diakritiku), např. 'smlouva', 'nájem', 'promlč'. Vrací kód -> český název. Název i kód lze použít v parametru keywords u search_decisions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filterYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses filter matching semantics (partial name, diacritic-insensitive, with examples) and the return shape (code -> Czech name), but says nothing about the limit/truncation behavior or any permission constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the resource definition and then the parameter and return notes. Every sentence adds information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup with an output schema already describing the return values, the description covers purpose, filter semantics, and downstream usage adequately. The only real gap is the unexplained limit parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains 'filter' well (partial, diacritic-insensitive substring matching with examples), but the second parameter ('limit', default 50) is never mentioned, leaving a silent truncation behavior undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource ('číselník klíčových slov') and its role as a classifier applied to decisions, which lets an agent distinguish it from search tools. It lacks contrast against the other list_* sibling (list_courts), so differentiation is partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent the downstream purpose: names and codes returned here feed the 'keywords' parameter of search_decisions, which is a clear routing context. It does not state when-not to use it or name any alternative lookup tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_decisionsA

Vyhledávání soudních rozhodnutí (fulltext + filtry). Používá nedokumentované API webu rozhodnuti.justice.cz.

Parametry:

  • query: hledaná slova v textu rozhodnutí.

  • mode: ALL = všechna slova, ANY = kterékoli slovo, EXACT = přesná fráze.

  • court: kód nebo název soudu; více soudů oddělit čárkou (např. 'KSOS, OSOV' nebo 'Krajský soud v Ostravě').

  • keywords: klíčová slova (kód nebo český název), více oddělit čárkou, např. 'bezdůvodné obohacení, smlouva o úvěru'.

  • regulation: dotčené ustanovení, např. '§ 2991 z. č. 89/2012 Sb.' nebo jen '89/2012' (všechna rozhodnutí citující OZ).

  • judge_last_name / judge_first_name: soudce.

  • types: 'JUDGEMENT' (rozsudek), 'ORDER_T' (trestní příkaz), 'RESOLUTION' (usnesení); více oddělit čárkou. Výchozí: vše.

  • issued_from/issued_to: datum vydání (YYYY-MM-DD). published_from/published_to: datum zveřejnění.

  • affected: vztah k napadenému rozhodnutí: 'CONFIRM', 'CHANGE', 'CANCEL', 'COMPLETE', 'CORRECT', 'REPLACE' (čárkou).

  • sort_by: PUBLISHED_AT | DECISION_AT; sort_direction: DESC | ASC.

  • page (od 0), limit (max 100).

Vrací seznam s uuid, ECLI, soudem, spisovou značkou, daty, předmětem a zkráceným výrokem. Plný text získáte nástrojem get_decision(uuid).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoALL
pageNo
courtNo
limitNo
queryNo
typesNo
sort_byNoPUBLISHED_AT
affectedNo
keywordsNo
issued_toNo
regulationNo
issued_fromNo
published_toNo
published_fromNo
sort_directionNoDESC
judge_last_nameNo
judge_first_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does disclose a genuinely useful trait — that it relies on the undocumented API of rozhodnuti.justice.cz — but says nothing about rate limits, failure modes, or pagination behavior beyond the page/limit params. The return-value sentence duplicates the existing output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by a compact bullet-per-parameter list that is easy to scan, and the length is justified by 17 parameters. Minor waste in the trailing sentence describing the return payload, which the output schema already covers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter, annotation-free search tool with an output schema, the description supplies the parameter semantics, input formats, and a hand-off to get_decision, which is nearly everything an agent needs. It stops short of covering error/rate-limit behaviour on the undocumented upstream API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 17 params, and the description compensates fully: it explains every parameter's meaning, gives the mode semantics (ALL/ANY/EXACT), enum-like values for types and affected, comma-separated multi-value syntax for court/keywords/types, date formats (YYYY-MM-DD), and concrete examples such as '§ 2991 z. č. 89/2012 Sb.' and '89/2012'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Vyhledávání soudních rozhodnutí') plus scope (fulltext + filtry), and points to get_decision(uuid) as the follow-up for full text. It does not differentiate from siblings like find_by_case_number or browse_published, which also retrieve decisions, so the routing is only partially resolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the parameter catalogue rather than stated: no explicit 'use this when…' or exclusion against find_by_case_number/browse_published, and it never tells the agent to resolve courts/keywords via list_courts or list_keywords even though it accepts codes. Adequate for a search tool but leaves alternative selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedbrowse_published
    • First observedcache_fill
    • First observedcache_fill_day
    • First observedcache_search
    • First observedcache_stats
    • First observedexport_decision
    • First observedfind_by_case_number
    • First observedget_decision
    • First observedlist_courts
    • First observedlist_keywords
    • First observedsearch_decisions

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have clearly distinct purposes: lookup tables (list_courts/list_keywords), online search (search_decisions), case-number lookup (find_by_case_number), date browsing (browse_published), full-text retrieval (get_decision), export, and cache operations. There is mild overlap among the several 'find decisions' tools and between cache_fill and cache_fill_day, but descriptions make the intended boundary clear.

Naming Consistency4/5

Names follow a predictable snake_case convention, mostly verb_noun (list_courts, search_decisions, get_decision, export_decision). The cache group uses a noun-prefixed namespace (cache_fill, cache_fill_day, cache_search, cache_stats), a minor deviation but logically grouped and readable.

Tool Count5/5

11 tools is well-scoped for a judicial-decisions server, covering discovery, retrieval, export, and offline cache workflow. Each tool earns its place with no filler.

Completeness4/5

The surface covers the full lifecycle of finding, retrieving, exporting, and caching decisions, including offline search and status. Minor gaps such as citation/related-decision lookup exist, but core workflows are covered without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers