swissco: Swiss company data (Zefix, SHAB, simap)
Servidor MCP Zefix: registro comercial suíço, diário oficial SHAB, licitações simap, FINMA, GLEIF e ARAMIS.
Documentação
swissco
Dados de empresas suíças direto do terminal. Consulte uma empresa pelo UID, pesquise entre 790.000 delas por nome ou por objeto social, liste publicações do diário oficial, navegue por licitações públicas, verifique uma licença bancária ou acompanhe uma lista de empresas em busca de alterações.
uvx swissco lookup CHE-444.420.929
Todos os dados vêm de seis fontes de dados abertas, nenhuma das quais exige credenciais: Zefix no LINDAS para o registro comercial, o Amtsblattportal para o Diário Oficial do Comércio suíço, simap.ch para compras públicas, FINMA para bancos autorizados e corretoras de valores, GLEIF para o Identificador de Entidade Legal e estrutura de grupo, e ARAMIS para pesquisa financiada pelo governo federal.
Construído e mantido pela Prospex, uma plataforma suíça de inteligência de vendas B2B.
Instalação
uvx swissco --help # run it without installing
pip install swissco # or install it
Python 3.14 ou mais recente.
Docker
docker run --rm prospexch/swissco search "Nestlé" --limit 5
A imagem roda como um usuário sem privilégios e mantém seu estado — os IDs já vistos de watch
e os arquivos FINMA em cache — em /home/swissco/.swissco. Monte um volume lá
para qualquer coisa que precise lembrar o que viu da última vez:
docker run --rm -v swissco-state:/home/swissco/.swissco \
prospexch/swissco watch --uid CHE-105.909.036
As credenciais do Zefix, sem as quais todos os comandos funcionam, são passadas como variáveis de ambiente:
docker run --rm -e ZEFIX_USER -e ZEFIX_PASSWORD prospexch/swissco lookup CHE-105.909.036
Comandos
Todo comando aceita --format table|json|csv, --limit e --quiet.
swissco lookup
Tudo o que o registro publica sobre uma empresa.
$ swissco lookup CHE-444.420.929
legal name Baumberger Bau AG
uid CHE-444.420.929
chid CH-036.9.103.786-9
ehra id 1702823
legal form code 0151
legal form Schweizerische Zweigniederlassung im Handelsregister eingetragen
municipality Koppigen
canton BE
address Hauptstrasse 6, 3425 Koppigen
purpose Anbieten von Kleintransporte aller Art.
zefix uri https://register.ld.admin.ch/zefix/company/1702823
Aceita CHE-444.420.929, CHE444420929 ou o UID embutido em outro texto.
swissco search
Empresas por nome legal ou por objeto social: como uma empresa descreve o que faz, com suas próprias palavras, no registro.
$ swissco search "usinage" --canton VD --limit 5
LEGAL_NAME UID LEGAL_FORM MUNICIPALITY CANTON PURPOSE
------------------------------------- --------------- ------------------------------------------------- ------------ ------ ------------------------------------------------------------
Atelier roue libre S.A. CHE-261.821.895 Aktiengesellschaft Penthalaz VD La société a pour but l'usinage, la réparation, la révision…
Cute Cut Sàrl CHE-403.577.924 Gesellschaft mit beschränkter Haftung GMBH / SARL Lausanne VD la société a pour but toutes activités, notamment la fabric…
DecoupART CNC Sàrl CHE-342.723.896 Gesellschaft mit beschränkter Haftung GMBH / SARL Paudex VD la société a pour but tous types de travaux dans les domain…
LAVA Technologies Sàrl en liquidation CHE-217.431.384 Gesellschaft mit beschränkter Haftung GMBH / SARL Nyon VD la société a pour but: développement de machines d'usinage …
Pousaz Mécanique SA CHE-166.712.190 Aktiengesellschaft Oron VD La société a pour but l'exploitation d'un atelier mécanique…
--canton aceita um código de duas letras, --legal-form um código eCH-0097 (0106 é uma SA,
0107 uma GmbH).
swissco publications
Publicações do registro comercial no diário oficial, em um intervalo de datas.
swissco publications --canton ZH --since 2026-08-01
swissco publications --canton ZH --since 2026-08-01 --type CAPITAL_INCREASED
Sem --type, apenas as páginas de lista são lidas: uma requisição a cada 2.000 publicações.
Com --type, o corpo de cada publicação sobrevivente é buscado e classificado nos
onze tipos de evento
que shab-parser reconhece, então restrinja o intervalo e o cantão primeiro.
Intervalos além de cerca de dez dias são divididos em janelas automaticamente. A API rejeita qualquer requisição cujo deslocamento de página alcance 10.000, e o diário oficial publica cerca de mil entradas de registro comercial por dia.
swissco events
O histórico de registro de uma empresa.
swissco events CHE-444.420.929 --since 2024-01-01
As páginas de lista do diário oficial não trazem UID, apenas um título, então isso resolve o UID para um nome legal, mantém as publicações cujo título se parece com esse nome, depois busca esses corpos e mantém os eventos cujo próprio UID corresponde. A correspondência de título decide o que vale a pena baixar; o UID do corpo decide o que é relatado. Os corpos buscados são armazenados em cache no diretório de estado, então uma nova execução sobreposta não custa nada.
swissco watch
O que mudou desde a última vez.
printf 'CHE-444.420.929\nCHE-105.943.826\n' > uids.txt
swissco watch uids.txt --state ~/.swissco/
Cada empresa é comparada por impressão digital, um resumo sobre seus campos de identidade, endereço e
objeto social. Sai com 10 quando algo mudou e 0 quando nada mudou, então o cron
pode ramificar com base nisso:
0 7 * * * swissco watch ~/uids.txt --quiet --format json > ~/changes.json \
|| mail -s "registry changes" me@example.com < ~/changes.json
Um UID que saiu do conjunto de dados é relatado como não está mais no conjunto de dados, nunca como excluído. O LINDAS carrega apenas entidades ativas, então um UID pode sair do conjunto de dados após um novo registro, uma correção ou um atraso de publicação.
swissco tenders
Projetos de compras públicas do simap, por cantão e data de publicação.
$ swissco tenders --canton ZG --since 2026-08-25 --limit 3
TITLE PROJECT_NUMBER BUYER CANTON CITY PUBLICATION_DATE PUBLICATION_TYPE
----------------------------------------------------- -------------- ------------------------------ ------ ---- ---------------- ----------------
Neubau Pfarreizentrum, Katholische Kirchgemeinde Baar 22047 Katholische Kirchgemeinde Baar ZG Baar 2026-09-05 award
--canton e --type são repetíveis; --lang escolhe em qual idioma o título e o
comprador são relatados. A paginação é um cursor em vez de um deslocamento, então um intervalo amplo
custa páginas em vez de falhar.
O intervalo de datas filtra a publicação mais recente de cada projeto, não a adjudicação dentro dele. Um projeto adjudicado em março cuja publicação mais recente é uma correção de agosto aparece apenas em um intervalo que cubra agosto.
swissco vendor
Se uma empresa está registrada como fornecedora no simap.
$ swissco vendor CHE-409.633.691
name Egli Gartenbau AG Sursee
uid no CHE-409.633.691
city Sursee
canton LU
url https://www.gartenbau-egli.ch
company size medium
Um UID é resolvido para um nome legal, pesquisado e então confirmado contra o
próprio uidNo do diretório. O nome encontra os candidatos; o UID decide entre
eles — o diretório contém tanto uma "Egli Gartenbau AG Sursee" quanto uma "Egli
Gartenbau AG Uster".
Não existe comando para o que uma empresa venceu. O fornecedor nomeado em uma adjudicação do simap não carrega UID, apenas texto livre digitado por um escritório de compras. Corresponder esses nomes produziria uma resposta plausível que às vezes é sobre uma empresa diferente, então isso não é oferecido.
swissco finma
Bancos autorizados e corretoras de valores da FINMA, unidos a um UID.
$ swissco finma --uid CHE-105.845.287
name Aargauische Kantonalbank
city Aarau 1
licence type Bank
supervisory category 3
uid CHE-105.845.287
Também swissco finma "Raiffeisen", --licence, --category e --finma em
lookup. Ambos os arquivos são armazenados em cache por uma semana no diretório de estado.
Apenas bancos e corretoras de valores: a FINMA licencia seguradoras, gestores de carteiras e empresas de gestão de fundos em listas separadas que isso não lê. Uma ausência significa "não nesta lista", nunca "sem licença".
swissco lei
O Identificador de Entidade Legal de uma empresa e o grupo no qual ela é consolidada.
$ swissco lei CHE-412.669.376
legal name UBS Switzerland AG
lei 549300WOIFUSNYH0FL22
registered as CHE-412.669.376
jurisdiction CH
status ACTIVE
initial registration date 2014-12-15
direct parent UBS AG (BFM8T61CT2L1QCEMIK50, CH)
ultimate parent UBS Group AG (549300SZJ9VS8SGXAN81, CH)
direct children 0
--children lista o que esta empresa consolida em vez de contá-la, e
--lei em lookup incorpora os mesmos campos em um perfil de empresa.
A controladora costuma ser estrangeira, e essa é a razão para executar isso: o proprietário de uma subsidiária suíça no exterior não tem entrada no registro comercial, então o registro não pode responder à pergunta de forma alguma.
Os registros de Nível 2 do GLEIF documentam consolidação contábil: uma controladora é a entidade que consolida esta em suas contas, o que ela pode fazer sem possuir tudo dela. Cerca de 28.000 entidades suíças possuem um LEI contra aproximadamente 790.000 no registro, então uma ausência significa "sem LEI registrado" e nada mais.
swissco research
Projetos de pesquisa financiados pelo governo federal do ARAMIS, o registro da Confederação de mandatos de pesquisa e inovação. Dinheiro da Innosuisse e do FNS incluído.
$ swissco research CHE-337.958.399
TITLE PROJECT_NUMBER OFFICE STATUS START_DATE ROLE
Reducing Documentation Burden in S… 137.839 INNO-ICT INNOSUISSE In Process 2026-06-01 Implementation Partner
Um UID é confirmado contra o UID de participante de cada projeto, então cada linha
relatada é exata. Texto livre é pesquisado como fornecido e cada resultado retorna com
suas organizações participantes. --limit limita quantos candidatos são hidratados,
já que a lista de participantes custa uma requisição por projeto, e --lang escolhe DE,
EN, FR ou IT.
O ARAMIS pesquisa títulos de projetos, resumos e o campo de texto livre do contratante, e indexa a lista estruturada de participantes sob nenhum deles. Uma empresa nomeada apenas como parceira estruturada não pode ser encontrada, que é onde os parceiros de implementação da Innosuisse costumam estar, então um resultado vazio significa apenas que nenhum projeto menciona esta empresa pelo nome. Não é evidência de que a empresa não recebeu dinheiro federal de pesquisa.
swissco lê a organização, o papel, o UID e o local de um
participante. O ARAMIS também publica o nome do pesquisador, endereço de e-mail e
números de telefone, e nenhum deles tem um campo no analisador.
Saída
--format é a única coisa que muda a saída. Um comando canalizado para jq e
o mesmo comando observado por uma pessoa produzem bytes idênticos, então um script que funciona
no seu terminal funciona em CI.
table e csv são renderizados a partir das mesmas linhas que json serializa, então uma coluna
não pode aparecer em um formato e faltar em outro. Notas de progresso vão para o stderr, onde
--quiet as silencia; erros vão para o stderr como um único objeto JSON.
Use a partir de um agente de codificação
Este repositório inclui uma Agent Skill. Ela
ensina Claude Code, Cursor, Codex e cerca de vinte outros agentes a usar
swissco: todos os comandos e as armadilhas que silenciosamente produzem uma resposta errada.
A skill é o diretório .agents/skills/swissco/, o local entre clientes
que todo agente compatível verifica, com .claude/skills/swissco como link simbólico para ele, de modo que
o Claude Code o encontre no seu próprio. tests/test_skill.py verifica as regras da especificação
contra ele em cada execução, então a skill não pode sair do formato sem que a
suíte diga isso.
npx skills add prospex-ch/swissco-cli
Ela chega no próprio .agents/skills/swissco/ do projeto consumidor, com link simbólico
para o diretório de cada agente. Adicione -g para instalá-la uma vez para cada projeto,
--all para aceitar os padrões sem ser perguntado. swissco ainda precisa estar
no caminho ou acessível via uvx.
O agente pode então responder perguntas como "quais empresas em Zug mencionam blockchain no objeto social" ou "algo mudou na CHE-105.943.826 desde junho" executando o comando certo por conta própria.
Use como servidor MCP
As mesmas seis fontes estão disponíveis como servidor MCP, a partir deste repositório.
Nove ferramentas, uma por comando, exceto watch.
claude mcp add swissco -- uvx swissco-mcp
Cada ferramenta retorna rows, um count e notes. As linhas são os dicionários
que swissco --format json imprime, então um campo carrega o mesmo nome em ambas as
superfícies. As notas carregam o que cada fonte cobre, que é o que transforma um resultado
vazio em uma resposta: a lista da FINMA omite seguradoras e gestores de carteiras, e
cerca de 28.000 entidades suíças possuem um LEI contra aproximadamente 790.000 no
registro.
Ele vive em mcp/, é distribuído como o pacote PyPI
swissco-mcp e o pacote npm de
mesmo nome, e está registrado como ch.prospex/swissco. Referência completa para
cada ferramenta, seus argumentos e suas ressalvas:
swissco-mcp.readthedocs.io.
Acesso e termos
SHAB / Amtsblattportal. A API REST é o canal que o operador oferece para
acesso por máquina: livremente acessível, sem autenticação para dados publicados, sem
limite de taxa documentado, tamanho de página limitado a 2.000. A interface web é proibida por
robots.txt, que não alcança a API. O operador isenta-se de completude, e
apenas o PDF assinado é juridicamente vinculante.
Zefix no LINDAS. Publicado em opendata.swiss, sem credenciais. Os termos de uso comercial nunca foram resolvidos; a página do conjunto de dados declara o que se aplica.
Zefix PublicREST. Exige credenciais emitidas por zefix@bj.admin.ch. Todos os
comandos aqui funcionam sem elas. Fornecê-las via --user/--password ou
ZEFIX_USER/ZEFIX_PASSWORD adiciona capital, status, data de exclusão, nomes anteriores e
relações corporativas a lookup, e uma busca por prefixo de nome a search.
simap. A API de leitura responde sem autenticação. O robots.txt do site proíbe
as rotas de detalhes de projeto do aplicativo de página única, que swissco recusa
terminantemente; ele não diz nada sobre /api, para onde vai toda requisição aqui.
FINMA. Dois arquivos publicados, baixados como qualquer navegador faria. A FINMA republica em vez de versioná-los, então eles são armazenados em cache por uma semana e re-buscados depois disso.
GLEIF. A API de registros responde sem autenticação. A GLEIF publica os dados de LEI para uso de qualquer pessoa, e os termos de uso declaram o que se aplica.
ARAMIS. O serviço público responde sem autenticação e pede para não ser
sobrecarregado, então swissco o ritma e lê um projeto por vez. A exportação em massa de 43 MB
está em um host que a lista de permissões deste cliente omite, que é o motivo pelo qual nenhum comando pode
baixá-la.
Sendo um bom cidadão
Estes são pequenos serviços públicos operados por órgãos federais. swissco envia no máximo uma requisição
a cada 0,5 segundos — uma por segundo para a FINMA, que pede mais espaço — recua
exponencialmente em caso de falha e se identifica com um User-Agent real carregando
a URL deste repositório. --interval pode aumentar esses mínimos e não pode reduzi-los.
Construído sobre
| Pacote | O que faz |
|---|---|
zefix-parser | Zefix: LINDAS SPARQL, PublicREST, validação de UID |
shab-parser | SHAB: descoberta, busca, análise, classificação de eventos em onze tipos |
Ambos são MIT e mantidos junto com este. simap, FINMA, GLEIF e ARAMIS
não possuem cliente, então o swissco carrega o seu próprio para esses quatro.
Observando mais do que uma lista
swissco watch via cron é a versão gratuita do que o Prospex
vende. O Prospex observa todo o registro continuamente, integra-o a contratações, financiamento,
licitações e sinais da web — incluindo o lado de premiação do simap que esta ferramenta
deliberadamente ignora — e informa quais dessas mudanças valem uma ligação. Se
um job de cron e uma lista de UIDs cobrirem isso, esta ferramenta é tudo o que você precisa.
Licença
MIT