Polish companies and people: KRS, CEIDG, financials, boards, VAT, sanctions. Free, no API key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Zwraca tryb, w jakim działasz (darmowy albo Pro), i czy jesteś zalogowany; w trybie darmowym także krótką instrukcję, jak korzystać z serwera. Tryb darmowy czyta tylko to, co serwis już zna (sekcja spoza pamięci wraca jako "missing" z AUTH_REQUIRED); "id" to KRS, NIP, REGON, adres firmy.ai albo "p-…" osoby; zacznij od search_companies, gdy nie masz identyfikatora. Użyj na początku rozmowy, żeby wiedzieć, czy sekcje spoza pamięci serwisu da się dociągnąć. Koszt: 0 operacji. Przykład: {}.
This tool takes no arguments.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http mcp https://firmy.ai/mcp
Zwraca tryb, w jakim działasz (darmowy albo Pro), i czy jesteś zalogowany; w trybie darmowym także krótką instrukcję, jak korzystać z serwera. Tryb darmowy czyta tylko to, co serwis już zna (sekcja spoza pamięci wraca jako "missing" z AUTH_REQUIRED); "id" to KRS, NIP, REGON, adres firmy.ai albo "p-…" osoby; zacznij od search_companies, gdy nie masz identyfikatora. Użyj na początku rozmowy, żeby wiedzieć, czy sekcje spoza pamięci serwisu da się dociągnąć. Koszt: 0 operacji. Przykład: {}.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Tryb darmowy czyta tylko to, co serwis już zna (sekcja spoza pamięci wraca jako "missing" z AUTH_REQUIRED); "id" to KRS, NIP, REGON, adres firmy.ai albo "p-…" osoby; zacznij od search_companies, gdy nie masz identyfikatora. Zwraca profil firmy i sekcje z "include" (bez "include": profile, people, ownership, ai_scores, description) w jednym wywołaniu oraz mapę "available", która mówi, co jeszcze można dopytać (finanse, dokumenty, VAT, sankcje, przetargi i inne). Sekcje do wyboru: profile, people, ownership, subsidiaries, group_structure, sole_proprietor, financials, documents, beneficial_owners, vat, bankruptcy, sanctions, knf_warnings, tenders, public_aid, domain, ai_scores, description, job_offers, foundation_spending, reviews, similar. Użyj, gdy masz KRS, NIP, REGON albo adres strony firmy; gdy masz tylko nazwę, najpierw search_companies. Koszt w trybie Pro (operacje za sekcję, która chybiła w pamięci serwisu): profile 3, subsidiaries 1, sole_proprietor 1, financials 20, documents 1, beneficial_owners 5, vat 1, bankruptcy 4, public_aid 1, domain 1, description 1, job_offers 1, foundation_spending 20; w trybie darmowym 0, a sekcja spoza pamięci wraca jako "missing" z AUTH_REQUIRED. Przykład: {"id": "0000006865", "include": ["financials", "vat", "sanctions"]}.
| Argument | Type | Description |
|---|---|---|
| id* | string | KRS (10 cyfr), NIP (także z myślnikami), REGON (9 albo 14 cyfr) albo adres strony firmy na firmy.ai (/KRS/…, /NIP/…). Serwer sam rozpoznaje typ. |
| fresh | boolean | Pobierz ponownie mimo pamięci serwisu. W trybie darmowym zawsze AUTH_REQUIRED. |
| id_type | string | Wymusza typ identyfikatora, gdy wiesz lepiej: krs, nip, regon albo person. Zwykle zbędne: serwer rozpoznaje typ sam. |
| include | array | Które sekcje zwrócić: profile, people, ownership, subsidiaries, group_structure, sole_proprietor, financials, documents, beneficial_owners, vat, bankruptcy, sanctions, knf_warnings, tenders, public_aid, domain, ai_scores, description, job_offers, foundation_spending, reviews, similar. Sekcja profile jest zawsze. Bez tego pola: profile, people, ownership, ai_scores, description. |
| estimate | boolean | Nic nie pobieraj, pokaż tylko, które sekcje są w pamięci i ile by kosztowały w trybie Pro. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "KRS (10 cyfr), NIP (także z myślnikami), REGON (9 albo 14 cyfr) albo adres strony firmy na firmy.ai (/KRS/…, /NIP/…). Serwer sam rozpoznaje typ."
},
"fresh": {
"type": "boolean",
"description": "Pobierz ponownie mimo pamięci serwisu. W trybie darmowym zawsze AUTH_REQUIRED."
},
"id_type": {
"enum": [
"krs",
"nip",
"regon",
"person"
],
"type": "string",
"description": "Wymusza typ identyfikatora, gdy wiesz lepiej: krs, nip, regon albo person. Zwykle zbędne: serwer rozpoznaje typ sam."
},
"include": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 30,
"description": "Które sekcje zwrócić: profile, people, ownership, subsidiaries, group_structure, sole_proprietor, financials, documents, beneficial_owners, vat, bankruptcy, sanctions, knf_warnings, tenders, public_aid, domain, ai_scores, description, job_offers, foundation_spending, reviews, similar. Sekcja profile jest zawsze. Bez tego pola: profile, people, ownership, ai_scores, description."
},
"estimate": {
"type": "boolean",
"description": "Nic nie pobieraj, pokaż tylko, które sekcje są w pamięci i ile by kosztowały w trybie Pro."
}
}
}Zwraca profil osoby z KRS (funkcje w firmach, bez daty urodzenia) i sekcje z "include" (bez "include": profile, shareholdings, co_managers, sanctions, bio) w jednym wywołaniu oraz mapę "available". Sekcje do wyboru: profile, shareholdings, co_managers, beneficial_owner_in, sanctions, bio, namesakes. Użyj, gdy masz identyfikator osoby "p-…" z search_persons, z odpowiedzi get_company albo adres strony /osoba/…; gdy masz tylko imię i nazwisko, najpierw search_persons. Osoba, która sprzeciwiła się publikacji, odpowiada błędem GONE. Koszt w trybie Pro (operacje za sekcję, która chybiła w pamięci serwisu): profile 1, shareholdings 1, bio 1; w trybie darmowym 0, a sekcja spoza pamięci wraca jako "missing" z AUTH_REQUIRED. Przykład: {"id": "p-a4df0b6002743095015b98a43bddabc8", "include": ["shareholdings", "co_managers"]}.
| Argument | Type | Description |
|---|---|---|
| id* | string | Identyfikator osoby "p-…" (z search_persons albo z odpowiedzi get_company), dawny adres z imieniem i datą albo adres strony /osoba/… na firmy.ai. |
| fresh | boolean | Pobierz ponownie mimo pamięci serwisu. W trybie darmowym zawsze AUTH_REQUIRED. |
| id_type | string | Wymusza typ identyfikatora, gdy wiesz lepiej: krs, nip, regon albo person. Zwykle zbędne: serwer rozpoznaje typ sam. |
| include | array | Które sekcje zwrócić: profile, shareholdings, co_managers, beneficial_owner_in, sanctions, bio, namesakes. Sekcja profile jest zawsze. Bez tego pola: profile, shareholdings, co_managers, sanctions, bio. |
| estimate | boolean | Nic nie pobieraj, pokaż tylko, które sekcje są w pamięci i ile by kosztowały w trybie Pro. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Identyfikator osoby \"p-…\" (z search_persons albo z odpowiedzi get_company), dawny adres z imieniem i datą albo adres strony /osoba/… na firmy.ai."
},
"fresh": {
"type": "boolean",
"description": "Pobierz ponownie mimo pamięci serwisu. W trybie darmowym zawsze AUTH_REQUIRED."
},
"id_type": {
"enum": [
"krs",
"nip",
"regon",
"person"
],
"type": "string",
"description": "Wymusza typ identyfikatora, gdy wiesz lepiej: krs, nip, regon albo person. Zwykle zbędne: serwer rozpoznaje typ sam."
},
"include": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 30,
"description": "Które sekcje zwrócić: profile, shareholdings, co_managers, beneficial_owner_in, sanctions, bio, namesakes. Sekcja profile jest zawsze. Bez tego pola: profile, shareholdings, co_managers, sanctions, bio."
},
"estimate": {
"type": "boolean",
"description": "Nic nie pobieraj, pokaż tylko, które sekcje są w pamięci i ile by kosztowały w trybie Pro."
}
}
}Zwraca stronę 100 firm z listy tak, jak ją pokazują listy na stronie: według miasta, działu PKD (dwie cyfry), formy prawnej albo litery początkowej nazwy (litera tylko z miastem). Użyj do przeglądania firm z jednego miasta, branży albo formy prawnej; gdy szukasz konkretnej firmy po nazwie, użyj search_companies. Koszt w trybie Pro: 0 operacji. Lista działu PKD czyta nocne fakty i bywa niedostępna, gdy jeszcze ich nie zbudowano. Przykład: {"pkd_division": "62", "city": "Kraków", "page": 2}.
| Argument | Type | Description |
|---|---|---|
| city | string | Miasto z listy serwisu, np. "Kraków" (z polskimi znakami albo bez). |
| page | integer | Numer strony, od 1 (po 100 firm). |
| letter | string | Pierwsza litera albo cyfra nazwy; tylko razem z "city". |
| legal_form | string | Forma prawna, np. "Spółka z o.o." albo "Fundacja". |
| pkd_division | string | Dział PKD, dwie cyfry, np. "62". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Miasto z listy serwisu, np. \"Kraków\" (z polskimi znakami albo bez)."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Numer strony, od 1 (po 100 firm)."
},
"letter": {
"type": "string",
"pattern": "^[A-Za-z0-9]$",
"description": "Pierwsza litera albo cyfra nazwy; tylko razem z \"city\"."
},
"legal_form": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Forma prawna, np. \"Spółka z o.o.\" albo \"Fundacja\"."
},
"pkd_division": {
"type": "string",
"pattern": "^\\d{2}$",
"description": "Dział PKD, dwie cyfry, np. \"62\"."
}
}
}Zwraca ranking firm według jednej miary: revenue (przychody), profit (zysk netto), growth (wzrost przychodów r/r), margin (marża netto), altman (wskaźnik Altmana Z) albo valuation (wycena AI), z wartością miary, opcjonalnie dla jednego miasta. Użyj do pytań „największe, najbardziej zyskowne, najszybciej rosnące firmy”; nie użyj do porównania dwóch konkretnych firm (wołaj dla nich get_company z sekcją financials). Koszt w trybie Pro: 0 operacji. Ranking obejmuje tylko firmy ze zbadanymi sprawozdaniami. Przykład: {"metric": "revenue", "city": "Gdańsk", "limit": 10}.
| Argument | Type | Description |
|---|---|---|
| city | string | Miasto z listy serwisu, np. "Gdańsk"; bez niego ranking krajowy. |
| limit | integer | Ile firm (domyślnie 20, najwyżej 100). |
| metric* | string | Miara rankingu: revenue (przychody), profit (zysk netto), growth (wzrost r/r), margin (marża netto), altman (wskaźnik Altmana Z), valuation (wycena AI). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"metric"
],
"properties": {
"city": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Miasto z listy serwisu, np. \"Gdańsk\"; bez niego ranking krajowy."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Ile firm (domyślnie 20, najwyżej 100)."
},
"metric": {
"enum": [
"revenue",
"profit",
"growth",
"margin",
"altman",
"valuation"
],
"type": "string",
"description": "Miara rankingu: revenue (przychody), profit (zysk netto), growth (wzrost r/r), margin (marża netto), altman (wskaźnik Altmana Z), valuation (wycena AI)."
}
}
}Odświeża dane firmy: unieważnia pamięć podręczną, ładuje ją od nowa razem ze sprawozdaniami, zapisuje wskaźniki i zwraca pola, które się zmieniły; ta sama blokada 6 godzin na firmę co przycisk „Odśwież” na stronie. Użyj, gdy get_company zwraca dane wyraźnie nieaktualne i potrzebujesz nowszych; w innych wypadkach get_company wystarcza. Koszt w trybie Pro: 25 operacji; w trybie darmowym narzędzie odpowiada AUTH_REQUIRED, a z "estimate": true szacunkiem (0 operacji, "allowed": false). Przykład: {"id": "0000006865"}.
| Argument | Type | Description |
|---|---|---|
| id* | string | KRS, NIP, REGON albo adres strony firmy na firmy.ai. |
| id_type | string | Wymusza typ identyfikatora, gdy wiesz lepiej: krs, nip, regon albo person. Zwykle zbędne: serwer rozpoznaje typ sam. |
| estimate | boolean | Tylko oszacuj koszt, nie odświeżaj. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "KRS, NIP, REGON albo adres strony firmy na firmy.ai."
},
"id_type": {
"enum": [
"krs",
"nip",
"regon",
"person"
],
"type": "string",
"description": "Wymusza typ identyfikatora, gdy wiesz lepiej: krs, nip, regon albo person. Zwykle zbędne: serwer rozpoznaje typ sam."
},
"estimate": {
"type": "boolean",
"description": "Tylko oszacuj koszt, nie odświeżaj."
}
}
}Zwraca listę firm z KRS pasujących do nazwy, NIP-u, numeru KRS albo REGON-u: id (numer KRS), nazwę, NIP, REGON, miasto, formę prawną, status i adres strony. Użyj, gdy nie masz identyfikatora firmy albo chcesz zawęzić nazwę do miasta; gdy masz KRS lub NIP, wołaj od razu get_company. Koszt w trybie Pro: 0 operacji (wyszukiwarka KRS i baza, bez płatnych źródeł). Przykład: {"query": "CD Projekt", "city": "Warszawa"}.
| Argument | Type | Description |
|---|---|---|
| city | string | Miasto siedziby, np. "Gdańsk"; zawęża wyszukiwanie po nazwie. |
| page | integer | Numer strony wyników, od 1. |
| limit | integer | Ile wyników na stronie (domyślnie 20, najwyżej 100). |
| query* | string | Nazwa firmy, NIP, numer KRS albo REGON (cyfry mogą być oddzielone spacjami albo myślnikami). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"city": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Miasto siedziby, np. \"Gdańsk\"; zawęża wyszukiwanie po nazwie."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Numer strony wyników, od 1."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Ile wyników na stronie (domyślnie 20, najwyżej 100)."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Nazwa firmy, NIP, numer KRS albo REGON (cyfry mogą być oddzielone spacjami albo myślnikami)."
}
}
}Zwraca listę osób z KRS o podanym imieniu i nazwisku: publiczny identyfikator "p-…" (id), imiona, nazwisko, liczbę powiązań z firmami i adres strony. Użyj, gdy masz imię i nazwisko, a potrzebujesz identyfikatora osoby do get_person; imiennicy są rozróżniani przez liczbę powiązań, a ich profile przez get_person. Nie ma wyszukiwania po PESEL ani po dacie urodzenia. Koszt w trybie Pro: 0 operacji. Przykład: {"query": "Jan Kowalski"}.
| Argument | Type | Description |
|---|---|---|
| page | integer | Numer strony wyników, od 1. |
| limit | integer | Ile wyników na stronie (domyślnie 20, najwyżej 100). |
| query* | string | Imię i nazwisko osoby, np. "Jan Kowalski". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Numer strony wyników, od 1."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Ile wyników na stronie (domyślnie 20, najwyżej 100)."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Imię i nazwisko osoby, np. \"Jan Kowalski\"."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.