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.

Get a free API key

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

  1. 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.
  2. In Claude Desktop, open Settings → Developer → Edit Config.
  3. Paste this into claude_desktop_config.json and replace snf_… 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 the swissnewco entry inside it. Leave the header line without a space after the colon: Claude Desktop on Windows splits arguments at spaces.

  4. Restart Claude Desktop. In a new chat, swissnewco and 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_companies with canton: ["ZG"], legal_form: ["0107"] and published_from this Monday
  • New companies around Winterthur that have no website yet. list_new_companies with zip: ["84"] and has_website: false
  • Who is named in the register entry of CHE-413.480.290? get_company
  • How 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_companies GET /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
get_company GET /v1/companies/{uid}
The new entry of one company, by its UID.
Parameters: uid
list_events GET /v1/events
The changes in a fixed order: new entries, websites found later, and removals you apply to your copy.
Parameters: after, limit
account GET /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; account does 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: true and the API's error body, with the same codes. Where the API sends Retry-After, the body adds retry_after in 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.

Get a free API key