MCP server for AI agents
Ask Claude, Cursor or your own agent Which GmbHs were registered in canton Zug this week?
and it answers from the new entries of the Swiss commercial register. The MCP server gives agents
four read-only tools on the feed; what they return depends on your plan, exactly as in the API.
- Server URL
https://swissnewco.tollwyn.com/mcp- Header
Authorization: Bearer snf_…- Protocol
- MCP over Streamable HTTP, spec versions 2025-06-18, 2025-11-25 and 2026-07-28
1. Get an API key
Sign up with your e-mail; the dashboard shows your key once. On Free you see the last 7 days and 2’000 records a month, with website, e-mail and phone marked as found but not shown. From CHF 39 a month you get the contact details, a longer history and more records.
Already registered? Create a key in the dashboard.
2. Connect your client
Pick the client you use; each needs the server URL and your key.
Claude Desktop
- Install Node.js (the LTS version) if it is not on your
computer yet: Claude Desktop reaches remote servers through a small helper,
mcp-remote, that runs on Node.js. - In Claude Desktop, open Settings → Developer → Edit Config.
- Paste this into
claude_desktop_config.jsonand replacesnf_…with your whole key:{ "mcpServers": { "swissnewco": { "command": "npx", "args": [ "-y", "mcp-remote", "https://swissnewco.tollwyn.com/mcp", "--header", "Authorization:${SWISSNEWCO_AUTH}" ], "env": { "SWISSNEWCO_AUTH": "Bearer snf_…" } } } }If the file already has
mcpServers, add only theswissnewcoentry inside it. Leave the header line without a space after the colon: Claude Desktop on Windows splits arguments at spaces. - Restart Claude Desktop. In a new chat,
swissnewcoand its four tools appear among the connected tools.
Cursor
Cursor connects to remote servers itself. Add the server to ~/.cursor/mcp.json for all projects, or to .cursor/mcp.json in one project, and replace snf_… with your whole key:
{
"mcpServers": {
"swissnewco": {
"url": "https://swissnewco.tollwyn.com/mcp",
"headers": {
"Authorization": "Bearer snf_…"
}
}
}
} Other clients
Any client that speaks Streamable HTTP needs the server URL and your key in the Authorization header. The server keeps no sessions and opens no stream of its own.
To try a tool from the command line:
curl https://swissnewco.tollwyn.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'authorization: Bearer snf_…' \
-d '{"jsonrpc": "2.0", "id": 1,
"method": "tools/call",
"params": {
"name": "list_new_companies",
"arguments": {"canton": ["ZG"],
"limit": 5}}}' 3. Ask your agent
The agent picks the tools and the filters itself. For example:
Which GmbHs were registered in canton Zug this week? Address and website as a table.
list_new_companieswithcanton: ["ZG"],legal_form: ["0107"]andpublished_fromthis MondayNew companies around Winterthur that have no website yet.
list_new_companieswithzip: ["84"]andhas_website: falseWho is named in the register entry of CHE-413.480.290?
get_companyHow many records do I have left this month?
account
Tools
Each tool is one request to the API and answers with its JSON unchanged:
the same records, with contact.status and contact.masked. On Free,
website, e-mail, phone and contact page are null, while has_website, has_email and has_phone tell what was found.
list_new_companiesGET /v1/companies- The new entries, newest first, by canton, postcode, legal form, website or e-mail found, or a word in name or purpose.
- Parameters:
published_from,published_to,canton,zip,legal_form,has_website,has_email,q,limit list_eventsGET /v1/events- The changes in a fixed order: new entries, websites found later, and removals you apply to your copy.
- Parameters:
after,limit accountGET /v1/account- Your plan and its limits, the first day of your history and this month's usage.
- No parameters
canton, zip and legal_form take lists, such as ["ZH", "ZG"]. list_new_companies returns up to limit records (at most 1’000), newest first; for more, narrow the days or the
filters. The record describes every field.
Limits and errors
- Every record a tool delivers counts towards your monthly quota, as in the API;
accountdoes not count. Tool calls and API requests share the limit of 60 a minute per key. - API errors come back as a tool result with
isError: trueand the API's error body, with the same codes. Where the API sendsRetry-After, the body addsretry_afterin seconds:{ "error": { "code": "quota_exceeded", "message": "This month's 2000 records are delivered. …" }, "retry_after": 1641600 } - Without a valid key, a tool call answers HTTP 401 with the link to a free key. Listing the tools needs no key.
Source and licence
Source: Swiss Official Gazette of Commerce (SHAB), freely usable with source attribution. For business use only. What you may do with the data depends on your plan; see the terms.
Free to start, no card needed.