isir-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@isir-mcpnajdi insolvenční řízení pro IČO 12345678"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
isir-mcp – MCP server pro insolvenční rejstřík (isir.justice.cz)
English summary. A local Model Context Protocol server (stdio) for the Czech public insolvency register ISIR. It looks up debtors and proceedings via the official SOAP web services of the Ministry of Justice, lists all events and documents of a case from the public case-detail page, downloads the PDFs, extracts their text and OCRs scanned pages (Tesseract, Czech), unpacks PDF portfolios and offers full-text search across a case. It enforces the register's published rate limits. Czech documentation follows.
Lokální MCP server pro Claude Desktop, Claude Code a další MCP klienty. Umožňuje asistentovi pracovat s úplným obsahem všech dokumentů insolvenčního řízení – včetně skenů.
Nástroje
Nástroj | Zdroj v ISIR | Co dělá |
| webová služba ISIR_CUZK_WS2 | hledání řízení podle IČO, RČ, jména/názvu, data narození nebo spisové značky |
| HTML detail řízení | hlavička: dlužník, stav, soud, správce, lhůty, počty událostí v oddílech A/B/C/D/P |
| HTML detail řízení ( | všechny události oddílu s ID hlavního a vedlejšího dokumentu a právní mocí |
| HTML detail řízení | plochý seznam všech dokumentů řízení |
|
| stáhne PDF do cache, zjistí textovou vrstvu |
| PDF v cache | plný text: textová vrstva + OCR stran bez vrstvy; u PDF portfolií vybalí a přečte přílohy |
| PDF v cache | fulltext napříč dokumenty řízení (bez ohledu na diakritiku, nebo regex) |
| webová služba ISIR_PUBLIC_WS | tok událostí celého rejstříku (sledování změn) |
| – | využití limitů, cache, dostupnost OCR |
Server nepoužívá webový vyhledávací formulář ISIR (je chráněn CAPTCHA). Lustrace jde výhradně přes oficiální webovou službu MSp určenou pro strojový přístup; detail řízení a dokumenty se čtou z veřejných URL bez přihlášení.
Related MCP server: rejestr-io-mcp
Limity a chování
Podmínky provozu ISIR povolují max. 50 požadavků/min a 3 000/den. Server vynucuje výchozí 1 požadavek / 1,5 s (40/min) a 2 500/den; denní počítadlo je uložené v cache a přežije restart. Při vyčerpání vrátí nástroj chybu – limit nikdy nepřekročí.
Vše stažené (HTML detailů na 1 h, PDF, extrahovaný text, metadata) je v cache
~/.isir-mcp/cache (změna přes ISIR_CACHE_DIR). Cesty k souborům jsou ve výstupu nástrojů, takže
klient může s PDF/TXT dále pracovat jako s běžnými soubory.
Cache obsahuje osobní údaje dlužníků z veřejného rejstříku. Zacházejte s ní jako s ostatními spisovými materiály (přístupová práva, výmaz po skončení věci).
Instalace
A) Claude Desktop – jedním kliknutím (.mcpb)
Stáhněte
isir-mcp-X.Y.Z.mcpbz Releases.Otevřete soubor dvojklikem (nebo Claude Desktop → Settings → Extensions → Advanced settings → Install Extension…).
V nastavení rozšíření volitelně zadejte složku cache, cestu k Tesseractu, jazyky OCR, denní limit a kontakt.
Balíček používá runtime uv – Claude Desktop si sám stáhne Python i závislosti, nic dalšího
není potřeba. Pro OCR skenovaných dokumentů nainstalujte Tesseract OCR s českými daty (viz níže)
a cestu k tesseract.exe zadejte v nastavení rozšíření.
Sestavení balíčku ze zdrojů: python scripts/build_mcpb.py → dist/isir-mcp-X.Y.Z.mcpb
(použije oficiální CLI @anthropic-ai/mcpb, je-li k dispozici npx).
B) Ručně (Claude Code, jiní MCP klienti, vývoj)
Požadavky: Python 3.10+ a Tesseract OCR s českými daty.
Windows: instalátor UB Mannheim → Additional language data → Czech. Výchozí cesta
C:\Program Files\Tesseract-OCR\tesseract.exe.macOS:
brew install tesseract tesseract-langDebian/Ubuntu:
sudo apt install tesseract-ocr tesseract-ocr-ces
git clone https://github.com/marshall1727/isir-mcp.git
cd isir-mcp
python -m venv .venv
# Windows: .\.venv\Scripts\pip install -e . | macOS/Linux: .venv/bin/pip install -e .Na Windows lze místo toho spustit install.ps1, který vytvoří prostředí, nainstaluje balíček,
spustí offline testy a vygeneruje blok konfigurace pro Claude Desktop.
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json (Windows) nebo
~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"isir": {
"command": "C:\\cesta\\k\\isir-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "isir_mcp.server"],
"env": {
"TESSERACT_CMD": "C:\\Program Files\\Tesseract-OCR\\tesseract.exe",
"ISIR_OCR_LANG": "ces+eng",
"ISIR_CACHE_DIR": "C:\\cesta\\k\\isir-cache",
"ISIR_CONTACT": "vas@email.cz"
}
}
}
}Po restartu ověřte: „Zavolej isir_stav_serveru“ → ocr_dostupne: true.
Claude Code
claude mcp add isir -e TESSERACT_CMD="C:\Program Files\Tesseract-OCR\tesseract.exe" -- <cesta>/.venv/Scripts/python.exe -m isir_mcp.serverOvěření proti živému ISIR
.venv/bin/python tests/live_smoke.py # ~6 požadavků: lustrace → detail → oddíl B → text dokumentuProměnné prostředí
Proměnná | Výchozí | Význam |
|
| adresář cache |
| – | kontakt do User-Agent (slušnost vůči provozovateli) |
|
| min. rozestup požadavků (s) |
|
| max. požadavků/min (strop ISIR: 50) |
|
| max. požadavků/den (strop ISIR: 3000) |
|
| platnost cache detailu řízení (s) |
| z PATH | cesta k tesseract.exe |
|
| jazyky OCR |
|
| rozlišení rendrování pro OCR |
|
| pod tolik znaků/stranu se strana považuje za sken |
|
| strop OCR stran na dokument |
Typický postup v konverzaci
isir_lustrace(ico="12345678")→ spisová značka +detailIdisir_detail_rizeni("KSOS 25 INS 10525/2016")→ stav, správce, počty událostíisir_udalosti(rizeni=..., oddil="B", hledat="usnesení")→ ID dokumentůisir_text_dokumentu(dokument_id="58657721")→ plný text (OCR podle potřeby)isir_hledat_v_dokumentech(rizeni=..., dotaz="zajištěný věřitel", oddily="B,P", max_dokumentu=30)
Release
Hotové balíčky jsou v záložce Releases:
isir-mcp-X.Y.Z.mcpb (rozšíření pro Claude Desktop), isir_mcp-X.Y.Z-py3-none-any.whl
(instalace pip install <soubor>.whl), sdist a zdrojový zip.
Release vytváří GitHub Actions automaticky po pushi tagu vX.Y.Z; verze tagu musí odpovídat
version v pyproject.toml. Lokálně to zařídí publish.ps1.
Vývoj
pip install -e ".[dev]"
pytest # offline testy parserů (fixture HTML)
ruff check .Struktura: ws.py (SOAP služby), detail.py (parser detailu řízení), documents.py (PDF, OCR,
portfolia), ratelimit.py, server.py (MCP nástroje).
Známá omezení
Oddíl P velkých řízení (tisíce přihlášek) je jedna velká HTML stránka; načtení trvá, ale jde o 1 požadavek. Fulltext přes stovky dokumentů respektuje limity – počítejte s minutami.
Nová podoba rejstříku (eisir.justice.cz) byla v době vývoje v ověřovacím provozu bez dat; server používá stávající ISIR. Změní-li MSp HTML detailu, upravte
isir_mcp/detail.py(testy vetests/to odhalí).Kvalita OCR závisí na kvalitě skenu;
ocr="force"pomůže u PDF s poškozenou textovou vrstvou.
Právní poznámka
Insolvenční rejstřík je veřejně přístupný informační systém veřejné správy (§ 419 a násl. insolvenčního zákona); každý má právo do něj nahlížet a pořizovat kopie a výpisy. Tento software není produktem Ministerstva spravedlnosti. Uživatel odpovídá za dodržení Podmínek provozu ISIR a za nakládání s osobními údaji získanými z rejstříku.
Licence
MIT – viz LICENSE.
Available Tools
9 toolsisir_detail_rizeniA
Hlavička insolvenčního řízení: dlužník, stav, spisová značka, soud, insolvenční správce,
lhůty, datum poslední události a počty událostí v oddílech A (do úpadku), B (po úpadku),
C (incidenční spory), D (ostatní), P (přihlášky).
rizeni = spisová značka, detailId (32 hex znaků) nebo URL detailu. obnovit=True obejde cache (1 h).
| Name | Required | Description | Default |
|---|---|---|---|
| rizeni | Yes | ||
| obnovit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 disclose real behavior beyond the schema: the 1-hour cache and how `obnovit=True` bypasses it. It remains silent on error/not-found behavior and does not explicitly state the operation is read-only, so it falls short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned fields, then the parameter notes in a compact second line. The field enumeration is long but each item is informative; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, yet the description usefully summarizes the payload shape anyway. Identifier formats and caching are covered; only usage routing and failure behavior are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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: `rizeni` accepts a case number (spisová značka), a 32-hex detailId, or a detail URL, and `obnovit=True` bypasses the 1-hour cache. Both parameters gain meaning not present in the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line names the specific resource (header of an insolvency proceeding) and enumerates exactly which fields come back (debtor, status, case number, court, administrator, deadlines, last event date, event counts per section A–P). That is enough to distinguish it from siblings like isir_udalosti or isir_dokumenty, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus isir_lustrace, isir_udalosti, or isir_tok_udalosti. The only conditional guidance is for the `obnovit` flag (bypass cache), which is parameter-level, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_dokumentyC
Plochý seznam všech dokumentů řízení (ID, role hlavní/vedlejší, velikost, událost, oddíl, datum, popis). Vhodné jako podklad pro hromadné stažení/OCR. oddily: čárkou oddělené.
| Name | Required | Description | Default |
|---|---|---|---|
| oddily | No | A,B,C,D,P | |
| rizeni | Yes | ||
| obnovit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 that the result is a flat list and that output is suited to bulk download/OCR, but says nothing about permissions, pagination, rate limits, or the caching/refresh semantics implied by the 'obnovit' parameter. Return-field enumeration does not count since an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, front-loaded sentences that state the resource and its fields first, then the usage context and the one parameter format note. No filler; slightly compressed to the point where important details were dropped rather than wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema present means return values need not be explained, but two of three parameters and all behavioral traits remain undocumented with no annotations as backstop. An agent cannot determine the expected format of the required 'rizeni' identifier or what 'obnovit' actually refreshes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for all three parameters. It only clarifies one — "oddily: čárkou oddělené" (comma-separated sections) — and leaves the required 'rizeni' and the 'obnovit' flag (presumably a cache refresh) undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination: a flat list of all documents for a proceeding, and even enumerates the returned fields (ID, role, size, event, section, date, description). However it never names or contrasts itself with the sibling isir_hledat_v_dokumentech, so an agent must infer whether it is a full listing vs. a filtered search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Vhodné jako podklad pro hromadné stažení/OCR" implies the intended context (bulk download/OCR pipeline), which is useful routing signal toward isir_stahnout_dokument. But there is no explicit when-not guidance and no alternative tool is named, so the agent must guess whether to use this vs. isir_hledat_v_dokumentech.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_hledat_v_dokumentechA
Fulltextové hledání napříč dokumenty řízení. Stáhne (a podle potřeby OCR) až max_dokumentu dokumentů z vybraných oddílů (od nejnovějších) a vrátí nálezy s kontextem. Hledání je necitlivé na velikost písmen a diakritiku; regex=True použije regulární výraz (bez skládání diakritiky). POZOR: každý dosud nestažený dokument = 1 požadavek na ISIR a případné OCR (desítky sekund na dokument). Pro velká řízení zužte oddíly nebo max_dokumentu.
| Name | Required | Description | Default |
|---|---|---|---|
| ocr | No | auto | |
| dotaz | Yes | ||
| regex | No | ||
| oddily | No | A,B,C,D,P | |
| rizeni | Yes | ||
| kontext_znaku | No | ||
| max_dokumentu | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that each uncached document costs one ISIR request plus possible OCR ('desítky sekund na dokument'), describes matching semantics (case- and diacritics-insensitive, regex disables folding), and warns about cost on large proceedings. It omits auth requirements and whether results are cached/persisted, keeping it below the top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action, then matching semantics, then a capitalized cost warning. No filler; each sentence adds decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 detail is unnecessary, and the description still summarizes the shape ('nálezy s kontextem'). For a 7-parameter, high-latency operation it covers cost, scoping and matching behavior well; only the parameter formats (section codes, ocr values) remain under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it gives conceptual meaning for nearly every parameter: dotaz (search), rizeni (proceeding), oddily (sections), max_dokumentu (count), regex (regular expression), ocr ('podle potřeby OCR'), and context around findings. It does not document the oddily section-code format or the accepted ocr values beyond 'auto', leaving some format ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('fulltextové hledání napříč dokumenty řízení') plus the concrete mechanism (downloads up to max_dokumentu documents from selected sections and returns findings with context). This distinguishes it cleanly from siblings like isir_dokumenty (listing), isir_stahnout_dokument (single download) and isir_text_dokumentu (text extraction).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context and a scoping rule of thumb ('pro velká řízení zužte oddíly nebo max_dokumentu'), which tells the agent when to constrain usage. It does not explicitly route to or exclude sibling tools (e.g. when to prefer isir_text_dokumentu for a single file), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_lustraceA
Lustrace v ISIR (webová služba ISIR_CUZK_WS2). Zadejte JEDNU z kombinací:
ico (8 číslic) nebo rc (rodné číslo, s lomítkem i bez),
spisova_znacka ('KSOS 37 INS 1000/2024' nebo jen 'INS 1000/2024'),
nazev_osoby (příjmení / název firmy) + volitelně jmeno a datum_narozeni (YYYY-MM-DD). Vrací seznam řízení: spisová značka, soud, dlužník, stav (druhStavKonkursu), data úpadku a detailId pro další nástroje. jen_aktualni=True vynechá skončená řízení.
| Name | Required | Description | Default |
|---|---|---|---|
| rc | No | ||
| ico | No | ||
| jmeno | No | ||
| nazev_osoby | No | ||
| jen_aktualni | No | ||
| max_vysledku | No | ||
| bez_diakritiky | No | ||
| datum_narozeni | No | ||
| spisova_znacka | No | ||
| presna_shoda_jmen | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 the mutual-exclusivity rule for input combos and the jen_aktualni filter semantics, but says nothing about result limits (max_vysledku), matching behavior (bez_diakritiky, presna_shoda_jmen), permissions, or error/empty-result handling for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then uses a compact bulleted list for the input combos followed by the return shape. Efficient and easy to scan; only minor redundancy in restating the web-service name alongside the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool this covers the primary lookup paths and the return content well, and an output schema exists so return detail is not strictly required. The gap is the three undocumented control flags (max_vysledku, bez_diakritiky, presna_shoda_jmen), which an agent cannot invoke confidently without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 params, so the description must compensate. It handles ico (8 digits), rc (with/without slash), spisova_znacka (two format examples), nazev_osoby + jmeno + datum_narozeni (YYYY-MM-DD) and jen_aktualni, but leaves max_vysledku, bez_diakritiky and presna_shoda_jmen entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lustrace v ISIR' against ISIR_CUZK_WS2) and names the exact output entity (list of proceedings with spisová značka, soud, dlužník, stav, detailId). It also distinguishes itself from siblings by noting detailId is 'pro další nástroje', positioning this as the entry lookup versus e.g. isir_detail_rizeni.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete entry guidance by enumerating the accepted input combinations ('Zadejte JEDNU z kombinací') and implies this is the first call that feeds downstream tools. However it never states when NOT to use it or names a specific alternative sibling, so usage context is clear but without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_stahnout_dokumentA
Stáhne PDF dokumentu z ISIR do lokální cache a vrátí cestu k souboru, počet stran a informaci, zda má textovou vrstvu. Text nevrací – použijte isir_text_dokumentu.
| Name | Required | Description | Default |
|---|---|---|---|
| znovu | No | ||
| dokument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does add a real behavioral trait beyond the schema: the PDF is written into a local cache and the tool returns only metadata (path, page count, text-layer flag), not content. It stops short of covering idempotency or whether a cached copy is reused on repeat calls, which matters for a caching tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler: the first states the action, side effect and return values; the second handles the routing disambiguation. The most decision-relevant information (what you get and what you do not) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return values need not be re-explained, and the description correctly covers the core behavior. However, with zero annotation coverage and 0% schema description coverage, the unexplained `znovu` parameter leaves a genuine gap an agent cannot resolve from any structured field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description explains neither parameter. `dokument_id` is inferable from context, but `znovu` (re-download / force refresh) is completely opaque — nothing in the description or schema tells the agent what it toggles or when to set it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (downloads the PDF of a document from ISIR) and states the exact outcome (saved into local cache, returns file path, page count, text-layer flag). It also explicitly distinguishes itself from the sibling that returns text, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the concrete alternative for the common confusion case: 'Text nevrací – použijte isir_text_dokumentu' (it does not return text – use isir_text_dokumentu). That gives an explicit routing condition between this tool and the text-extraction sibling, rather than leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_stav_serveruA
Stav omezovače požadavků (kolik požadavků dnes, limity), adresář cache a dostupnost OCR.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses what the call surfaces (today's request count, limits, cache location, OCR availability), which lets an agent reason about rate limiting and service health, but it says nothing about permissions, freshness, or whether any state is mutated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence listing three clearly delimited items; every clause earns its place and nothing is padded. Information is front-loaded with the rate-limiter status, the most likely reason to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not detail return values, yet it still summarizes them well. The only shortfall is the absence of usage or auth guidance, which is minor for a zero-parameter read-only status endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly spends no words on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (server state) and enumerates the concrete facets it reports: request-rate-limiter counts/limits, cache directory, and OCR availability. It is unmistakably distinct from the sibling tools (document retrieval, proceedings, events), though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 statement and no named alternative. The listed contents (rate limiter usage, OCR availability) imply a diagnostic/health-check use case, but the agent must infer that this is the tool to call before hammering the server or when OCR fails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_text_dokumentuA
Plný text dokumentu ISIR. Stáhne PDF (je-li třeba), vezme textovou vrstvu a stránky bez ní přečte OCR (Tesseract, čeština). U vedlejších dokumentů (PDF portfolio) vybalí přílohy a připojí i jejich text. Výstup je členěn značkami '----- strana N -----'. ocr: 'auto' (výchozí) | 'force' (OCR všech stran, např. při špatné textové vrstvě) | 'never'. Dlouhé texty: použijte strana_od/strana_do nebo offset (znaky) + max_znaku pro stránkování. Vrací JSON s metadaty (soubor, stran, zdroj textu, OCR stran, přílohy) a polem 'text'.
| Name | Required | Description | Default |
|---|---|---|---|
| ocr | No | auto | |
| znovu | No | ||
| offset | No | ||
| max_znaku | No | ||
| strana_do | No | ||
| strana_od | No | ||
| dokument_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly succeeds: it discloses the OCR engine (Tesseract, Czech), attachment unpacking for PDF portfolios, the page-marker output format, and the JSON return shape. It omits any note on permissions/rate limits or the cost of forced OCR on large documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by pipeline behavior, then parameter guidance and return shape. Information-dense with little filler, though the OCR-mode and pagination blocks could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter extraction tool with no annotations and an output schema present, the description covers the pipeline, the tricky parameter modes, pagination, and even summarizes the return payload. It is nearly complete, missing only guidance on 'znovu' and on when not to use OCR.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for the non-obvious parameters: it enumerates the three 'ocr' modes with when-to-use guidance and explains the pagination params (strana_od/strana_do, offset, max_znaku). It leaves 'znovu' (re-process flag) and the required 'dokument_id' unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Plný text dokumentu ISIR') and immediately details the extraction pipeline (PDF download, text layer, OCR). This clearly separates it from download-oriented siblings like isir_stahnout_dokument and search-oriented ones like isir_hledat_v_dokumentech.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage conditions: 'force' for bad text layers, and pagination via strana_od/strana_do or offset + max_znaku for long documents. It does not, however, explicitly state when to prefer this tool over isir_stahnout_dokument or isir_hledat_v_dokumentech.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_tok_udalostiA
Tok událostí celého rejstříku (webová služba ISIR_PUBLIC_WS, WS_1). Vrací dávky událostí s ID > od_id (bez od_id začne u posledního ID, tj. vrátí jen nejnovější). Každá událost: ID, datum, spisová značka (bez soudu), typ a popis, URL dokumentu a strukturovaná poznámka (dlužník, věřitel, přihláška, stav řízení...). Určeno pro sledování změn, ne pro cílené dotazy na jedno řízení (k tomu slouží isir_udalosti). jen_spisova_znacka filtruje výstup (tvar 'INS 1000/2024').
| Name | Required | Description | Default |
|---|---|---|---|
| davek | No | ||
| od_id | No | ||
| jen_spisova_znacka | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers the key behavioral trait: omitting od_id starts at the last ID and returns only the newest events, plus an enumeration of returned event fields. It omits any mention of auth requirements, rate limits, or what davek controls, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and scope, then layers in return fields and the filter. Dense but every sentence carries information; the return-field enumeration is slightly verbose given an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be spelled out, yet the description does describe returned fields anyway. Together with the usage routing and od_id semantics, the agent has enough to call it correctly; only davek remains undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 3 parameters, so the description must compensate. It clarifies od_id semantics (ID > od_id; no od_id = newest only) and the jen_spisova_znacka filter format ('INS 1000/2024'), but leaves davek entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (event stream of the whole registry) and pins the underlying web service (ISIR_PUBLIC_WS, WS_1). It explicitly distinguishes itself from the sibling isir_udalosti by stating this is not for single-proceeding queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly states the intended use (monitoring changes) versus the excluded use (targeted queries on one proceeding) and names the alternative tool isir_udalosti for the latter. Also explains the od_id default behavior and the filter's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isir_udalostiA
Seznam událostí (záznamů) jednoho oddílu řízení včetně ID dokumentů. oddil: A/B/C/D/P. Každá událost má označení (např. B-7, P12-3), datum, popis (může být více úkonů), hlavní dokument a vedlejší dokument (PDF portfolio s přílohami), datum právní moci. poslednich=N vrátí jen N nejnovějších. hledat=text filtruje podle popisu (bez ohledu na velikost písmen, bez diakritiky netřeba řešit – porovnává se po normalizaci).
| Name | Required | Description | Default |
|---|---|---|---|
| oddil | No | B | |
| hledat | No | ||
| rizeni | Yes | ||
| obnovit | No | ||
| poslednich | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It mentions that 'hledat' is case-insensitive and diacritics-insensitive via normalization, and that 'poslednich=N' returns the latest N events. However, it omits other behavioral aspects like whether 'obnovit' forces a refresh, pagination, rate limits, or authentication requirements. Output schema exists but is not referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the tool's purpose and key parameter explanations. However, the inclusion of '(záznamů)' and long phrasing about document types could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, 0% schema description coverage, and an output schema, the description is minimally adequate. It explains some parameters but misses others (rizeni, obnovit) and does not leverage the output schema. More detail on parameter usage and behavioral traits is needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explains 'oddil' values (A/B/C/D/P), 'poslednich' as returning latest N, and 'hledat' as text filtering with normalization. But it does not describe 'rizeni' (required) or 'obnovit' (boolean refresh?), leaving two parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a list of events (records) for one section of proceedings, including document IDs. It distinguishes from siblings like isir_tok_udalosti by specifying 'jednoho oddílu řízení' and from isir_dokumenty by focusing on events rather than documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the 'oddil', 'poslednich', and 'hledat' parameters, implying when to use them. However, it does not explicitly state when to use this tool versus alternatives like isir_tok_udalosti or isir_detail_rizeni, nor does it mention prerequisites or exclusions.
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.
9 tool updates
v0.1.0- First observed
isir_detail_rizeni - First observed
isir_dokumenty - First observed
isir_hledat_v_dokumentech - First observed
isir_lustrace - First observed
isir_stahnout_dokument - First observed
isir_stav_serveru - First observed
isir_text_dokumentu - First observed
isir_tok_udalosti - First observed
isir_udalosti
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: proceeding lookup, proceeding detail, section events, document listing, document download, document text/OCR, cross-document fulltext search, global event stream, and server status. Potential overlap between isir_udalosti and isir_dokumenty is resolved by descriptions (section-based event list vs flat document list). No two tools appear to do the same thing.
All tools use the same isir_ prefix and snake_case, with consistent Czech terminology. There is a minor stylistic mix between noun-only names (isir_lustrace, isir_udalosti) and verb_noun names (isir_stahnout_dokument, isir_hledat_v_dokumentech), but the pattern remains predictable.
Nine tools are well-scoped for a read-only ISIR integration. Each tool covers a distinct capability and no tool appears redundant or filler.
The surface covers the main workflows: search/lustration, proceeding detail, events, document listing, download, text extraction/OCR, cross-document search, global monitoring, and server status. A minor gap is the lack of a direct fetch-by-ID tool for a single event or document without going through a listing or download endpoint, but workarounds are reasonably clear.
Maintenance
Related MCP Connectors
Czech insolvency register (ISIR) — active/historical insolvency & bankruptcy by IČO or person.
Slovak court decisions as MCP tools. 12,000+ decisions, GDPR-compliant, pseudonymized, SLA-backed.
US business bankruptcy MCP: filings, dockets, documents, case summaries. Free tier + subscription.
Official EUR-Lex, UK, US, and gazette search, metadata fetch, and change-only watches.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for accessing Czech datové schránky (ISDS) with legal semantics. Enables AI agents to safely read, send, and archive messages while respecting delivery triggers and deadlines.1MIT
- FlicenseAqualityCmaintenanceMCP server providing access to Polish business registers (KRS, CRBR) via the rejestr.io API, enabling search, retrieval of organizations, beneficial owners, financial documents, and more.12-
- AlicenseAqualityDmaintenanceMCP server for the Czech business registry ARES, enabling company validation, lookup, and due diligence checks directly from AI clients.1433 npmMIT
- AlicenseAqualityBmaintenanceMCP server that enables searching and retrieving Czech university theses from theses.cz, including full-text search, metadata, and direct PDF downloads with optional cookie-based authentication.3MIT