VAT White List (Poland)

io.github.SmartMobileHousePublished by GitHub account SmartMobileHousev0.1.1Updated Nov 7, 2026

Look up Polish VAT taxpayers by NIP, REGON or bank account and verify account associations.

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

Local MCP server that lets an assistant look up Polish VAT White List taxpayers by NIP, REGON or bank account and verify account associations.

What you can do
  • Look up a taxpayer by NIP or by 9- or 14-digit REGON on a given date
  • Find taxpayers linked to a Polish bank account (NRB or PL IBAN)
  • Look up 1–30 identifiers of one type in a single bulk request, with per-identifier results and unmatched entries
  • Check whether a bank account is assigned to an active taxpayer by NIP or REGON, returning the API's TAK/NIE answer
  • Validate NIP, REGON and account checksums locally and return register, environment and retrieval-time metadata
When to use it
Useful when an assistant needs to confirm Polish business counterparties, such as checking a contractor's VAT status or verifying that a bank account belongs to an active taxpayer before a payment. It suits compliance, invoicing and onboarding checks that need dated, register-sourced answers.
Requirements
Runs locally over stdio as a PyPI package, started with uvx; Python 3.10 or newer. No account or API key is needed. Set VAT_ENV to test (default sandbox) or prod for live data, and optionally VAT_TIMEOUT in seconds. Network access to the Ministry of Finance API is required.
Before you install
With VAT_ENV=prod the server queries live taxpayer data from the official register, so lookups leave your IP and identifiers with that third party. Quotas apply per IP (100 searches and 5,000 checks per day); exhausting them can block access until midnight. Sandbox data is synthetic, and API failures raise errors rather than meaning no match.

Installation

In SourceWeft

  1. Open VAT White List (Poland) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

vat-whitelist-mcp

A Model Context Protocol server that gives AI assistants clean, typed access to the Polish VAT White List (Wykaz podatników VAT). Look up taxpayers by NIP, REGON, or bank account and verify whether an account is associated with an active taxpayer on a specified date.

The official VAT White List API returns taxpayer details, VAT status, bank accounts, and confirmation identifiers. vat-whitelist-mcp exposes its REST search and check methods as five simple tools.

Built and maintained by Smart Mobile House — secure AI implementation for enterprise.

Background and design notes: the vat-whitelist-mcp write-up.

Tools

ToolDescription
search_by_nip(nip, date)Look up a taxpayer by 10-digit NIP (tax id).
search_by_regon(regon, date)Look up a taxpayer by 9- or 14-digit REGON.
search_by_bank_account(bank_account, date)Find taxpayers associated with an account.
search_bulk(identifiers, id_type, date)Look up 1–30 identifiers of one type in a single API request.
check_bank_account(identifier, id_type, bank_account, date)Check an account's association with an active taxpayer by NIP or REGON.

Every tool requires an explicit YYYY-MM-DD date. NIP, REGON, and Polish bank account checksums are validated locally. Bank accounts accept a 26-digit NRB or its PL IBAN form, with common grouping separators.

Search responses contain count, results, date, and a source block naming the register, environment, and UTC retrieved_at time. The API's requestId and requestDateTime are retained, along with the original taxpayer fields.

Bulk id_type is nip, regon, or bank_account; check id_type is nip or regon. Bulk results contain one entry per identifier, with either subjects or an upstream error; count counts entries. requested contains normalized inputs, and unmatched lists successful entries with no subjects. Failed entries are never treated as missing taxpayers. Checks preserve accountAssigned as TAK or NIE; API failures raise errors rather than returning NIE.

Quick start

No install needed — run it straight from the repo with uv:

bash
uvx --from git+https://github.com/SmartMobileHouse/vat-whitelist-mcp vat-whitelist-mcp

By default it uses the sandbox, with no API key or account required. Set VAT_ENV=prod for live data. For example, ask your assistant to look up a NIP using today's explicit date.

It is also published on PyPI, so uvx vat-whitelist-mcp works too.

Use it in Claude Desktop / Claude Code

Add to your MCP config (e.g. claude_desktop_config.json or .mcp.json):

json
{  "mcpServers": {    "vat-whitelist": {      "command": "uvx",      "args": ["--from", "git+https://github.com/SmartMobileHouse/vat-whitelist-mcp", "vat-whitelist-mcp"],      "env": {        "VAT_ENV": "prod"      }    }  }}

During development, point it at a local checkout instead:

json
{  "mcpServers": {    "vat-whitelist": {      "command": "uvx",      "args": ["--from", "/absolute/path/to/vat-whitelist-mcp", "vat-whitelist-mcp"],      "env": { "VAT_ENV": "test" }    }  }}

Configuration

VariableDefaultDescription
VAT_ENVtesttest for the sandbox or prod for live data.
VAT_TIMEOUT30Positive finite HTTP timeout in seconds.

Set these in the shell or MCP configuration. .env.example is a reference; .env files are not loaded automatically.

The API base URLs are https://wykazpodatnikowvat-test.mf.gov.pl/api/ for the sandbox and https://wykazpodatnikowvat.mf.gov.pl/api/ for production.

Development

bash
git clone https://github.com/SmartMobileHouse/vat-whitelist-mcpcd vat-whitelist-mcpuv sync --locked        # create the venv and install dependenciesuv run pytest           # offline validation, mocked HTTP, MCP discovery and stdio tests                        # (network tests are skipped by default)uv run vat-whitelist-mcp # run the server over stdiouv build                # build source and wheel distributionsuvx twine check dist/*  # validate package metadata
# Live tests against the official sandbox (opt-in; no production requests):VAT_RUN_NETWORK=1 uv run pytest -m network

The client is a small REST layer over httpx (see src/vat_whitelist_mcp/client.py), with no authentication session or automatic retries. Python 3.10 or newer is required.

Releases

GitHub Actions runs the offline tests, validates versions, builds the wheel and source distribution, and checks metadata on pull requests and pushes to main. Pushing a version tag such as v0.1.0 publishes the tested artifacts to PyPI using Trusted Publishing, then publishes the matching MCP Registry metadata. The workflow can also be dispatched manually from main.

Before the first release, add a pending Trusted Publisher in the maintainer's PyPI account with these values:

FieldValue
PyPI project namevat-whitelist-mcp
GitHub ownerSmartMobileHouse
Repositoryvat-whitelist-mcp
Workflow filenamepublish.yml
Environmentpypi

The GitHub pypi environment must exist. No PyPI API token is needed. See PyPI's setup guide. Keep versions in pyproject.toml, src/vat_whitelist_mcp/__init__.py, and server.json aligned before tagging. A failed MCP Registry job can be retried independently after PyPI succeeds.

Notes & limitations

  • Sandbox data is synthetic. Use VAT_ENV=prod for live taxpayer information.
  • Dates must be no later than today in Poland and fall within the current year or the five preceding calendar years, no earlier than 1 September 2019. The API may impose additional historical-data restrictions.
  • The published limits are 100 search requests per day, up to 30 identifiers per request, and 5,000 check verifications per day. Quotas apply to the requesting IP; exhausting a quota can block access until midnight. See the official API documentation for current terms and limits.
  • WL2 status queries and flat-file verification are outside this tool set.
  • This project is independent and is not affiliated with or endorsed by the Ministry of Finance or the National Revenue Administration.

License

MIT © Smart Mobile House

Source: README.md at commit 5d4d5b9

Tools

5

search_by_nip

Look up taxpayer details by NIP on an explicit YYYY-MM-DD date.

Parametersniprequireddaterequired

search_by_regon

Look up taxpayer details by 9- or 14-digit REGON on YYYY-MM-DD.

Parametersdaterequiredregonrequired

search_by_bank_account

Find taxpayers for a Polish bank account on YYYY-MM-DD; accepts NRB or PL IBAN.

Parametersdaterequiredbank_accountrequired

search_bulk

Look up 1–30 identifiers in one request on YYYY-MM-DD. id_type: nip, regon, or bank_account. Results retain each identifier's subjects or API error. Only successful empty entries appear in unmatched. count is the number of returned entries, not the number of taxpayers.

Parametersdaterequiredid_typerequiredidentifiersrequired

check_bank_account

Check account association with an active taxpayer on YYYY-MM-DD. id_type: nip or regon. accountAssigned is the API's TAK/NIE answer; API failures raise errors and must never be interpreted as a negative match.

Parametersdaterequiredid_typerequiredidentifierrequiredbank_accountrequired

Version history

2
  1. v0.1.1LatestNov 4, 2026
  2. v0.1.0Oct 29, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts