pl-firmy: Polish company check

com.almmity.apiPublished by api.almmity.comOfficial publisherv0.3.1Updated Oct 24, 2026

Verify Polish companies: VAT white list (MF), KRS, VIES, payment audit PDF, monitoring.

VerifiedStreamable HTTPWeb executableFinanceSecurity & MonitoringBusiness & Commerce

Overview

AI-generated overview

Hosted MCP server that lets an assistant verify Polish contractors against the MF VAT white list, KRS and EU VIES, with payment audit PDFs and daily monitoring.

What you can do
  • Look up and verify companies: MF VAT white list with bank accounts, KRS extracts, VIES VAT validation, and a combined company profile by NIP, REGON or KRS
  • Run a one-shot contractor due-diligence risk summary and produce a PDF payment audit report documenting the check
  • Monitor contractors: add, list and remove daily watches with alerts on status or bank-account changes
  • Work with KSeF FA(3) invoices: validate XML, generate sales and correction invoices, and summarize an invoice
  • Draft payment paperwork: transfer titles with split-payment mode, late-payment interest, and a pre-court payment demand
  • Handle stored cost invoices on a linked account: list them, show unpaid ones due soon, and…
When to use it
Useful for accounting firms, finance teams and payment automation that must confirm a Polish contractor's VAT status and bank account before paying, especially above the 15 000 PLN threshold, or that want ongoing monitoring of contractors and help with KSeF invoices.
Requirements
Remote Streamable HTTP endpoint; no local install. Tool calls need an Authorization bearer API key (a free tier of 100 calls/month exists, paid plans above it). Some tools work without a key within a daily per-IP limit. Invoice and transfer tools on a linked account need OAuth scopes such as invoices.read and transfers.prepare. Network access to the service and public registries.
Before you install
Requires an API key sent as a bearer token; paid plans are billed monthly. Monitoring stores NIPs, watched bank accounts and labels in the server's database. Some tools create temporary PDF files on the provider's server reachable by an unguessable link for one hour. Results are informational and the service is not affiliated with government registries. Transfer files are prepared but not sent to a bank.

Installation

In SourceWeft

  1. Open pl-firmy: Polish company check in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.almmity.api%2Fpl-firmy/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "pl-firmy-polish-company-check": {
      "type": "http",
      "url": "https://api.almmity.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

pl-firmy — MCP server for checking Polish companies

Hosted remote MCP server that gives AI assistants verified data on Polish contractors straight from official registries: MF Biała lista podatników VAT, KRS, and EU VIES — plus a payment audit PDF and daily contractor monitoring.

  • Endpoint (Streamable HTTP): https://api.almmity.com/mcp
  • Auth: Authorization: Bearer <API key> (or X-API-Key). Free key (100 calls/month): https://api.almmity.com/#klucz
  • Tool discovery (initialize, tools/list) works without a key; tool calls need one.
  • Plans: Free 0 zł · Pro 59 zł/mies. · Biuro 199 zł/mies. — https://api.almmity.com/#cennik

Tools

ToolWhat it does
check_vat_whitelistMF VAT white list (Biała lista): VAT status, registered bank accounts, optional check that a given account belongs to the NIP
get_krs_extractCurrent KRS extract: legal form, board/representation, capital, address
find_companyFind a company by NIP, REGON or KRS number
vies_checkEU VIES VAT number validation
contractor_due_diligenceOne-shot check of all sources with a risk summary (OK / WARN / STOP)
payment_audit_reportPDF report proving the payment check (art. 117ba Ordynacji podatkowej / split payment due diligence)
add_watch / list_watches / remove_watchDaily monitoring of contractors with e-mail/webhook alerts on status or bank-account changes

Connect

Claude Desktop / any stdio client (via mcp-remote) — see examples/claude_desktop_config.json:

json
{"mcpServers":{"pl-firmy":{"command":"npx","args":["-y","mcp-remote","https://api.almmity.com/mcp","--header","Authorization: Bearer ${PLF_API_KEY}"],"env":{"PLF_API_KEY":"plf_..."}}}}

Cursor (~/.cursor/mcp.json), VS Code, Claude Code: see examples/.

bash
claude mcp add --transport http pl-firmy https://api.almmity.com/mcp --header "Authorization: Bearer plf_..."

Example prompts

  • "Sprawdź NIP 7740001454 przed przelewem na konto PL.. i zrób raport PDF."
  • "Is Polish VAT number PL7740001454 valid in VIES, and who represents the company in KRS?"
  • "Monitoruj tych 20 kontrahentów i powiadom mnie, gdy któryś zniknie z białej listy."

Data sources & limits

Data is fetched live from public government APIs (wl-api.mf.gov.pl, api-krs.ms.gov.pl, ec.europa.eu VIES) and cached briefly. The service is not affiliated with the Ministry of Finance or the Ministry of Justice. Results are informational; the PDF report documents the check at a given time.

Privacy & terms

Regulamin · Polityka prywatności · [email protected] Operator: MMIT Miłosz Mazurkiewicz, NIP 8883151717.


pl-firmy — serwer MCP do weryfikacji polskich firm (PL)

Zdalny serwer MCP, który daje asystentom AI (Claude, ChatGPT, Cursor, n8n) sprawdzone dane o kontrahentach prosto z rejestrów: Biała lista VAT (MF), KRS, VIES. Do tego raport PDF z weryfikacji przed płatnością i codzienny monitoring kontrahentów z alertem e-mail/webhook.

  • Adres: https://api.almmity.com/mcp (Streamable HTTP)
  • Klucz API: nagłówek Authorization: Bearer <klucz> — darmowy klucz (100 zapytań/mies.): https://api.almmity.com/#klucz
  • Cennik: Free 0 zł · Pro 59 zł/mies. (10 000 zapytań, 500 monitorowanych) · Biuro 199 zł/mies. (50 000 zapytań, 2 000 monitorowanych, eksport CSV)

Dla kogo: biura rachunkowe, działy finansowe, automatyzacje płatności — weryfikacja rachunku na białej liście przed przelewem powyżej 15 000 zł (art. 117ba Ordynacji podatkowej, art. 15d ustawy o CIT / 22p PIT).

License

Documentation and examples in this repository: MIT. The hosted service itself is proprietary.

Source: README.md at commit 578adad

Tools

20

add_watch

Monitor a contractor (daily)

Once a day, check one Polish contractor (one NIP) in public registries. The check reads VAT status and white-list bank accounts from the Ministry of Finance, and reads KRS for liquidation, bankruptcy or restructuring. It stores the NIP, any bank accounts you choose to watch, an optional label, and a snapshot of that check. Change alerts go only to the e-mail of the signed-in account owner (the OAuth-linked KSeF Płatności account, or the owner of the almmity API key). It never e-mails the contractor and it never contacts anyone else. It does not accept a webhook address or another e-mail address. If this account has no e-mail on file, the watch is still stored and alerts are visible with list_watches and in the panel. Adding the same NIP again updates that watch. Stop monitoring with remove_watch. Requires sign-in (OAuth) or an almmity API key. Does not accept a KSeF token or a password.

Parametersniprequiredlabelaccounts

list_watches

List monitored contractors

List contractors monitored for your account, with the last stored status and recent change events. Reads only this server's database. Requires sign-in (OAuth) or an almmity API key.

Takes no parameters.

remove_watch

Stop monitoring a contractor

Remove one contractor, identified by NIP, from monitoring for your account. Deletes the watch and stops future alerts. Requires sign-in (OAuth) or an almmity API key.

Parametersniprequired

payment_audit_report

Payment due-diligence PDF

Before paying a Polish contractor, verify the NIP and bank account on the MF VAT white list for the payment date, check KRS and VIES, and store a PDF proof of due diligence (MF request IDs, timestamps, findings, SHA-256). Flags the 15 000 PLN rule (art. 117ba of the Tax Ordinance, split payment). Requires an almmity API key. Does not send a payment.

Parametersniprequireddateamountaccountrequiredinvoicecurrency

check_vat_whitelist

Polish VAT white list (Biała lista)

Query the Ministry of Finance VAT white list (wl-api.mf.gov.pl). Returns the full taxpayer card: name, NIP, VAT status, REGON, KRS, address, every account (groups of 4), registration/denial/removal/restoration dates with legal basis, representatives, authorized clerks, partners, virtual accounts, and the MF requestId (legal proof of the answer). decision is czynny, zwolniony, niezarejestrowany or not found. Pass nip, or nips (up to 30, one search/nips call) for a batch with progress. Optionally bank_account to verify that account against the NIP: result TAK or NIE plus a separate requestId (the 15 000 PLN proof). When both nip and bank_account are set, the top-level requestId is the account-check id and detail.requestId is the taxpayer-search id. Or pass regon, or bank_account alone to find the owner. Reads a public registry and does not change it. Callable without an API key, within the daily per-IP limit. Errors and the daily MF limit come back in Polish.

Parametersnipdatenipsregonbank_account

get_krs_extract

KRS current extract

Current KRS (National Court Register) extract: name, legal form, address, share capital, board and representation, proxies, PKD codes, liquidation and bankruptcy flags. Reads a public registry and does not change it. Callable without an API key, within the daily per-IP limit.

Parameterskrsrequired

find_company

Find Polish company (normalized profile)

Combine the MF VAT white list and KRS into one normalized company profile. Provide one of nip, regon or krs. Reads public registries and does not change them. Callable without an API key, within the daily per-IP limit.

Parameterskrsnipregon

vies_check

EU VIES VAT check

Validate an EU VAT number via the European Commission VIES REST API, for example PL7740001454 or DE811569869. Reads a public registry and does not change it. Callable without an API key, within the daily per-IP limit.

Parameterseu_vatrequired

contractor_due_diligence

Contractor due diligence (risk summary)

Concise risk summary for a Polish contractor by NIP: VAT status, whitelisted accounts (optionally verify one bank account), and KRS liquidation, bankruptcy or restructuring flags. Reads public registries and does not change them. Callable without an API key, within the daily per-IP limit.

Parametersniprequiredbank_account

validate_ksef_xml

Validate FA(3) XML

Validate a KSeF FA(3) invoice XML against the official Ministry of Finance schema (when xmllint and the vendored XSD are available) and against business rules: NIP checksum, totals, bank account checksum, required JST/GV, correction references. Returns Polish error messages. Does not send the invoice to KSeF. Callable without an API key.

Parametersxmlrequired

generate_fa3_xml

Generate FA(3) invoice XML

Build a sales invoice XML in the FA(3) schema (kodSystemowy FA (3), variant 3) from seller, buyer and line items. Header VAT is computed from the summed net base of each rate. Does not send the invoice to KSeF and does not store it. Callable without an API key.

ParametersgvjstibannotepaidbuyerrequiredlinesrequiredplacenumberrequiredsellerrequireddueDatecurrency+5 more

generate_correction_xml

Generate FA(3) correction XML

Build an FA(3) correction invoice (RodzajFaktury KOR). Header amounts are the difference versus the original. Pass beforeLines to emit state-before (StanPrzed) and state-after rows; otherwise lines are the delta. Does not send the invoice to KSeF. Callable without an API key.

ParametersgvjstibannotepaidbuyerrequiredlinesrequiredplacenumberrequiredreasonrequiredsellerrequireddueDate+9 more

summarize_ksef_invoice

Summarize an FA(3) invoice

Parse an FA(3) XML into a short Polish summary: parties, dates, net, VAT, gross, split payment, due date and bank account. Returns a link to the XML-to-PDF viewer. It creates a temporary PDF file on api.almmity.com, reachable by an unguessable link for one hour, then deleted. Nothing is sent to KSeF or to anyone. Callable without an API key.

Parametersxmlrequired

build_transfer_title

KSeF transfer title

Build a Polish bank transfer title that carries one KSeF invoice number or a collective identifier (art. 108g VAT). mode=mpp builds the split-payment message /VAT/IDC/INV/TXT and checks the supplier NIP checksum. Does not send a payment. Callable without an API key.

ParametersmodevatAmountdescriptiongrossAmountksefNumberssupplierNipcollectiveIdinvoiceNumber

calculate_late_interest

Late-payment interest

Calculate Polish late-payment interest with the same rates and day count as ksef.almmity.com: commercial (NBP reference + 10 pp), medical public debtor (+ 8 pp) or statutory (reference + 5.5 pp), plus the 40/70/100 EUR compensation converted at the NBP euro rate. Returns the segments. It creates a temporary PDF file on api.almmity.com, reachable by an unguessable link for one hour, then deleted. Does not file anything. Callable without an API key. The NBP rate lookup reads a public API and does not change it.

ParametersasOfibankindplacedebtorcreditorinvoicesrequiredcompensationpayWithinDaysdocumentNumber

draft_payment_demand

Draft a payment demand

Draft a Polish pre-court payment demand (wezwanie do zapłaty) from the same interest calculation as calculate_late_interest, including art. 187 of the Code of Civil Procedure. Returns the text. It creates a temporary PDF file on api.almmity.com, reachable by an unguessable link for one hour, then deleted. Does not send the letter. Callable without an API key.

ParametersasOfibankindplacedebtorcreditorinvoicesrequiredcompensationpayWithinDaysdocumentNumber

nip_checksum

Polish NIP checksum

Check the checksum of a Polish NIP (weights 6,5,7,2,3,4,5,6,7). Local arithmetic only. Callable without an API key. Does not look the NIP up in any registry.

Parametersniprequired

list_cost_invoices

List cost invoices from KSeF Płatności

List cost invoices already stored on the linked KSeF Płatności account: number, seller, amounts, due date, payment status and white-list check. Requires OAuth scope invoices.read. Never ask the user for a KSeF token or a password. Does not download new invoices from KSeF.

Parameterslimit

unpaid_due_soon

Unpaid invoices due soon

List unpaid cost invoices on the linked KSeF Płatności account that are overdue or due within withinDays (default 7, max 90). Requires OAuth scope invoices.read. Never ask for a KSeF token or a password.

ParameterswithinDays

export_transfer_batch

Prepare a transfer file

Prepare an Elixir-0 transfer file for selected cost invoices on the linked KSeF Płatności account. Each account is re-checked on the MF white list for today; unsafe lines are left out of the file. Requires OAuth scope transfers.prepare. The file is not sent to a bank. Never ask for a KSeF token or a password.

ParametersinvoiceIdsrequired

Version history

1
  1. v0.3.1LatestOct 12, 2026

Score

100% 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 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts