Sami Swoi
Server Details
Directory of Polish-run businesses outside Poland: shops, tradespeople, doctors, services.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Sami Swoi
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: company detail lookup, category reference, country reference, and business search. There is no meaningful overlap that would cause misselection; list_categories is explicitly the helper for search_companies filtering.
All four tools follow a consistent snake_case verb_noun pattern: get_company, list_categories, list_countries, search_companies. The conventions are predictable and readable.
Four tools is well-scoped for a focused business-directory server. Each tool earns its place: search for discovery, get for detail, and two reference lists for filters.
The surface covers discovery, detail lookup, category metadata, and country metadata, which supports the core directory workflow. Minor gaps include no dedicated city-list tool or direct category-browsing endpoint beyond using search filters.
Available Tools
4 toolsget_companyBusiness profile / Profil firmyARead-onlyIdempotentInspect
One Polish business abroad on Sami Swoi by its id or samiswoi.app page URL: category, city and country, address, website, languages, opening hours, short description and the data source. Phone and e-mail are on the linked page. / Profil jednej firmy.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Company id from search_companies, e.g. "polski-sklep-utrecht". | |
| url | No | Company page URL, e.g. https://samiswoi.app/polski-sklep-utrecht |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | Guidance for answering, e.g. when nothing was found. |
| status | Yes | |
| company | No | |
| message | No | |
| browse_url | No | Page on samiswoi.app with the full list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world), and the description adds real value on top: it lists what fields come back and explicitly warns that phone and e-mail are not included but live on the linked page, which changes how an agent should plan follow-up calls. It does not cover error behavior for an invalid id/URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The field list and the phone/e-mail caveat are front-loaded in a single dense sentence with no filler. The appended Polish half-title 'Profil jednej firmy' is redundant with the tool title but is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return shape, and it nonetheless signals field coverage and the phone/e-mail gap. What remains unstated is that one of the two optional-looking parameters must actually be provided for a successful lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including an example id and example URL, so the schema already carries the parameter meaning. The description only restates that lookup is by id or page URL, adding no format or precedence guidance (e.g. which wins if both are supplied).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (fetch one Polish business profile) plus the two lookup keys (id or samiswoi.app page URL), and enumerates the returned fields. The word 'One' distinguishes it from list-style siblings such as search_companies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: a single-record lookup keyed by an id that the schema says comes from search_companies, so the search-then-fetch flow is inferable. However, the description never explicitly says when to use this versus search_companies, nor that exactly one of id/url should be supplied (the schema marks neither required).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesCategories / KategorieARead-onlyIdempotentInspect
Business categories used by Sami Swoi (slug, Polish name, group, number of listed businesses) for the category filter of search_companies. Optional country limits the counts to one country. / Kategorie firm.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country: ISO code ("GB", "DE", "NL") or name in Polish or English ("Holandia", "Germany"). / Kraj. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | Guidance for answering, e.g. when nothing was found. |
| status | Yes | |
| message | No | |
| browse_url | No | Page on samiswoi.app with the full list. |
| categories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: the optional country parameter limits the counts to one country rather than filtering the category list itself, which prevents a likely misinterpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource, its fields, and its purpose, with the country caveat placed immediately after. The trailing Polish echo ('Kategorie firm.') is duplicative of the title but minor and consistent with the bilingual style of the rest of the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, full schema coverage, complete annotations, and an output schema, the description needs only to state what the tool returns and how the parameter behaves – both of which it does. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns more by clarifying that country only narrows the business counts and does not remove categories. That is a semantic detail the schema does not convey, and it directly affects how an agent interprets the returned numbers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (business categories) and its content shape (slug, Polish name, group, business count), and ties it to the sibling tool it supports: the category filter of search_companies. An agent can tell it apart from list_countries and get_company, though it never states the verb 'list' or explicitly excludes sibling use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the phrase 'for the category filter of search_companies' – an agent can infer it should call this to discover category slugs before searching. There is no explicit when-to-call instruction, no prerequisite statement, and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesCountries / KrajeBRead-onlyIdempotentInspect
Countries with Polish businesses listed on Sami Swoi: ISO code, Polish name, number of businesses and the country page. / Kraje i liczba polskich firm.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | Guidance for answering, e.g. when nothing was found. |
| status | Yes | |
| message | No | |
| countries | No | |
| browse_url | No | Page on samiswoi.app with the full list. |
| total_companies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false. The description adds value by naming the returned attributes, but it does not disclose ordering, pagination, or whether all countries are returned or only those with businesses (though 'with Polish businesses' implies filtering).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with the key information front-loaded. The Polish translation is a near-duplicate, adding slight redundancy but likely useful for a bilingual audience.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, rich annotations, and an output schema, the description is largely complete. It tells the agent what data is available and the scope (countries with Polish businesses), though it could mention ordering or completeness guarantees.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. No parameter behavior needs explanation, and the description correctly focuses on what the tool returns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (countries with Polish businesses on Sami Swoi) and the data returned (ISO code, Polish name, business count, country page). It does not explicitly differentiate itself from siblings like list_categories, though the resource difference is obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as list_categories or search_companies. The context implies it is for enumerating countries, but no conditions, exclusions, or alternative routing are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesSearch Polish businesses abroad / Szukaj polskich firmARead-onlyIdempotentInspect
Search Polish-run businesses outside Poland listed on Sami Swoi (samiswoi.app), for questions like "Polish plumber in London", "Polish shop in Utrecht", "Polish dentist in Oslo", "polska księgowa w Dublinie". Filters: country, city, category (slug or Polish word, see list_categories) and a phrase from the name or kind of business. Returns up to 20 businesses per call (page with offset/next_offset), each with city, category and its samiswoi.app page, plus the total. / Polskie firmy za granicą: kraj, miasto, kategoria, fraza.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City, e.g. "London", "Londyn", "Utrecht". Best together with country. / Miasto. | |
| limit | No | Maximum results (1-20, default 10). | |
| query | No | Words from the business name or kind, Polish works best ("delikatesy", "mechanik", "Biedronka"). / Fraza. | |
| offset | No | Skip this many matches; use next_offset. | |
| country | No | Country: ISO code ("GB", "DE", "NL") or name in Polish or English ("Holandia", "Germany"). / Kraj. | |
| category | No | Category slug from list_categories (e.g. "hydraulik", "sklep-spozywczy") or a Polish word ("dentysta", "fryzjer"). / Kategoria. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | Guidance for answering, e.g. when nothing was found. |
| query | No | Filters as applied. |
| status | Yes | |
| message | No | |
| returned | No | |
| companies | No | |
| browse_url | No | Page on samiswoi.app with the full list. |
| candidates | No | |
| next_offset | No | |
| total_found | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description still adds concrete behavior: a hard cap of 20 results per call, offset/next_offset paging, and a total count alongside each hit's city, category and page URL. It doesn't mention empty-result behavior or ranking order, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and concrete example queries, then the filter list, then the return shape. The trailing Polish sentence is a short bilingual echo rather than a full translation, so waste is minimal, though it does partially repeat earlier content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values needn't be spelled out given an output schema exists, and safety is covered by annotations; what remains – query syntax, facet vocabulary, result cap and paging – is all present. All parameters are optional, which lets the agent browse, and the description gives enough scaffolding to do that sensibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline 3 would apply, but the description earns more by clarifying that category accepts either a slug or a Polish word and pointing to list_categories, and that country can be an ISO code or a Polish/English name. It also frames limit/offset as a paging pair. Minor gap: no guidance on combining zero filters versus a full filter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb (search) applied to a precisely bounded resource: Polish-run businesses outside Poland listed on samiswoi.app. The example queries ("Polish plumber in London", "polska księgowa w Dublinie") make the scope instantly legible and distinguish it from sibling get_company (single record) and list_categories/list_countries (facets).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to build a query – filter by country/city/category/name phrase – and routes to list_categories for valid category slugs. It also explains paging via offset/next_offset. It stops short of stating when NOT to use it (e.g. when a specific business is already known and get_company should be used), so it's clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_company - First observed
list_categories - First observed
list_countries - First observed
search_companies
Related MCP Connectors
Polish company registry: 4.4M firms, KRS/REGON data, VAT white list checks, financial statements
Directory and marketplace of local businesses and independent professionals near you.
Know-your-business checks for Polish companies: KRS, owners, insolvency, sanctions, gazette notices.
3M+ Polish companies (KRS, CEIDG): financials, people, rankings and public registries.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceYour AI agent's practical guide to life and administration in Poland.MIT
- AlicenseNot gradedqualityBmaintenanceProvides AI assistants access to Polish public registers, enabling company lookups in KRS, VAT whitelist and bank-account checks, KRS extract retrieval, and offline validation of NIP, REGON, KRS, NRB, and KW numbers.MIT
- FlicenseNot gradedqualityDmaintenanceProvides access to Poland's largest business registry database, enabling company search, beneficiary checks, and financial document retrieval via natural language.1-
- AlicenseAqualityCmaintenanceLook up Polish companies from any AI assistant: registry data (KRS, REGON, CEIDG), VAT white list checks before payments, and financial statements of 4.4M businesses. Read-only tools backed by official public registers.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.