# io.github.francofuji/cemis-directorio

> Directorio de empresas cubanas, oportunidades de negocio y reformas económicas 2026 (cemis.io)

- name: io.github.francofuji/cemis-directorio
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 74/100 flags: no-repository
- quality: 92/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.francofuji%2Fcemis-directorio
- tools: https://api.protogrid.dev/v1/servers/io.github.francofuji%2Fcemis-directorio/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "cemis-directorio": {
      "type": "http",
      "url": "https://mcp.cemis.io/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 35
- drivers: +reachable +uptime-99% ~updated-40d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 92/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,801 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 1,801 tokens to load them all
- tool set hash: e59b5f6a1033b2b1fcdbdc1aa03f4715
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.francofuji/cemis-directorio.svg)](https://protogrid.dev/servers/io.github.francofuji/cemis-directorio)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.cemis.io/mcp (streamable-http, auth none, reachable true, uptime30d 0.991453)

## Packages

_none_

## Tools (8)

- `buscar_empresas`: Busca empresas del directorio CEMIS combinando filtros con AND. Todos son opcionales.

    - sector: uno de los valores devueltos por listar_sectores(), o un sector de la
      taxonomía de matching de reformas (ver impacto_de_reforma()) que todavía no
      tiene ninguna empresa asignada — en ese caso el resultado es una lista vacía
      con una nota explicativa, no un error.
    - provincia: una de las 16 provincias cubanas (ver listar_provincias()).
    - objetivo: coincidencia parcial contra 'que_busca' de la empresa (ej. 'inversión',
      'socio estratégico', 'distribuidor', 'exportar').
    - verificada: True para empresas con datos de contacto verificados, False para no
      verificadas, None (default) para no filtrar.
    - limite: máximo de resultados a devolver (default 50); el total real de matches
      siempre se informa en 'total_encontrado' aunque exceda el límite.

    Devuelve una ficha resumida por empresa, no el perfil completo (usá ficha_empresa()
    para eso).
    
- `empresas_por_oportunidad`: Dado un id (ej. 'opp-001') o título (exacto o aproximado) de una oportunidad de
    negocio, devuelve las empresas del directorio CEMIS relacionadas: primero las
    curadas a mano dentro de la propia oportunidad, luego las encontradas automáticamente
    porque su sector matchea por palabra clave con el texto de la oportunidad.
- `empresas_tecnologicas`: Devuelve las empresas cubanas del sector 'TICs y economía digital'
    (desarrollo de software, soluciones informáticas, TI y telemática) —
    el mismo dataset que arma el hub público /empresas-tecnologicas-cuba/ de
    cemis.io.

    A diferencia de buscar_empresas(sector="TICs y economía digital"), esta
    tool también cruza el sector con las reformas del Eje 21 (ámbito digital,
    IA y economía del conocimiento) y las oportunidades de negocio asociadas
    a esas reformas — el mismo cruce regulatorio que distingue al hub de un
    directorio plano.

    limite: máximo de empresas a devolver en 'empresas' (default 50); el total
    real siempre está en 'total' aunque exceda el límite.
    
- `ficha_empresa`: Devuelve el perfil estructurado completo de una empresa del directorio CEMIS,
    identificada por su slug (o por nombre exacto/aproximado si no sabés el slug),
    incluyendo sus oportunidades de negocio relacionadas y las transformaciones/reformas
    que la afectan. Si no se encuentra, devuelve sugerencias aproximadas.
- `impacto_de_reforma`: Herramienta principal: dado el número o título (exacto o aproximado) de una
    transformación/reforma de 2026, devuelve su impacto sobre el directorio CEMIS.

    El criterio de impacto varía según la naturaleza de la reforma (ver
    ambito_transformaciones.py, curado a mano transformación por transformación):
    - Reformas cuyo alcance real es un TIPO de empresa (estatal/no estatal/
      inversión extranjera/cooperativa) matchean por tipo, no por sector, y el
      resultado lo indica con "criterio_de_impacto": "tipo_de_empresa".
    - Reformas TRANSVERSALES (fiscales/cambiarias/laborales de alcance nacional,
      o que explícitamente aplican a "todos los actores económicos") devuelven
      "alcance": "transversal" con la metadata de la reforma, sin enumerar las
      252 empresas del directorio (no aporta valor).
    - Reformas que NO APLICAN a un actor económico del directorio (reforma de
      aparato de gobierno, política social para personas, deuda soberana) lo
      dicen explícitamente en vez de devolver un array vacío sin explicación.
    - El resto matchea por SECTOR de industria vía EMPRESA_SECTOR_KEYWORDS
      (mismo criterio que cemis.io, con el fix de normalización de acentos
      de 2026-08-23 — antes "turis" no matcheaba "turística").

    En todos los casos incluye oportunidades_directas (vínculo curado
    transformacion_num) y el estado de implementación regulatoria si está
    disponible (ver monitor de reformas de cemis.io).
- `listar_provincias`: Devuelve las provincias válidas para filtrar empresas, derivadas de los datos reales
    del directorio. Usalo antes de llamar a buscar_empresas() con un filtro de provincia.
- `listar_sectores`: Devuelve los sectores válidos para filtrar empresas, derivados de los datos reales
    del directorio (no del formulario web, que puede estar desactualizado). Usalo antes de
    llamar a buscar_empresas() u oportunidades_por_sector() con un filtro de sector.
- `oportunidades_por_sector`: Dado un sector (ver listar_sectores(), o un sector de la taxonomía de matching
    de reformas que todavía no tiene empresas asignadas — ver impacto_de_reforma()),
    devuelve las oportunidades de negocio relevantes: primero las curadas a mano
    (vinculadas directamente a alguna empresa de ese sector), luego las encontradas
    automáticamente por coincidencia de palabras clave de sector (mismo criterio que
    usa cemis.io). Si el sector no tiene empresas asignadas hoy, 'oportunidades_curadas'
    sale vacía (no puede haber curadas sin empresas) pero las automáticas por keyword
    sí pueden aparecer, porque esas se buscan directamente en el texto de las
    oportunidades/transformaciones, no a través de las empresas.
