Koskamo

Sami Swoi MCP

A read-only MCP server providing access to a directory of Polish-run businesses outside Poland. It allows AI assistants to search for companies by country, city, category, or phrase, retrieve detailed company profiles, and list available countries and categories without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Sami Swoi MCP logo, by KROL-TECH Łukasz KrólVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by KROL-TECH Łukasz Król
MCP endpoint (Streamable HTTP)
https://samiswoi.app/mcp
Vendor documentation

What you can do with it

  • Search for Polish businesses by country, city, or category
  • Retrieve detailed profiles including address and opening hours
  • List available countries and business categories in the directory

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
samiswoi 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Sami Swoi (samiswoi.app) is a free directory of Polish-run businesses outside Poland: shops, tradespeople, doctors, accountants, schools and services where you can speak Polish, in the UK, Germany, the Netherlands, Ireland, Norway, the USA and many other countries. Businesses in Poland are not listed. search_companies finds businesses by country, city, category or a phrase; get_company returns one profile (category, city, address, website, opening hours, languages); list_countries lists countries with the number of listed businesses; list_categories lists categories. Phone numbers and e-mail addresses are not returned: they are on the business page on samiswoi.app linked in every result. An empty result means the business is not listed on Sami Swoi, not that it does not exist. Names and descriptions are in Polish.

Tools

4 advertised

search_companies — Search Polish businesses abroad / Szukaj polskich firm
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_companies input schema
{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "City, e.g. \"London\", \"Londyn\", \"Utrecht\". Best together with country. / Miasto."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1,
      "description": "Maximum results (1-20, default 10)."
    },
    "query": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Words from the business name or kind, Polish works best (\"delikatesy\", \"mechanik\", \"Biedronka\"). / Fraza."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 2000,
      "minimum": 0,
      "description": "Skip this many matches; use next_offset."
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "minLength": 2,
      "description": "Country: ISO code (\"GB\", \"DE\", \"NL\") or name in Polish or English (\"Holandia\", \"Germany\"). / Kraj."
    },
    "category": {
      "type": "string",
      "maxLength": 60,
      "minLength": 2,
      "description": "Category slug from list_categories (e.g. \"hydraulik\", \"sklep-spozywczy\") or a Polish word (\"dentysta\", \"fryzjer\"). / Kategoria."
    }
  },
  "additionalProperties": false
}
search_companies output schema
{
  "type": "object",
  "required": [
    "ok",
    "status"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "note": {
      "type": "string",
      "description": "Guidance for answering, e.g. when nothing was found."
    },
    "query": {
      "type": "object",
      "description": "Filters as applied.",
      "additionalProperties": true
    },
    "status": {
      "enum": [
        "found",
        "no_companies",
        "country_not_found",
        "category_not_found",
        "invalid_request",
        "temporary_error"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "returned": {
      "type": "integer"
    },
    "companies": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "category",
          "category_label",
          "country_code",
          "country",
          "city",
          "managed_by_owner",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Company id (address on samiswoi.app); use with get_company."
          },
          "url": {
            "type": "string",
            "description": "Company page on samiswoi.app (contact details, map)."
          },
          "city": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "country": {
            "type": "string",
            "description": "Country name in Polish."
          },
          "category": {
            "type": "string",
            "description": "Category slug (see list_categories)."
          },
          "country_code": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2."
          },
          "category_label": {
            "type": "string",
            "description": "Category name in Polish."
          },
          "managed_by_owner": {
            "type": "boolean",
            "description": "true = the owner runs this profile; false = built from public data, not yet claimed."
          }
        },
        "additionalProperties": false
      }
    },
    "browse_url": {
      "type": "string",
      "description": "Page on samiswoi.app with the full list."
    },
    "candidates": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "value",
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "next_offset": {
      "type": "integer"
    },
    "total_found": {
      "type": "integer"
    }
  },
  "additionalProperties": false
}
search_companies annotations
{
  "title": "Search Polish businesses abroad / Szukaj polskich firm",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_company — Business profile / Profil firmy
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_company input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 40,
      "minLength": 3,
      "description": "Company id from search_companies, e.g. \"polski-sklep-utrecht\"."
    },
    "url": {
      "type": "string",
      "maxLength": 200,
      "minLength": 10,
      "description": "Company page URL, e.g. https://samiswoi.app/polski-sklep-utrecht"
    }
  },
  "additionalProperties": false
}
get_company output schema
{
  "type": "object",
  "required": [
    "ok",
    "status"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "note": {
      "type": "string",
      "description": "Guidance for answering, e.g. when nothing was found."
    },
    "status": {
      "enum": [
        "found",
        "not_found",
        "invalid_request",
        "temporary_error"
      ],
      "type": "string"
    },
    "company": {
      "type": "object",
      "required": [
        "id",
        "name",
        "category",
        "category_label",
        "country_code",
        "country",
        "city",
        "managed_by_owner",
        "url",
        "description",
        "address",
        "website",
        "languages",
        "opening_hours",
        "source",
        "country_url",
        "category_url",
        "city_url"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Company id (address on samiswoi.app); use with get_company."
        },
        "url": {
          "type": "string",
          "description": "Company page on samiswoi.app (contact details, map)."
        },
        "city": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "source": {
          "type": "string",
          "description": "Where the data comes from."
        },
        "address": {
          "type": [
            "object",
            "null"
          ],
          "required": [
            "street",
            "postcode",
            "city",
            "country"
          ],
          "properties": {
            "city": {
              "type": "string"
            },
            "street": {
              "type": [
                "string",
                "null"
              ]
            },
            "country": {
              "type": "string"
            },
            "postcode": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        "country": {
          "type": "string",
          "description": "Country name in Polish."
        },
        "website": {
          "type": [
            "string",
            "null"
          ]
        },
        "category": {
          "type": "string",
          "description": "Category slug (see list_categories)."
        },
        "city_url": {
          "type": [
            "string",
            "null"
          ]
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Languages spoken (always includes Polish)."
        },
        "country_url": {
          "type": "string"
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "category_url": {
          "type": "string"
        },
        "country_code": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2."
        },
        "opening_hours": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "e.g. \"Mon 09:00-17:00\"; empty when unknown."
        },
        "category_label": {
          "type": "string",
          "description": "Category name in Polish."
        },
        "managed_by_owner": {
          "type": "boolean",
          "description": "true = the owner runs this profile; false = built from public data, not yet claimed."
        }
      },
      "additionalProperties": false
    },
    "message": {
      "type": "string"
    },
    "browse_url": {
      "type": "string",
      "description": "Page on samiswoi.app with the full list."
    }
  },
  "additionalProperties": false
}
get_company annotations
{
  "title": "Business profile / Profil firmy",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_countries — Countries / Kraje
Advertised by the server during the last successful anonymous check.
Advertised read-only

Countries with Polish businesses listed on Sami Swoi: ISO code, Polish name, number of businesses and the country page. / Kraje i liczba polskich firm.

list_countries input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_countries output schema
{
  "type": "object",
  "required": [
    "ok",
    "status"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "note": {
      "type": "string",
      "description": "Guidance for answering, e.g. when nothing was found."
    },
    "status": {
      "enum": [
        "found",
        "invalid_request",
        "temporary_error"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code",
          "name",
          "companies",
          "url"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "companies": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      }
    },
    "browse_url": {
      "type": "string",
      "description": "Page on samiswoi.app with the full list."
    },
    "total_companies": {
      "type": "integer"
    }
  },
  "additionalProperties": false
}
list_countries annotations
{
  "title": "Countries / Kraje",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_categories — Categories / Kategorie
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_categories input schema
{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "maxLength": 60,
      "minLength": 2,
      "description": "Country: ISO code (\"GB\", \"DE\", \"NL\") or name in Polish or English (\"Holandia\", \"Germany\"). / Kraj."
    }
  },
  "additionalProperties": false
}
list_categories output schema
{
  "type": "object",
  "required": [
    "ok",
    "status"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "note": {
      "type": "string",
      "description": "Guidance for answering, e.g. when nothing was found."
    },
    "status": {
      "enum": [
        "found",
        "country_not_found",
        "invalid_request",
        "temporary_error"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "browse_url": {
      "type": "string",
      "description": "Page on samiswoi.app with the full list."
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "group",
          "companies"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "companies": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
list_categories annotations
{
  "title": "Categories / Kategorie",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
733 ms
95th percentile latency
733 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 733 ms · metadata changed · 4 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http sami-swoi-mcp https://samiswoi.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add sami-swoi-mcp --url https://samiswoi.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable sami-swoi-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "sami-swoi-mcp": {
      "url": "https://samiswoi.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "sami-swoi-mcp": {
      "type": "streamableHttp",
      "url": "https://samiswoi.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start sami-swoi-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "sami-swoi-mcp": {
      "type": "http",
      "url": "https://samiswoi.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http sami-swoi-mcp https://samiswoi.app/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "sami-swoi-mcp": {
      "url": "https://samiswoi.app/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "sami-swoi-mcp": {
      "serverUrl": "https://samiswoi.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Sami Swoi MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Sami Swoi MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing