swissco: Swiss company data (Zefix, SHAB, simap)
Servidor MCP de Zefix: registro mercantil suizo, gaceta SHAB, licitaciones simap, FINMA, GLEIF y ARAMIS.
Documentación
swissco
Datos de empresas suizas desde la terminal. Busque una empresa por UID, explore 790.000 de ellas por nombre o por objeto social, liste publicaciones del boletín oficial, navegue por licitaciones públicas, verifique una licencia bancaria o vigile una lista de empresas para detectar cambios.
uvx swissco lookup CHE-444.420.929
Todos los datos provienen de seis fuentes de datos abiertos, ninguna de las cuales requiere credenciales: Zefix en LINDAS para el registro mercantil, el Amtsblattportal para el Boletín Oficial Suizo de Comercio, simap.ch para la contratación pública, FINMA para bancos y empresas de valores autorizados, GLEIF para el Identificador de Entidad Legal y la estructura del grupo, y ARAMIS para la investigación financiada con fondos federales.
Construido y mantenido por Prospex, una plataforma suiza de inteligencia de ventas B2B.
Instalación
uvx swissco --help # run it without installing
pip install swissco # or install it
Python 3.14 o superior.
Docker
docker run --rm prospexch/swissco search "Nestlé" --limit 5
La imagen se ejecuta como un usuario sin privilegios y mantiene su estado — los IDs ya vistos de watch
y los archivos FINMA en caché — en /home/swissco/.swissco. Monte un volumen allí
para cualquier cosa que necesite recordar lo que vio la última vez:
docker run --rm -v swissco-state:/home/swissco/.swissco \
prospexch/swissco watch --uid CHE-105.909.036
Las credenciales de Zefix, sin las cuales todos los comandos funcionan, se pasan como variables de entorno:
docker run --rm -e ZEFIX_USER -e ZEFIX_PASSWORD prospexch/swissco lookup CHE-105.909.036
Comandos
Cada comando acepta --format table|json|csv, --limit y --quiet.
swissco lookup
Todo lo que el registro publica sobre una 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
Acepta CHE-444.420.929, CHE444420929, o el UID oculto en otro texto.
swissco search
Empresas por nombre legal o por objeto social: cómo una empresa describe lo que hace, con sus propias palabras, en el 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 acepta un código de dos letras, --legal-form un código eCH-0097 (0106 es una AG,
0107 una GmbH).
swissco publications
Publicaciones del registro mercantil del boletín oficial, en un rango de fechas.
swissco publications --canton ZH --since 2026-08-01
swissco publications --canton ZH --since 2026-08-01 --type CAPITAL_INCREASED
Sin --type, solo se leen las páginas de listado: una solicitud por cada 2.000 publicaciones.
Con --type, se obtiene y clasifica el cuerpo de cada publicación superviviente en los
once tipos de eventos
que shab-parser reconoce, así que primero acote el rango y el cantón.
Los rangos de más de unos diez días se dividen automáticamente en ventanas. La API rechaza cualquier solicitud cuyo desplazamiento de página llegue a 10.000, y el boletín publica alrededor de mil entradas del registro mercantil al día.
swissco events
El historial registral de una empresa.
swissco events CHE-444.420.929 --since 2024-01-01
Las páginas de listado del boletín no llevan UID, solo un título, así que esto resuelve el UID a un nombre legal, conserva las publicaciones cuyo título se parece a ese nombre, luego obtiene esos cuerpos y conserva los eventos cuyo propio UID coincide. La coincidencia de título decide qué vale la pena descargar; el UID del cuerpo decide qué se informa. Los cuerpos obtenidos se almacenan en caché bajo el directorio de estado, por lo que una re-ejecución superpuesta no cuesta nada.
swissco watch
Qué cambió desde la última vez.
printf 'CHE-444.420.929\nCHE-105.943.826\n' > uids.txt
swissco watch uids.txt --state ~/.swissco/
Cada empresa se compara mediante una huella digital, un resumen de sus campos de identidad, dirección y
objeto social. Sale con 10 cuando algo cambió y con 0 cuando no cambió nada, para que cron
pueda ramificar según ello:
0 7 * * * swissco watch ~/uids.txt --quiet --format json > ~/changes.json \
|| mail -s "registry changes" me@example.com < ~/changes.json
Un UID que ha salido del conjunto de datos se informa como ya no está en el conjunto de datos, nunca como eliminado. LINDAS solo contiene entidades activas, por lo que un UID puede salir del conjunto de datos después de una reinscripción, una corrección o un retraso en la publicación.
swissco tenders
Proyectos de contratación pública de simap, por cantón y fecha de publicación.
$ 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 y --type son repetibles; --lang elige en qué idioma se informan el título y el
comprador. La paginación es un cursor en lugar de un desplazamiento, por lo que un rango amplio
cuesta páginas en lugar de fallar.
El rango de fechas filtra la publicación más reciente de cada proyecto, no la adjudicación que contiene. Un proyecto adjudicado en marzo cuya publicación más reciente es una corrección de agosto aparece solo en un rango que cubra agosto.
swissco vendor
Si una empresa está registrada como proveedor en 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
Un UID se resuelve a un nombre legal, se busca y luego se confirma contra el uidNo propio del
directorio. El nombre encuentra a los candidatos; el UID decide entre
ellos — el directorio contiene tanto una "Egli Gartenbau AG Sursee" como una "Egli
Gartenbau AG Uster".
No existe ningún comando para saber qué ha ganado una empresa. El proveedor nombrado en una adjudicación de simap no lleva UID, solo texto libre escrito por una oficina de contratación. Coincidir esos nombres produciría una respuesta plausible que a veces se refiere a una empresa diferente, por lo que no se ofrece.
swissco finma
Los bancos y empresas de valores autorizados por FINMA, unidos a un 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
También swissco finma "Raiffeisen", --licence, --category y --finma en
lookup. Ambos archivos se almacenan en caché durante una semana bajo el directorio de estado.
Solo bancos y empresas de valores: FINMA licencia aseguradoras, gestores de carteras y sociedades de gestión de fondos en listas separadas que esto no lee. Un fallo significa "no está en esta lista", nunca "sin licencia".
swissco lei
El Identificador de Entidad Legal de una empresa y el grupo en el que se consolida.
$ 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 enumera lo que esta empresa consolida en lugar de contarlo, y
--lei en lookup integra los mismos campos en un perfil de empresa.
La matriz suele ser extranjera, y esa es la razón para ejecutar esto: el propietario en el extranjero de una filial suiza no tiene entrada en el registro mercantil, por lo que el registro no puede responder la pregunta en absoluto.
Los registros de Nivel 2 de GLEIF documentan la consolidación contable: una matriz es la entidad que consolida a esta en sus cuentas, lo que puede hacer sin poseerla por completo. Alrededor de 28.000 entidades suizas tienen un LEI frente a aproximadamente 790.000 en el registro, por lo que un fallo significa "sin LEI registrado" y nada más.
swissco research
Proyectos de investigación financiados con fondos federales de ARAMIS, el registro de la Confederación de mandatos de investigación e innovación. Incluye fondos de Innosuisse y SNSF.
$ 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
Un UID se confirma contra el UID de participante propio de cada proyecto, por lo que cada fila
informada es exacta. El texto libre se busca tal como se proporciona y cada coincidencia regresa con
sus organizaciones participantes. --limit limita cuántos candidatos se procesan,
ya que la lista de participantes cuesta una solicitud por proyecto, y --lang elige DE,
EN, FR o IT.
ARAMIS busca en títulos de proyectos, resúmenes y el campo de texto libre del contratista, e indexa la lista estructurada de participantes bajo ninguno de ellos. Una empresa nombrada solo como socio estructurado no se puede encontrar, que es donde suelen estar los socios de implementación de Innosuisse, por lo que un resultado vacío significa solo que ningún proyecto menciona a esta empresa por nombre. No es evidencia de que la empresa no haya recibido fondos federales de investigación.
swissco lee la organización, el rol, el UID y el lugar de un
participante. ARAMIS también publica el nombre del investigador, la dirección de correo electrónico y los
números de teléfono, y ninguno de esos tiene un campo en el analizador.
Salida
--format es lo único que cambia la salida. Un comando canalizado a jq y
el mismo comando observado por una persona producen bytes idénticos, por lo que un script que funciona
en su terminal funciona en CI.
table y csv se generan a partir de las mismas filas que json serializa, por lo que una columna
no puede aparecer en un formato y faltar en otro. Las notas de progreso van a stderr, donde
--quiet las silencia; los errores van a stderr como un único objeto JSON.
Úselo desde un agente de codificación
Este repositorio incluye una habilidad de agente. Enseña
a Claude Code, Cursor, Codex y unos veinte otros agentes cómo manejar
swissco: cada comando y las trampas que producen silenciosamente una respuesta incorrecta.
La habilidad es el directorio .agents/skills/swissco/, la ubicación
multicliente que todo agente compatible escanea, con .claude/skills/swissco enlazado simbólicamente a él para que
Claude Code lo encuentre en el suyo. tests/test_skill.py verifica las reglas de la especificación
contra él en cada ejecución, por lo que la habilidad no puede desviarse del formato sin que
el conjunto lo indique.
npx skills add prospex-ch/swissco-cli
Aterriza en el .agents/skills/swissco/ propio del proyecto consumidor, enlazado simbólicamente
al directorio de cada agente. Añada -g para instalarlo una vez para cada proyecto,
--all para aceptar los valores predeterminados sin que se le pregunte. swissco todavía tiene que estar
en la ruta o ser accesible a través de uvx.
El agente puede entonces responder preguntas como "qué empresas en Zug mencionan blockchain en su objeto social" o "ha cambiado algo en CHE-105.943.826 desde junio" ejecutando el comando correcto por sí mismo.
Úselo como servidor MCP
Las mismas seis fuentes están disponibles como servidor MCP, desde este repositorio.
Nueve herramientas, una por comando excepto watch.
claude mcp add swissco -- uvx swissco-mcp
Cada herramienta devuelve rows, un count y notes. Las filas son los dicts
que swissco --format json imprime, por lo que un campo lleva el mismo nombre en ambas
superficies. Las notas indican qué cubre cada fuente, que es lo que convierte un resultado
vacío en una respuesta: la lista de FINMA omite aseguradoras y gestores de carteras, y
alrededor de 28.000 entidades suizas tienen un LEI frente a aproximadamente 790.000 en el
registro.
Vive en mcp/, se distribuye como el paquete PyPI
swissco-mcp y el paquete npm del
mismo nombre, y está registrado como ch.prospex/swissco. Referencia completa para
cada herramienta, sus argumentos y sus advertencias:
swissco-mcp.readthedocs.io.
Acceso y términos
SHAB / Amtsblattportal. La API REST es el canal que el operador ofrece para
acceso automatizado: libremente accesible, sin autenticación para datos publicados, sin
límite de velocidad documentado, tamaño de página limitado a 2.000. La interfaz web está prohibida por
robots.txt, que no alcanza la API. El operador niega la integridad, y solo
el PDF firmado es legalmente vinculante.
Zefix en LINDAS. Publicado en opendata.swiss, sin credenciales. Los términos de uso comercial nunca se han resuelto; la página del conjunto de datos indica lo que aplica.
Zefix PublicREST. Requiere credenciales emitidas por zefix@bj.admin.ch. Cada
comando aquí funciona sin ellas. Proporcionarlas a través de --user/--password o
ZEFIX_USER/ZEFIX_PASSWORD añade capital, estado, fecha de eliminación, nombres anteriores y
relaciones corporativas a lookup, y una búsqueda por prefijo de nombre a search.
simap. La API de lectura responde sin autenticación. El robots.txt del sitio prohíbe
las rutas de detalle de proyecto de la aplicación de una sola página, que swissco rechaza rotundamente;
no dice nada sobre /api, donde va cada solicitud aquí.
FINMA. Dos archivos publicados, descargados como lo haría cualquier navegador. FINMA republica en lugar de versionarlos, por lo que se almacenan en caché durante una semana y se vuelven a obtener después de eso.
GLEIF. La API de registros responde sin autenticación. GLEIF publica los datos LEI para que cualquiera los use, y los términos de uso indican lo que aplica.
ARAMIS. El servicio público responde sin autenticación y pide que no se
inunde, por lo que swissco lo regula y lee un proyecto a la vez. La exportación masiva de 43 MB
está en un host que la lista de permitidos de este cliente omite, por lo que ningún comando puede
descargarla.
Ser un buen ciudadano
Estos son pequeños servicios públicos gestionados por oficinas federales. swissco envía una solicitud
cada 0,5 segundos como máximo — una por segundo para FINMA, que pide más margen — retrocede
exponencialmente ante fallos y se identifica con un User-Agent real que lleva
la URL de este repositorio. --interval puede elevar esos mínimos y no puede reducirlos.
Construido sobre
| Paquete | Función |
|---|---|
zefix-parser | Zefix: LINDAS SPARQL, PublicREST, validación de UID |
shab-parser | SHAB: descubrimiento, obtención, análisis, clasificación de eventos en once tipos |
Ambos tienen licencia MIT y se mantienen junto con este. simap, FINMA, GLEIF y ARAMIS
no incluyen un cliente, por lo que swissco lleva el suyo propio para esos cuatro.
Observar más que una lista
swissco watch desde cron es la versión gratuita de lo que Prospex
vende. Prospex observa todo el registro de forma continua, lo combina con contratación, financiación,
licitaciones y señales web — incluido el lado de adjudicación de simap que esta herramienta
deja deliberadamente de lado — y te indica cuáles de esos cambios merecen una llamada. Si
un trabajo cron y una lista de UID son suficientes, esta herramienta es todo lo que necesitas.
Licencia
MIT