Server definition
- Hash
- sha256:8a6a3b6aa07bc7a30b3981378d12689f35dd625baca78d647ebd03314779ee89
- What it is
- What a remote MCP server returned when asked what it offers: 14 tools
The blob, as servednamed by its sha256
{
"instructions": "skanfirmy.pl: verify Polish companies by NIP/KRS and validate EU VAT numbers (VIES), straight from official government registers (Ministry of Finance, Ministry of Justice, Statistics Poland/GUS, EU VIES). Also includes szukaj_katalog_api, which searches otwarteAPI.pl, a catalog of other public Polish and EU APIs. The verification tools are free and need no auth. The monitoring tools (observe_nip, unobserve_nip, list_observations, changes_since, set_webhook) require a skanfirmy API key: pass it in the Authorization: Bearer <key> header or the api_key argument. You get a key after confirming your sign-up at skanfirmy.pl/monitoring. For natural persons running a business (entities without a KRS number) the verification tools limit personal data (GDPR): the address is reduced to the town and bank accounts to their count; check a specific account with sprawdz_rachunek. Since 27 September 2026 they also get no REGON number, registration date or PKD codes: what remains is the name, NIP, VAT status, town and the number of accounts; sprawdz_regon returns only the name, form, town and activity status. Monitoring tracks only the VAT status and masked accounts of natural persons (name is null). Some numbers are restricted from presentation (a data-protection procedure): the tools then return restricted: true with a fixed sentence and a link to the Ministry of Finance search, and no data — point the user there. A “restricted” answer covers a group of several hundred numbers. It does not mean that the entity is missing from the Register or that it has objected. Check it in the Ministry of Finance VAT payer register search. Rate limit: 60 requests per 10 seconds from one IP address.",
"tools": [
{
"description": "Return changes (VAT status, bank accounts, or registry data — name, address, KRS, REGON — from the White List) detected since a given date for the NIPs you monitor. The field property is one of: status_vat, account_added, account_removed, name, address, krs, regon. For natural persons (entities without a KRS number; natural_person: true) only status_vat, account_added and account_removed are returned, account numbers are masked (check digits + last 4, e.g. 61…2874) and name is null (GDPR); check a specific account with sprawdz_rachunek. A polling channel for agents. Requires a skanfirmy API key.",
"inputSchema": {
"properties": {
"api_key": {
"description": "skanfirmy API key (optional, if not in the header).",
"type": "string"
},
"since": {
"description": "ISO date/timestamp (e.g. 2026-08-01). Returns changes since that date. Defaults to the beginning.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "changes_since",
"outputSchema": null
},
{
"description": "Generate the individual tax micro-account (for PIT/CIT/VAT payments) from a NIP. The server does not accept PESEL (personal ID) — for a PESEL compute it locally: BBAN = \"101000712221\" + PESEL + \"0\", IBAN = \"PL\" + ISO 7064 mod-97 check digits + BBAN (or use skanfirmy.pl/mikrorachunek, which computes it in the browser).",
"inputSchema": {
"properties": {
"identyfikator": {
"description": "NIP (10 digits). PESEL is not accepted by the server.",
"type": "string"
}
},
"required": [
"identyfikator"
],
"type": "object"
},
"name": "generuj_mikrorachunek",
"outputSchema": null
},
{
"description": "Return the list of NIPs you monitor, with their current VAT status and last-checked date (name is null for natural persons running a business). Each entry keeps the raw Ministry of Finance literal in status_vat and, when a status is known, adds derived language-neutral fields vat_active (boolean) and status_vat_code (active/exempt/not_registered). Requires a skanfirmy API key.",
"inputSchema": {
"properties": {
"api_key": {
"description": "skanfirmy API key (optional, if not in the header).",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_observations",
"outputSchema": null
},
{
"description": "Calculate statutory or commercial (B2B) late-payment interest, broken down by NBP reference-rate periods.",
"inputSchema": {
"properties": {
"dataDo": {
"description": "Actual payment date, format YYYY-MM-DD.",
"type": "string"
},
"dataOd": {
"description": "Payment due date, format YYYY-MM-DD.",
"type": "string"
},
"kwota": {
"description": "Overdue amount in PLN.",
"type": "number"
},
"typ": {
"description": "kc = statutory late-payment interest (Civil Code art. 481, NBP reference rate + 5.5 pp); h10 = commercial B2B transactions, non-public debtor (NBP reference rate on 1 Jan / 1 Jul + 10 pp); h8 = commercial transactions, public healthcare debtor (NBP reference rate on 1 Jan / 1 Jul + 8 pp).",
"enum": [
"kc",
"h10",
"h8"
],
"type": "string"
}
},
"required": [
"kwota",
"dataOd",
"dataDo",
"typ"
],
"type": "object"
},
"name": "oblicz_odsetki",
"outputSchema": null
},
{
"description": "Add a NIP to monitoring. You get notified (via changes_since or email) when its VAT status, bank account, or registry data shown on the Ministry of Finance White List (name, address, KRS, REGON) changes. For natural persons running a business (entities without a KRS number) only the VAT status and masked bank accounts are monitored (GDPR): no name, address or REGON changes. Requires a skanfirmy API key (Authorization: Bearer, or the api_key argument). Free plan: up to 10 NIPs.",
"inputSchema": {
"properties": {
"api_key": {
"description": "skanfirmy API key (if not provided in the Authorization header).",
"type": "string"
},
"nip": {
"description": "10-digit NIP to monitor.",
"type": "string"
}
},
"required": [
"nip"
],
"type": "object"
},
"name": "observe_nip",
"outputSchema": null
},
{
"description": "Set (or clear) a push webhook URL for your monitoring, instead of or in addition to polling. When we detect a change for a monitored NIP, we send a POST signed with HMAC-SHA256 (X-Skanfirmy-Signature header). Returns the secret ONCE. Pass an empty url to disable. Requires a skanfirmy API key. Public https addresses only (port 443).",
"inputSchema": {
"properties": {
"api_key": {
"description": "skanfirmy API key (optional, if not in the header).",
"type": "string"
},
"url": {
"description": "Public https URL of the receiver (empty = disable the webhook).",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "set_webhook",
"outputSchema": null
},
{
"description": "Bulk-check up to 30 NIPs in one call to the Ministry of Finance VAT White List: VAT status, bank accounts, REGON, KRS number and address of each entity. For entities without a KRS number (natural persons) the address is reduced to the town and bank accounts to their count, and no REGON number or registration date is returned (GDPR) — check a specific account with sprawdz_rachunek. For verifying a portfolio of counterparties. Ministry limits: max 30 NIPs per call; the Ministry's daily query limit is shared by the whole service — when it is exhausted, the tool returns an error. Does not fetch full KRS data (use sprawdz_nip for individual entities).",
"inputSchema": {
"properties": {
"nipy": {
"description": "List of NIPs (1 to 30). Each 10-digit with a valid checksum. Invalid NIPs are returned separately in the invalidInput field.",
"items": {
"type": "string"
},
"maxItems": 30,
"minItems": 1,
"type": "array"
}
},
"required": [
"nipy"
],
"type": "object"
},
"name": "sprawdz_lista_nip",
"outputSchema": null
},
{
"description": "Check VAT status (VAT White List / Biała Lista) and KRS data for a Polish company by NIP. For entities without a KRS number (sole proprietors and civil partnerships, i.e. natural persons) personal data is limited (GDPR): the address is reduced to the town (the White List does not say whether it is a business or a home address), and bank accounts to their count — check a specific account with sprawdz_rachunek; no REGON number, registration date or PKD codes are returned for them (the ceidg field is always null). The privacy field lists what was hidden.",
"inputSchema": {
"properties": {
"nip": {
"description": "10-digit Polish NIP (tax ID).",
"type": "string"
}
},
"required": [
"nip"
],
"type": "object"
},
"name": "sprawdz_nip",
"outputSchema": null
},
{
"description": "Check whether a bank account number (NRB) appears in the VAT White List for a given NIP. Due diligence for payments above PLN 15,000.",
"inputSchema": {
"properties": {
"nip": {
"description": "10-digit NIP of the counterparty.",
"type": "string"
},
"numerRachunku": {
"description": "26-digit bank account number (NRB), without the PL prefix.",
"type": "string"
}
},
"required": [
"nip",
"numerRachunku"
],
"type": "object"
},
"name": "sprawdz_rachunek",
"outputSchema": null
},
{
"description": "Look up entity data in the REGON register (Statistics Poland / GUS BIR) by NIP: REGON number, official name, legal form (legal or natural person), address (voivodeship, county, municipality). Covers ALL entities, including sole proprietors that are not in the KRS. For natural persons (GUS type F / LF) and civil partnerships (s.c.) only the NIP, name, entity type code (typ), form (forma: 'osoba fizyczna' / 'jednostka lokalna osoby fizycznej' / 'spółka cywilna'), town and activity status (status: active / ended) are returned — no REGON number, address, administrative units or dates (GDPR); the full entry is in the GUS REGON search (privacy.officialSource).",
"inputSchema": {
"properties": {
"nip": {
"description": "10-digit Polish NIP (tax ID).",
"type": "string"
}
},
"required": [
"nip"
],
"type": "object"
},
"name": "sprawdz_regon",
"outputSchema": null
},
{
"description": "Validate a counterparty's EU VAT number in the VIES system (European Commission). For Polish (PL) numbers the address is reduced to the town, because the number may belong to a natural person (GDPR).",
"inputSchema": {
"properties": {
"countryCode": {
"description": "Two-letter EU country code (e.g. DE, IE, FR).",
"enum": [
"AT",
"BE",
"BG",
"CY",
"CZ",
"DE",
"DK",
"EE",
"EL",
"ES",
"FI",
"FR",
"HR",
"HU",
"IE",
"IT",
"LT",
"LU",
"LV",
"MT",
"NL",
"PL",
"PT",
"RO",
"SE",
"SI",
"SK",
"XI"
],
"type": "string"
},
"vatNumber": {
"description": "VAT number without the country prefix.",
"type": "string"
}
},
"required": [
"countryCode",
"vatNumber"
],
"type": "object"
},
"name": "sprawdz_vies",
"outputSchema": null
},
{
"description": "Search otwarteAPI.pl, a catalog of public Polish and EU APIs (VAT, KRS, GUS, NBP, ECB, Eurostat and more). Returns matching entries with a link to each API's official docs. An empty query returns the whole catalog (optionally narrowed by scope or topic).",
"inputSchema": {
"properties": {
"temat": {
"description": "Narrow to a specific catalog tag, e.g. \"firmy\" or \"dane-statystyczne\". Optional.",
"type": "string"
},
"zapytanie": {
"description": "Natural-language query, e.g. \"euro exchange rate\" or \"weather data\". Optional.",
"type": "string"
},
"zasieg": {
"description": "Narrow to Polish (PL) or EU APIs. Optional.",
"enum": [
"PL",
"EU"
],
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "szukaj_katalog_api",
"outputSchema": null
},
{
"description": "Search PKD 2025 business activity codes by activity name or code number.",
"inputSchema": {
"properties": {
"zapytanie": {
"description": "Activity name (e.g. \"software\") or PKD code (e.g. \"62.01\").",
"type": "string"
}
},
"required": [
"zapytanie"
],
"type": "object"
},
"name": "szukaj_pkd",
"outputSchema": null
},
{
"description": "Stop watching a NIP — the watch is deleted right away. Requires a skanfirmy API key.",
"inputSchema": {
"properties": {
"api_key": {
"description": "skanfirmy API key (optional, if not in the header).",
"type": "string"
},
"nip": {
"description": "10-digit NIP to stop watching.",
"type": "string"
}
},
"required": [
"nip"
],
"type": "object"
},
"name": "unobserve_nip",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8a6a3b6aa07bc7a30b3981378d12689f35dd625baca78d647ebd03314779ee89 | sha256sum