# Herramientas · Presencia

> Herramientas MCP del módulo Presencia (coworking): el aforo, Llegué y Me fui, quién está aquí, visitantes, historial, corrección y eliminación de visitas y los enlaces de quiosco de la recepción.

El módulo [Presencia](/espacos/presenca) con el asistente: ver el aforo, marcar la llegada y la salida (tuya, de un miembro o de un visitante), listar quién está en el espacio y el historial, corregir o eliminar visitas y generar y revocar los enlaces de quiosco. El quiosco en sí es una pantalla del visitante en el iPad de la recepción; el asistente **gestiona** los enlaces, no maneja el quiosco.

Cada herramienta lleva un sello: <span class="tool-kind tool-kind-read">Solo consulta</span> no cambia nada, <span class="tool-kind tool-kind-write">Modifica</span> crea o cambia algo al momento, y <span class="tool-kind tool-kind-confirm">Pide confirmación</span> solo actúa después de tu sí a un resumen. Consulta [Dinero y confirmación](/mcp/dinheiro-e-confirmacao).

## En resumen

| Herramienta | Qué hace | Rol mínimo | Tipo |
|---|---|---|---|
| [`get_attendance_overview`](#get-attendance-overview) | El aforo y tu visita abierta | Cualquiera que vea el espacio | <span class="tool-kind tool-kind-read">Solo consulta</span> |
| [`check_in`](#check-in) | Registra la llegada, la tuya o la de un miembro | Cualquiera (la tuya); moderador o financiero (de otro) | <span class="tool-kind tool-kind-write">Modifica</span> |
| [`check_out`](#check-out) | Registra la salida | Cualquiera (la tuya); moderador o financiero (de otro) | <span class="tool-kind tool-kind-write">Modifica</span> |
| [`list_present`](#list-present) | Quién está en el espacio ahora | Moderador o financiero | <span class="tool-kind tool-kind-read">Solo consulta</span> |
| [`list_visits`](#list-visits) | El historial de visitas, con filtros | Moderador o financiero (hoy); administrador (cualquier día) | <span class="tool-kind tool-kind-read">Solo consulta</span> |
| [`list_my_visits`](#list-my-visits) | Tus visitas y el resumen del mes | Cualquiera | <span class="tool-kind tool-kind-read">Solo consulta</span> |
| [`update_visit`](#update-visit) | Corrige la llegada o la salida de una visita | Moderador o financiero (hoy); administrador (cualquier día) | <span class="tool-kind tool-kind-write">Modifica</span> |
| [`delete_visit`](#delete-visit) | Elimina una visita | Administrador | <span class="tool-kind tool-kind-confirm">Pide confirmación</span> |
| [`check_guest_in`](#check-guest-in) | Registra la llegada de un visitante | Moderador o financiero | <span class="tool-kind tool-kind-write">Modifica</span> |
| [`list_attendance_kiosks`](#list-attendance-kiosks) | Los dispositivos de quiosco del espacio | Moderador o financiero | <span class="tool-kind tool-kind-read">Solo consulta</span> |
| [`create_attendance_kiosk`](#create-attendance-kiosk) | Genera el enlace de un quiosco (aparece una vez) | Moderador | <span class="tool-kind tool-kind-write">Modifica</span> |
| [`revoke_attendance_kiosk`](#revoke-attendance-kiosk) | Revoca el enlace de un quiosco | Moderador | <span class="tool-kind tool-kind-confirm">Pide confirmación</span> |

El espacio se crea con [`create_space`](/mcp/ferramentas-comunidade#create-space) y `module: "attendance"`, con el argumento `attendance` para la configuración; [`update_space`](/mcp/ferramentas-comunidade#update-space) cambia solo lo que envíes y mantiene el resto.

El equipo, aquí, es el propietario, el administrador, el moderador y el financiero; el financiero lee y marca, pero no genera ni revoca enlaces de quiosco. Los roles son los de las rutas: el asistente nunca hace más de lo que la persona conectada haría en la pantalla.

## La configuración del espacio

El argumento `attendance` de `create_space` y `update_space` acepta:

| Campo | Tipo | Descripción |
|---|---|---|
| `self_check_in` | `off`, `button` o `code` | Quién marca la llegada: `off`, solo el equipo; `button`, el miembro, con el botón **Llegué** (`code` aún no está disponible) |
| `capacity` | número de 1 a 100000, o `null` | El aforo, informativo. `null` quita el límite |
| `auto_checkout_time` | `HH:MM` | La [salida automática](/espacos/presenca#salida-automatica), en la zona horaria de la comunidad (por defecto `23:59`) |
| `show_who_is_here` | `staff` | Quién ve los nombres: solo el equipo |
| `kiosk.guest_fields` | `{company, phone}`, cada uno `off`, `optional` o `required` | Lo que la pantalla del quiosco pide además del nombre |
| `kiosk.notify_host` | verdadero o falso | Avisa al anfitrión por correo cuando llega el visitante (por defecto: sí) |
| `kiosk.reset_seconds` | 5 a 60 | En cuántos segundos la pantalla del quiosco vuelve al inicio (por defecto: 10) |

## `get_attendance_overview`

<span class="tool-kind tool-kind-read">Solo consulta</span>

**Aforo del espacio.** Solo el número de personas y el aforo (nunca nombres), la visita abierta de quien pregunta y el modo de check-in (`off`, `button` o `code`). *Rol mínimo: cualquiera que vea el espacio.*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | El espacio de Presencia |

**Pídelo así:** *"¿Cuántas personas hay ahora en la Unidad Centro?"*

## `check_in`

<span class="tool-kind tool-kind-write">Modifica</span>

**Registrar la llegada.** Sin `profile_id`, es **tu** llegada, y solo si el espacio deja marcar al miembro (el equipo siempre puede marcarse). Con `profile_id`, el equipo registra la llegada de **otro miembro**; al miembro común se le rechaza. A quien no tiene acceso al espacio (plan vencido, fuera del grupo) se le rechaza, incluso por el equipo. Es **idempotente**: con una visita ya abierta, devuelve esa visita (`already_checked_in: true`). Un visitante sin cuenta es [`check_guest_in`](#check-guest-in). *Rol: cualquiera (la tuya); moderador o financiero (de otro).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `profile_id` | id | No | Solo el equipo: el miembro a marcar (`list_members`). Sin él, eres tú |

**Devuelve:** `visit` y `already_checked_in`.

**Pídelo así:** *"Registra mi llegada a la Unidad Centro."* · *"Marca la llegada de María al coworking."*

## `check_out`

<span class="tool-kind tool-kind-write">Modifica</span>

**Registrar la salida.** Sin parámetros además del espacio, cierra **tu** visita abierta. El equipo cierra la de un miembro (`profile_id`) o cualquier visita abierta (`visit_id`, de `list_present`). Sin visita abierta, la respuesta es `409`. *Rol: cualquiera (la tuya); moderador o financiero (de otro).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `profile_id` | id | No | Solo el equipo: el miembro cuya visita cerrar |
| `visit_id` | id | No | La visita abierta a cerrar (el equipo; el miembro, solo la suya) |

**Pídelo así:** *"Me voy."*

## `list_present`

<span class="tool-kind tool-kind-read">Solo consulta</span>

**Quién está aquí.** Las visitas abiertas, de miembros y de visitantes, de la más reciente a la más antigua, con el nombre y la hora de llegada, más el recuento y el aforo. El miembro ve solo el número, en `get_attendance_overview`. *Rol mínimo: moderador (o financiero).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `page`, `limit` | números | No | Paginación (hasta 100 por página) |

**Pídelo así:** *"¿Quién está ahora en la casa?"*

## `list_visits`

<span class="tool-kind tool-kind-read">Solo consulta</span>

**El historial.** Las visitas del espacio, de la más reciente a la más antigua: quién, llegada, salida, el tipo (miembro o visitante) y si está abierta o se cerró automáticamente. El administrador y el propietario leen cualquier período; el moderador y el financiero ven **solo hoy** (la API reduce el intervalo). *Rol mínimo: moderador (o financiero).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `profile_id` | id | No | Solo este miembro |
| `kind` | `member` o `guest` | No | Miembros o visitantes |
| `open` | verdadero o falso | No | `true`: solo quien sigue aquí |
| `from`, `to` | fecha | No | `AAAA-MM-DD` o ISO 8601, leídos en la zona horaria de la comunidad |
| `page`, `limit` | números | No | Paginación |

**Pídelo así:** *"¿Cuántos visitantes vinieron la semana pasada?"*

## `list_my_visits`

<span class="tool-kind tool-kind-read">Solo consulta</span>

**Tus visitas.** Tu historial, de la más reciente a la más antigua, con el resumen del mes (visitas, días y minutos) en la zona horaria de la comunidad. *Rol mínimo: cualquiera.*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | No | Solo este espacio de Presencia |
| `page`, `limit` | números | No | Paginación |

**Pídelo así:** *"¿Cuántos días he ido al coworking este mes?"*

## `update_visit`

<span class="tool-kind tool-kind-write">Modifica</span>

**Corregir una visita.** Cambia la llegada (`check_in_at`) y/o la salida (`check_out_at`). La salida no puede ser anterior a la llegada ni estar en el futuro; enviar la salida en una visita abierta la **cierra**. El administrador y el propietario corrigen cualquier día; el moderador y el financiero, solo la visita de hoy y con las fechas dentro de hoy (ayer devuelve `403`). La corrección entra en el [registro de actividad](/membros/registros-de-atividades) con quién la hizo. *Rol mínimo: moderador (o financiero).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `visit_id` | id | Sí | De `list_visits` o `list_present` |
| `check_in_at` | fecha y hora | No | ISO 8601 |
| `check_out_at` | fecha y hora | No | ISO 8601 |

**Pídelo así:** *"Pedro olvidó marcar la salida: se fue a las 18:00. Cierra su visita."*

## `delete_visit`

<span class="tool-kind tool-kind-confirm">Pide confirmación</span>

**Eliminar una visita.** La visita sale de las listas y de los números (una abierta deja de contar en el aforo) y la eliminación entra en el registro de actividad. No elimina al miembro. *Rol mínimo: administrador.*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `visit_id` | id | Sí | De `list_visits` |

**Devuelve:** en la primera llamada, el resumen y el código de confirmación.

## `check_guest_in`

<span class="tool-kind tool-kind-write">Modifica</span>

**Registrar un visitante.** El equipo registra la llegada de quien **no tiene cuenta**, con el miembro que lo recibe (el anfitrión, que tiene que tener acceso al espacio). La empresa y el teléfono se piden o se rechazan según la configuración del quiosco. Es idempotente por **nombre y anfitrión**: con la visita abierta, devuelve `already_checked_in: true`. Si el espacio avisa a los anfitriones, este recibe [un correo](/espacos/presenca#correo-al-residente). El visitante cuenta en el aforo. *Rol mínimo: moderador (o financiero).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `guest_name` | texto | Sí | El nombre del visitante (hasta 100 caracteres) |
| `host_profile_id` | id | Sí | El miembro que lo recibe (`list_members`) |
| `guest_company` | texto | No | La empresa |
| `guest_phone` | texto | No | El teléfono |

**Pídelo así:** *"Registra al visitante Pedro Alves, de Acme, que viene a ver a Ana."*

## `list_attendance_kiosks`

<span class="tool-kind tool-kind-read">Solo consulta</span>

**Los quioscos.** Los dispositivos del espacio, activos y revocados: nombre, quién lo creó, cuándo, el último uso y el estado. **Nunca el enlace**, que solo aparece al crearlo. *Rol mínimo: moderador (o financiero).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |

## `create_attendance_kiosk`

<span class="tool-kind tool-kind-write">Modifica</span>

**Generar el enlace de un quiosco.** Uno por iPad o lugar. Devuelve `kiosk`, la `url` y un `warning`: la URL aparece **una sola vez** y es **secreta**, como una contraseña. Quien la tiene registra visitantes. El asistente pide a la persona que la abra en el dispositivo y no la comparta; si se pierde, hay que revocar y generar otra. *Rol mínimo: moderador (propietario, administrador o moderador; el financiero no).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `name` | texto | Sí | El nombre del dispositivo, hasta 80 caracteres (por ejemplo, "Tablet de la recepción") |

**Pídelo así:** *"Genera el enlace del quiosco del iPad de la recepción de la Unidad Centro."*

## `revoke_attendance_kiosk`

<span class="tool-kind tool-kind-confirm">Pide confirmación</span>

**Revocar un quiosco.** El enlace deja de funcionar **al instante** y no vuelve (genera otro). Las visitas ya registradas se mantienen. *Rol mínimo: moderador (propietario, administrador o moderador).*

| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `space` | id o enlace | Sí | |
| `kiosk_id` | id | Sí | De `list_attendance_kiosks` |

**Devuelve:** en la primera llamada, el resumen (el nombre y el último uso del dispositivo) y el código de confirmación.

## Relacionados

- [Presencia](/espacos/presenca)
- [Herramientas](/mcp/ferramentas)
- [Dinero y confirmación](/mcp/dinheiro-e-confirmacao)
- [Recetas](/mcp/receitas)
