If you use Claude Code or the Claude apps and you ever deal with Polish companies, here is a small thing that saves a surprising amount of time: a Skill that lets Claude verify a company by its tax ID, check whether it is a registered VAT payer, look up its bank account on the government white list, pull its court-register data, and validate an EU VAT number. No API key, no signup, nothing to run beyond ordinary HTTP.
I published it as an open Agent Skill. This post is how it works and how to install it.
Full disclosure up front: the API behind it, skanfirmy.pl, is my own project. It is free and keyless, and I built the Skill so agents can reach it as easily as a person reaches the website.
What an Agent Skill actually is
A Skill is just a folder with a SKILL.md file: a bit of YAML frontmatter (a name and a description) and a markdown body with instructions. Claude reads the description, and when a task matches, it loads the body and follows it. There is no code to execute and no dependency to install. It is closer to a well written runbook than to a plugin.
That format is portable. The same SKILL.md works in Claude Code, in the Claude apps, and through the Agent SDK.
Install it
Drop the folder into a place Claude reads skills from:
git clone https://github.com/bartosz-kuc/skanfirmy-mcp
# personal skills, all projects
mkdir -p ~/.claude/skills
cp -R skanfirmy-mcp/skill ~/.claude/skills/verify-polish-company
Restart Claude Code and you are done. The Skill loads on its own when a request matches, so you do not have to call it by name.
Use it
Now you can just ask in plain language:
is NIP 5260250995 an active VAT payer, and what is on its white list?
Claude picks up the Skill and runs the right check. Under the hood it is a single GET:
curl "https://skanfirmy.pl/nip/5260250995?format=json"
That returns the VAT status (active, exempt, or not registered), the company details from the VAT register, and the bank accounts that sit on the official white list ("Biała Lista"). Those two facts, VAT status and account match, are the ones that decide whether a Polish B2B payment is safe to deduct, so they are worth getting right.
The Skill knows about the other registers too:
-
GET /regon/{nip}returns REGON registry data from the statistics office, and it covers sole traders, who are not in the court register. -
GET /nip/{nip}also folds in the KRS court record (legal form, capital, address, representation). -
GET /vies/{country}/{number}validates an EU VAT number through the European Commission's VIES service.
Everything is a plain GET that answers JSON when you add ?format=json. No key, no account, no daily quota.
Why a Skill and not just docs
You could paste the endpoint list into a prompt every time. The Skill does three things that a one off paste does not:
- It teaches Claude when to reach for these checks, so it triggers on the real intent ("verify this contractor") instead of waiting to be told the URL.
- It picks the right endpoint. Sole trader? That is
/regon, because the court register does not cover them. Foreign VAT number? That is VIES. It encodes those small decisions so you do not have to. - It names the government literals to key off, like the VAT status value, instead of a translated label that would break branching.
There is also an MCP server at https://skanfirmy.pl/mcp for agents that speak the Model Context Protocol, with the same checks as tools and the same no-key rule. The Skill points at it, but you do not need it for the REST path.
The honest part
The data comes straight from official sources: the Ministry of Finance for the VAT white list, the Ministry of Justice for the court register, the statistics office (GUS) for REGON, and the European Commission for VIES. skanfirmy.pl is an independent tool, not an official government API, and it just exposes those registers in one place with one request instead of four.
The Skill is MIT licensed and lives here: github.com/bartosz-kuc/skanfirmy-mcp. If you wire company checks into agent workflows, I would genuinely like to hear what is missing.
Top comments (0)