{"slug": "jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp", "title": "Jak programistycznie sprawdzić polską firmę (VAT, Biała Lista, KRS) — REST, Python, MCP", "summary": "A developer has released skanfirmy.pl, a free tool that aggregates Polish official business registries (VAT status, White List, KRS, REGON, VIES) into simple REST endpoints returning JSON, with no API key required. The service also exposes a Model Context Protocol (MCP) server for AI agents, enabling programmatic verification of Polish companies via HTTP calls from curl, Python, or AI assistants.", "body_md": "Weryfikacja kontrahenta to w Polsce nie fanaberia, tylko element należytej staranności — status VAT i zgodność rachunku z Białą Listą wprost wpływają na to, czy zaliczysz koszt i odliczysz VAT. Problem w tym, że oficjalne źródła (Ministerstwo Finansów, Ministerstwo Sprawiedliwości, GUS, Komisja Europejska) mają rozproszone, różniące się między sobą API. Poniżej pokazuję, jak sprowadzić to do kilku wywołań HTTP, które zwracają czysty JSON — z poziomu `curl`\n\n, Pythona i agenta AI mówiącego protokołem MCP.\n\nWszystkie przykłady korzystają z [skanfirmy.pl](https://skanfirmy.pl) — zestawu narzędzi do weryfikacji firm po NIP/KRS/REGON oraz unijnego VAT (VIES). Dane pochodzą wprost z oficjalnych rejestrów, endpointy są bez opłat i bez rejestracji (bez klucza API), a warstwa webowa działa client-side, bez trackingu.\n\nNajprostszy przypadek — sprawdzenie NIP-u. Endpoint jest publiczny, metoda `GET`\n\n, odpowiedź to JSON:\n\n```\ncurl https://skanfirmy.pl/nip/5260250995\n```\n\nW odpowiedzi dostaniesz m.in. status VAT (czynny/zwolniony/niezarejestrowany), dane podmiotu z Wykazu VAT oraz rachunki figurujące na Białej Liście. Dostępne ścieżki:\n\n`GET /nip/{nip}`\n\n— status VAT i dane z Białej Listy dla jednego NIP-u`GET /nips/{lista}`\n\n— kilka NIP-ów naraz (lista rozdzielona przecinkami)`GET /regon/{nip}`\n\n— dane z rejestru REGON (GUS)`GET /vies/{country}/{number}`\n\n— walidacja unijnego numeru VAT (np. `/vies/DE/811128135`\n\n)Ponieważ to zwykły GET zwracający JSON, wpina się bez ceremonii w dowolny pipeline — cron, funkcję serverless, hook w CI, cokolwiek co potrafi zrobić request HTTP.\n\nZ biblioteką `requests`\n\ncałość mieści się w kilku linijkach. Poniżej minimalna funkcja, która sprawdza status VAT i sygnalizuje wyjątkiem, gdy podmiot nie jest czynnym płatnikiem:\n\n``` php\nimport requests\n\ndef sprawdz_vat(nip: str) -> dict:\n    r = requests.get(f\"https://skanfirmy.pl/nip/{nip}\", timeout=10)\n    r.raise_for_status()\n    dane = r.json()\n    status = dane.get(\"vatStatus\") or dane.get(\"status\")\n    if status != \"Czynny\":\n        raise ValueError(f\"NIP {nip}: status VAT = {status!r}\")\n    return dane\n\nwynik = sprawdz_vat(\"5260250995\")\nprint(\"Rachunki na Białej Liście:\", wynik.get(\"accountNumbers\", []))\n```\n\nJedna uwaga na dobre praktyki: literały zwracane przez rejestry MF (`\"Czynny\"`\n\n, `\"Zwolniony\"`\n\n) traktuj jako wartości kanoniczne — porównuj się do oryginału, a ewentualne tłumaczenie zostaw wyłącznie na warstwę prezentacji. Dzięki temu logika nie rozjedzie się przy zmianie języka interfejsu.\n\nMasę NIP-ów do przetworzenia hurtowo? Do jednorazowego batcha z eksportem CSV/JSON jest webowe [/bulk](https://skanfirmy.pl/bulk), a programistycznie ten sam efekt osiągniesz przez `GET /nips/{lista}`\n\n.\n\nTu robi się ciekawie. Kluczowy wyróżnik skanfirmy.pl to pełna dostępność dla agentów: pod `https://skanfirmy.pl/mcp`\n\nstoi serwer [Model Context Protocol](https://skanfirmy.pl/mcp) z 9 narzędziami — również bez klucza API. Agent (np. asystent księgowy) może wywołać weryfikację NIP-u tak samo, jak człowiek klika w formularz.\n\nMCP mówi po JSON-RPC 2.0 przez `POST`\n\n. Wywołanie konkretnego narzędzia to metoda `tools/call`\n\n:\n\n```\ncurl -X POST https://skanfirmy.pl/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"id\": 1,\n    \"method\": \"tools/call\",\n    \"params\": {\n      \"name\": \"sprawdz_nip\",\n      \"arguments\": { \"nip\": \"5260250995\" }\n    }\n  }'\n```\n\nListę narzędzi z ich schematami wejścia zwróci `tools/list`\n\n(ta sama koperta, inna `method`\n\n). Dla agentów, które wolą samo REST, jest jeszcze `https://skanfirmy.pl/llms.txt`\n\n— mapa endpointów i sposobu użycia w formacie czytelnym dla modeli. Chcąc iść szerzej niż polskie rejestry, zajrzyj do serwisu siostrzanego [otwarteapi.pl](https://otwarteapi.pl) — katalogu publicznych API (polskich i światowych) pod kątem agentów AI.\n\nStatus VAT kontrahenta czy jego rachunek na Białej Liście potrafią zmienić się z dnia na dzień — a jednorazowy check tego nie wychwyci. Dlatego jest [/monitoring](https://skanfirmy.pl/monitoring): codzienne alerty o zmianie statusu VAT lub rachunku, z powiadomieniem push przez webhook podpisany HMAC. W praktyce dopinasz endpoint u siebie, weryfikujesz podpis nagłówka i reagujesz — bez odpytywania rejestrów w pętli.\n\nCały serwis jest dwujęzyczny. Angielskie odpowiedniki stron żyją pod prefiksem `/en/`\n\n(np. `https://skanfirmy.pl/en/`\n\n), a endpointy REST i MCP są językowo neutralne — działają identycznie niezależnie od tego, po której stronie interfejsu jesteś.\n\nPodsumowując: trzy warstwy, jedno źródło danych. `curl`\n\n/GET do szybkiego sprawdzenia, `requests`\n\ndo wpięcia w kod, MCP do agenta — wszystko zwraca JSON, bez rejestracji i bez klucza API. Reszta to już Twój pipeline.", "url": "https://wpnews.pro/news/jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp", "canonical_source": "https://dev.to/bartoszkuc/jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp-4nnd", "published_at": "2026-08-22 23:01:15+00:00", "updated_at": "2026-08-22 23:43:30.301326+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents"], "entities": ["skanfirmy.pl", "Ministerstwo Finansów", "Ministerstwo Sprawiedliwości", "GUS", "Komisja Europejska", "Model Context Protocol", "otwarteapi.pl"], "alternates": {"html": "https://wpnews.pro/news/jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp", "markdown": "https://wpnews.pro/news/jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp.md", "text": "https://wpnews.pro/news/jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp.txt", "jsonld": "https://wpnews.pro/news/jak-programistycznie-sprawdzic-polska-firme-vat-biala-lista-krs-rest-python-mcp.jsonld"}}