MCP Server for Polish public data: KRS, CEIDG, GUS BDL, VAT Whitelist, and validators for NIP/REGON/PESEL
Server provides 13 tools with consistent naming (verb_noun pattern: krs_search, gus_get, validate_*) and detailed Polish-language descriptions. All tools have input schemas with type definitions and parameter descriptions. However, output schemas are not explicitly documented in the code, descriptions lack English translations limiting LLM accessibility, and error handling guidance is minimal. Tools follow single-responsibility principle well (search vs. get vs. validate). Parameter constraints are described textually but not formalized as enums or JSON Schema patterns. No tool annotations (readOnlyHint, etc.) present.
Look up up to 50 Polish companies by NIP simultaneously. Uses the MF Biala Lista VAT (VAT Whitelist) — the same backend as krs_search_company — so it works for both spolki (KRS) and JDG (CEIDG). Returns name, VAT status, KRS number, REGON and registered bank accounts for each NIP. Results are cached for 7 days.
Zwroc statystyki cache. Returns: dict z: - total_entries: int - entries_per_tool: dict[str, int] - hits_last_24h: int - hit_rate_24h: float (hits / (hits + misses) w ostatnich 24h) - db_path: str
Szukaj przedsiebiorcy (jednoosobowej dzialalnosci gospodarczej) w CEIDG. Uzyj gdy uzytkownik pyta o JDG, freelancera, osobe fizyczna prowadzaca dzialalnosc gospodarcza. Dla spolek uzyj krs_search_company. Wymaga co najmniej jednego z: name, nip, regon, surname.
Pobierz przecietne miesieczne wynagrodzenie brutto dla wojewodztw z GUS BDL.
Pobierz dane demograficzne (ludnosc) z GUS BDL. Domyslnie zwraca ludnosc wszystkich 16 wojewodztw na 31 XII danego roku. Podaj unit_name (np. "Mazowieckie") aby zawezic wyniki.
Output schemas not documented. Tools return dict but LLMs cannot infer field names, types, or structure for downstream chaining. E.g., krs_search_company returns company data but response structure is not specified.
Descriptions are in Polish only. LLMs trained primarily on English will struggle to understand tool purpose and when to invoke. Descriptions should be in English or bilingual.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Pobierz stopy bezrobocia rejestrowanego dla 16 wojewodztw z GUS BDL.
Szukaj zmiennej statystycznej w GUS BDL po fragmencie nazwy. Uzyj gdy potrzebujesz wskaznika ktorego nie ma w dedykowanych narzed ziach (np. "emisja CO2", "liczba lekarzy", "turystyka").
Pobierz pelne dane spolki z KRS na podstawie numeru KRS. Zwraca pelen odpis aktualny: dane rejestrowe, siedzibe, zarzad, kapital zakladowy, PKD, prokurentow, sprawozdania finansowe.
Szukaj podmiotu gospodarczego — preferowana metoda po NIP. Uzywa Bialej Listy VAT Ministerstwa Finansow — zwraca dane dowolnego podatnika (spolki, JDG, instytucji) po numerze NIP: nazwa, REGON, numer KRS, adres, zarzad, wspolnicy, rachunki bankowe. Publiczne API KRS nie obsluguje wyszukiwania po nazwie — dlatego najlepsza metoda identyfikacji podmiotu jest NIP.
Waliduj numer NIP (czysta walidacja — bez wywolan API). Sprawdza poprawnosc cyfry kontrolnej zgodnie z algorytmem MF.
Waliduj numer PESEL i wyciagnij dane pochodne (PII-sensitive). Sprawdza cyfre kontrolna PESEL oraz wyciaga date urodzenia i plec. UWAGA: dane pochodne sa danymi osobowymi — przetwarzaj zgodnie z RODO.
Waliduj numer REGON (czysta walidacja — bez wywolan API). Obsluguje REGON 9-cyfrowy (podstawowy) i 14-cyfrowy (lokalny). Sprawdza cyfre kontrolna zgodnie z algorytmem GUS.
Sprawdz status podatnika VAT w Bialej Liscie Ministerstwa Finansow. Zwraca aktualny status rejestracji VAT, zarejestrowane rachunki bankowe oraz hash odpowiedzi API do celow audytowych. Przydatne do weryfikacji kontrahenta przed platnoscia — sprawdz czy NIP jest aktywny i czy numer konta bankowego jest na liscie zatwierdzonych.
No error handling guidance. Tools return dict with 'error' key on failure but do not guide LLM on recovery (e.g., 'Invalid NIP format. Use validate_nip_number first'). Errors lack actionable next steps.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. All tools are read-only but this is not declared, limiting agent safety and optimization.
Parameter constraints not formalized. E.g., 'nip' described as '10 cyfr' (10 digits) but no JSON Schema pattern or enum. LLMs may pass invalid formats. validate_nip_number exists but is not referenced in krs_search_company description.