vetari
Swiss commercial-register intelligence: Zefix/SHAB companies and publications with AI lead scoring
Что умеет
- Find Company By Name: Resolves a company name to its UID by searching live against Zefix — not this dataset. Call search_companies first; an empty page there means not in this dataset, not that the co
- Load Company: Fetches a company from SHAB/Zefix live and ingests it, for a UID get_companies reports as notInDataset — call get_companies first. Returns the same record once loaded; an already-present
- Find Colocated Companies: The companies sharing one company's address, given its UID: the same physical address, or the same c/o provider — the fiduciary it is domiciled at, matched as mailbox detecti
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Swiss commercial-register intelligence: Zefix/SHAB companies and publications with AI lead scoring
Как подключить
Как подключить vetari к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://vetari--vetari.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить vetari к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://vetari--vetari.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить vetari к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://vetari--vetari.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (10)
Технические названия из tools/list. Нужны только разработчикам.
| find_company_by_name | Resolves a company name to its UID by searching live against Zefix — not this dataset. Call search_companies first; an empty page there means not in this dataset, not that the company doesn't exist, so use this only once that comes back empty. Matches the start of the name (Zefix's own search, "*" wildcard allowed), at least 3 characters; an optional canton narrows it. Returns candidate uid, name, canton, legal form and status only — no AI fields, since the company may not be ingested yet — and names are not unique, so more than one candidate can come back for you to disambiguate before calling load_company with the right UID. matches is an empty list for a real zero; unavailable is set instead when the live register could not be reached. A broad match (e.g. a short or generic name) is capped at100results, with matchesTruncated set — narrow the name or add canton rather than assume completeness. |
| load_company | Fetches a company from SHAB/Zefix live and ingests it, for a UID get_companies reports as notInDataset — call get_companies first. Returns the same record once loaded; an already-present UID returns immediately. If there is nothing to return, loadStatus says why: NOT_IN_REGISTER, IN_PROGRESS/QUEUE_FULL (retry shortly), or SOURCE_UNAVAILABLE. A malformed UID is rejected. |
| find_colocated_companies | The companies sharing one company's address, given its UID: the same physical address, or the same c/o provider — the fiduciary it is domiciled at, matched as mailbox detection counts mass domiciliation. You pivot from a UID; a c/o string is never accepted. The subject is left out. Returns UIDs, newest first. basis names the keys it could be pivoted on, so an empty basis means no address and no provider, not that it stands alone. |
| get_companies | Full detail for one or several companies (1 to 25) by UID: verbatim purpose, all contact fields, full AI block — the second half of a search, without a call per row. An absent vatRegistration means that enrichment has not run. analysisStatus is always present, and ANALYSED does not promise every field — a dissolution or an administrative change runs only part of the pipeline. Answered in the order asked, a repeated UID once. UIDs the dataset lacks come back in notInDataset with a reason pointing at load_company (which fetches one at a time), and any left out because the response filled up come back in omittedForSize, so a short answer always says so. A malformed UID, or one whose check digit contradicts the rest, is rejected instead. |
| list_company_uids_at_address | All company UIDs at a physical address. Street and city match exactly (case-insensitive); house number and postal code narrow it. Matches the physical address only, never the c/o line — for a cluster around a shared fiduciary, start from a company and use find_colocated_companies. Newest registration first. Pair with get_companies for detail. |
| search_companies | Search Swiss companies of every legal form: name, canton, legal form, industry, location, registration date, capital, discovered contact details, and the AI block (lead/viability score, mailbox-company and dissolution flags, size, confidence tier, buyer profiles, growth signals). Nothing is silently ignored — an unknown closed-set value or a free-text term under 3 characters is rejected — so an empty page is a real zero for this dataset, which holds only companies named in recent SHAB publications; it is not evidence the company doesn't exist in the register at all — try find_company_by_name against the live register instead. Every AI filter matches only analysed companies, so an empty page there means none analysed matched; analysisStatuses says how much was in scope. purpose is the exception and the way to ask what a company does: it searches the register's own purpose clause, which every company has, and the English AI summary together, so an unanalysed company is still found by its own words, and with no sort the most relevant come first. Unscored companies sort last, so pair a score sort with its minimum. Rows carry the filterable fields only — get_companies for the purpose, address, contact data and full AI block. |
| describe_dataset | What this dataset covers — call it before concluding something does not exist. Publication date range held, when the fetch last succeeded, company and publication counts, how many companies are analysed and where that begins, and the same per canton. It holds recent SHAB publications plus Zefix history only for the companies those name, so an older unchanged company is absent from a search — not gone: load_company fetches it directly by UID. Only the analysed part is what every AI filter searches. |
| get_publications | Verbatim gazette text for one or several publications (1 to 25), by the UUID search_publications returned. In the order asked, a repeated id once. A message runs from hundreds of characters to several kilobytes, so the id count does not bound the response: entries are returned until the text fills it and the rest come back in omittedForSize; unknown ids come back in notInDataset with a reason; a malformed id is rejected instead. |
| list_mutation_types | Every valid mutation type with its English description, for the mutationTypes filter in search_publications. |
| search_publications | Search SHAB gazette publications by date (published or journal), mutation type (see list_mutation_types), sub-rubric, canton, the named company's legal form, and/or a list of company UIDs. Unknown closed-set values are rejected, so an empty page is a real zero. Newest first; the order is fixed. Rows say what happened, to whom and when, without the gazette text — read that via get_publications. title is the entry's own headline, and subRubric separates entries from changes and deletions, which is what is left when mutationTypes is UNRESOLVED. Every other company attribute is a question for search_companies. No free-text search over publication bodies. |