> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cucu.bo/llms.txt
> Use this file to discover all available pages before exploring further.

# Administración

> Las 9 herramientas MCP de administración: tenants, API keys, sectores, CAFC y POS.

## Administración

Herramientas de onboarding y gestión de la plataforma: alta de tenants, API keys, autorización de sectores, rangos CAFC y configuración de puntos de venta.

<Warning>
  Todas estas herramientas **requieren permisos de administrador CUCU**. Un tenant regular con
  `sk_live_`/`sk_test_` recibe acceso denegado.
</Warning>

<CardGroup cols={2}>
  <Card title="listarTenants" icon="list" href="#listartenants">
    Lista todos los tenants activos: código, nombre, NIT, estado, si tiene
    API Key y si es sandbox.
  </Card>

  <Card title="verTenant" icon="magnifying-glass" href="#vertenant">
    Detalle de un tenant, incluyendo sus companies, sucursales y puntos de venta.
  </Card>

  <Card title="crearTenantCompleto" icon="user-plus" href="#creartenantcompleto">
    Crea tenant + company + sucursal (Casa Matriz) + POS + API Key en una
    sola operación. Retorna la API Key (se muestra una vez).
  </Card>

  <Card title="generarApiKey" icon="key" href="#generarapikey">
    Genera o regenera la API Key de un tenant. La anterior se invalida.
  </Card>

  <Card title="revocarApiKey" icon="ban" href="#revocarapikey">
    Revoca la API Key de un tenant, desactivando su acceso de inmediato.
  </Card>

  <Card title="cambiarEstadoTenant" icon="toggle-on" href="#cambiarestadotenant">
    Activa o desactiva un tenant. Un tenant inactivo no puede autenticarse.
  </Card>

  <Card title="agregarSectorCompany" icon="layer-group" href="#agregarsectorcompany">
    Autoriza un documento sector SIAT adicional para una company (catálogo
    multi-sector).
  </Card>

  <Card title="cargarRangoCafc" icon="hashtag" href="#cargarrangocafc">
    Carga un rango CAFC (autorización de facturación por contingencia manual)
    para una company.
  </Card>

  <Card title="configurarPos" icon="circle-check" href="#configurarpos">
    Marca un punto de venta como configurado (listo para facturar).
  </Card>
</CardGroup>

***

<h2 id="listartenants\">
  listarTenants \\
</h2>

Lista todos los tenants activos del sistema: código, nombre, NIT, estado, si tiene API Key y si es sandbox.

| Parámetro   | Tipo | Requerido | Descripción            |
| ----------- | ---- | --------- | ---------------------- |
| *(ninguno)* | -    | -         | No requiere parámetros |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Lista todos los tenants"

***

<h2 id="vertenant\">
  verTenant \\
</h2>

Ver el detalle de un tenant específico, incluyendo sus companies, sucursales y puntos de venta.

| Parámetro    | Tipo   | Requerido | Descripción                          |
| ------------ | ------ | --------- | ------------------------------------ |
| `tenantCode` | String | Sí        | Código del tenant (ej. `mi-cliente`) |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Muéstrame el detalle del tenant mi-cliente"

***

<h2 id="creartenantcompleto\">
  crearTenantCompleto \\
</h2>

Crea un tenant completo con company, sucursal (Casa Matriz), punto de venta y API Key en una sola operación. Retorna la API Key (se muestra **una sola vez**).

| Parámetro     | Tipo   | Requerido | Descripción                               |
| ------------- | ------ | --------- | ----------------------------------------- |
| `requestJson` | String | Sí        | JSON con los datos del tenant (ver abajo) |

**Requiere autenticación:** Sí (admin CUCU)

<Expandable title="Estructura del JSON de request">
  ```json theme={"system"}
  {
    "tenantCode": "mi-cliente",
    "nit": "1023456789",
    "businessName": "EMPRESA DEMO S.R.L.",
    "tradeName": "Demo",
    "ownerName": "Juan Perez",
    "email": "demo@ejemplo.com",
    "phone": "70000000",
    "address": "Av. Ejemplo #123",
    "city": "La Paz",
    "department": "La Paz",
    "municipality": "La Paz",
    "siatSystemCode": "...",
    "siatDelegateToken": "...",
    "siatModality": 1,
    "siatEnvironment": 2,
    "sandbox": true
  }
  ```

  | Campo             | Descripción                                       |
  | ----------------- | ------------------------------------------------- |
  | `siatModality`    | `1` electrónica, `2` computarizada                |
  | `siatEnvironment` | `1` producción, `2` piloto                        |
  | `sandbox`         | `true` → API Key `sk_test_`; `false` → `sk_live_` |
</Expandable>

**Ejemplo de uso con AI:**

> "Crea un tenant para EMPRESA DEMO S.R.L. con NIT 1023456789 en sandbox"

***

<h2 id="generarapikey\">
  generarApiKey \\
</h2>

Genera o regenera la API Key de un tenant. La key anterior se invalida. La nueva se muestra **una sola vez**.

| Parámetro    | Tipo    | Requerido | Descripción                                                            |
| ------------ | ------- | --------- | ---------------------------------------------------------------------- |
| `tenantCode` | String  | Sí        | Código del tenant                                                      |
| `sandbox`    | boolean | Sí        | `true` para sandbox (`sk_test_`), `false` para producción (`sk_live_`) |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Regenera la API Key de producción del tenant mi-cliente"

***

<h2 id="revocarapikey\">
  revocarApiKey \\
</h2>

Revoca la API Key de un tenant, desactivando su acceso inmediatamente.

| Parámetro    | Tipo   | Requerido | Descripción                 |
| ------------ | ------ | --------- | --------------------------- |
| `tenantCode` | String | Sí        | Código del tenant a revocar |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Revoca la API Key del tenant mi-cliente"

***

<h2 id="cambiarestadotenant\">
  cambiarEstadoTenant \\
</h2>

Activa o desactiva un tenant. Un tenant inactivo no puede autenticarse.

| Parámetro    | Tipo    | Requerido | Descripción                                  |
| ------------ | ------- | --------- | -------------------------------------------- |
| `tenantCode` | String  | Sí        | Código del tenant                            |
| `activo`     | boolean | Sí        | `true` para activar, `false` para desactivar |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Desactiva el tenant mi-cliente"

***

<h2 id="agregarsectorcompany\">
  agregarSectorCompany \\
</h2>

Autoriza un documento sector SIAT adicional para una company (catálogo multi-sector). La autorización del SIN debe cubrir ese sector.

| Parámetro    | Tipo   | Requerido | Descripción                                                                                                                                             |
| ------------ | ------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `companyId`  | String | Sí        | UUID de la company                                                                                                                                      |
| `sectorCode` | int    | Sí        | Código de documento sector SIAT (`1` Compra-Venta, `17` Hospitales, `24` Notas, …). Ver [catálogo de sectores](/api/overview#tipos-de-documento-sector) |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Autoriza el sector 16 (Hoteles) para la company abc123"

***

<h2 id="cargarrangocafc\">
  cargarRangoCafc \\
</h2>

Carga un rango CAFC (Código de Autorización de Facturación por Contingencia, emitido por el Portal SIAT) para una company. Se usa en la facturación manual de contingencia.

| Parámetro    | Tipo   | Requerido | Descripción                                       |
| ------------ | ------ | --------- | ------------------------------------------------- |
| `companyId`  | String | Sí        | UUID de la company                                |
| `cafc`       | String | Sí        | Código CAFC emitido por el Portal SIAT            |
| `sectorCode` | int    | Sí        | Código de documento sector SIAT del rango         |
| `posId`      | String | No        | UUID del punto de venta (vacío = toda la company) |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Carga el CAFC ABC123 para la company abc123, sector 1"

***

<h2 id="configurarpos\">
  configurarPos \\
</h2>

Marca un punto de venta como configurado (listo para facturar). Llamar después de sincronizar CUIS, CUFD y catálogos.

| Parámetro | Tipo   | Requerido | Descripción             |
| --------- | ------ | --------- | ----------------------- |
| `posId`   | String | Sí        | UUID del punto de venta |

**Requiere autenticación:** Sí (admin CUCU)

**Ejemplo de uso con AI:**

> "Marca el POS 660e... como configurado"
