Skip to main content
Glama

isir-mcp – MCP server pro insolvenční rejstřík (isir.justice.cz)

CI License: MIT Python

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á

isir_lustrace

webová služba ISIR_CUZK_WS2

hledání řízení podle IČO, RČ, jména/názvu, data narození nebo spisové značky

isir_detail_rizeni

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

isir_udalosti

HTML detail řízení (page=all)

všechny události oddílu s ID hlavního a vedlejšího dokumentu a právní mocí

isir_dokumenty

HTML detail řízení

plochý seznam všech dokumentů řízení

isir_stahnout_dokument

/isir/doc/dokument.PDF?id=

stáhne PDF do cache, zjistí textovou vrstvu

isir_text_dokumentu

PDF v cache

plný text: textová vrstva + OCR stran bez vrstvy; u PDF portfolií vybalí a přečte přílohy

isir_hledat_v_dokumentech

PDF v cache

fulltext napříč dokumenty řízení (bez ohledu na diakritiku, nebo regex)

isir_tok_udalosti

webová služba ISIR_PUBLIC_WS

tok událostí celého rejstříku (sledování změn)

isir_stav_serveru

–

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)

  1. Stáhněte isir-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 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-lang

  • Debian/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.server

Ověření proti živému ISIR

.venv/bin/python tests/live_smoke.py     # ~6 požadavků: lustrace → detail → oddíl B → text dokumentu

Proměnné prostředí

Proměnná

Výchozí

Význam

ISIR_CACHE_DIR

~/.isir-mcp/cache

adresář cache

ISIR_CONTACT

–

kontakt do User-Agent (slušnost vůči provozovateli)

ISIR_MIN_INTERVAL

1.5

min. rozestup požadavků (s)

ISIR_PER_MINUTE_LIMIT

40

max. požadavků/min (strop ISIR: 50)

ISIR_DAILY_LIMIT

2500

max. požadavků/den (strop ISIR: 3000)

ISIR_DETAIL_TTL

3600

platnost cache detailu řízení (s)

TESSERACT_CMD

z PATH

cesta k tesseract.exe

ISIR_OCR_LANG

ces+eng

jazyky OCR

ISIR_OCR_DPI

300

rozlišení rendrování pro OCR

ISIR_OCR_MIN_CHARS

40

pod tolik znaků/stranu se strana považuje za sken

ISIR_MAX_OCR_PAGES

300

strop OCR stran na dokument

Typický postup v konverzaci

  1. isir_lustrace(ico="12345678") → spisová značka + detailId

  2. isir_detail_rizeni("KSOS 25 INS 10525/2016") → stav, správce, počty událostí

  3. isir_udalosti(rizeni=..., oddil="B", hledat="usnesení") → ID dokumentů

  4. isir_text_dokumentu(dokument_id="58657721") → plný text (OCR podle potřeby)

  5. 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 ve tests/ 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 tools
isir_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
rizeniYes
obnovitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 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.

Conciseness4/5

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.

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 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.

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: `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.

Purpose4/5

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.

Usage Guidelines2/5

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é.

ParametersJSON Schema
NameRequiredDescriptionDefault
oddilyNoA,B,C,D,P
rizeniYes
obnovitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocrNoauto
dotazYes
regexNo
oddilyNoA,B,C,D,P
rizeniYes
kontext_znakuNo
max_dokumentuNo

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 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.

Conciseness5/5

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.

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 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.

Parameters4/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, 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.

Purpose5/5

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.

Usage Guidelines4/5

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í.

ParametersJSON Schema
NameRequiredDescriptionDefault
rcNo
icoNo
jmenoNo
nazev_osobyNo
jen_aktualniNo
max_vysledkuNo
bez_diakritikyNo
datum_narozeniNo
spisova_znackaNo
presna_shoda_jmenNo

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. 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
znovuNo
dokument_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

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 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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/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 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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
ocrNoauto
znovuNo
offsetNo
max_znakuNo
strana_doNo
strana_odNo
dokument_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 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.

Conciseness4/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
davekNo
od_idNo
jen_spisova_znackaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 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.

Conciseness4/5

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.

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 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
oddilNoB
hledatNo
rizeniYes
obnovitNo
poslednichNo

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?

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.

Conciseness4/5

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.

Completeness3/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 9 tool updatesv0.1.0
    • First observedisir_detail_rizeni
    • First observedisir_dokumenty
    • First observedisir_hledat_v_dokumentech
    • First observedisir_lustrace
    • First observedisir_stahnout_dokument
    • First observedisir_stav_serveru
    • First observedisir_text_dokumentu
    • First observedisir_tok_udalosti
    • First observedisir_udalosti

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

Nine tools are well-scoped for a read-only ISIR integration. Each tool covers a distinct capability and no tool appears redundant or filler.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    MCP 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
    -
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for the Czech business registry ARES, enabling company validation, lookup, and due diligence checks directly from AI clients.
    14
    33 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP 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.
    3
    MIT