# NovaFlow agent skill

Public guide: https://gonovaflow.com/ai-agent-guide // pragma: allowlist secret
Server: `https://api.gonovaflow.com/mcp`
Scope: `novaflow:read`

## Connect with OAuth

1. In Claude, ChatGPT, or Gemini, add a custom connector with the server URL above.
2. The host redirects to `https://app.gonovaflow.com/oauth/mcp/authorize`.
3. Sign in with your NovaFlow user and pick **one** sub-account.
4. The grant is `novaflow:read` only. Writes and sends are not granted.

Redirects are an exact allowlist (Claude and ChatGPT). Dynamic client registration is limited to 10 per hour per IP.

## Scoping

The sub-account is fixed on the grant. Tools read with your Supabase session, so row-level security applies, and membership is checked again on each call. If your membership is assigned-only, you only see your records. Sending `subAccountId` returns `subaccount_locked`. An id from another sub-account returns `not_found`.

## Tool catalog

### get_workspace_scope

Alcance de la conexión

Alcance de esta conexión: subcuenta, rol, visibilidad y modelo operativo (CRM estándar o piso/demos). Read-only. No acepta otra subcuenta.

### get_dashboard_snapshot

Tablero del periodo

Tablero del periodo según el modelo de la subcuenta: CRM (dashboard móvil) o piso (demostraciones/ventas). Signals ya calculados. Sin nombres, teléfonos ni mensajes.

### get_period_lead_breakdown

Desglose de leads del periodo

Desglose del periodo: leads/orígenes (CRM) o demos por día/origen (piso). Si no cuadra, va en unavailable.

### get_advisor_performance

Desempeño por colaborador

Desempeño por colaborador del periodo (CRM o piso). Requiere visibilidad de toda la subcuenta; con alcance asignado no hay comparación de equipo.

### get_pipeline_summary

Resumen del pipeline

Embudo/pipeline: etapas CRM, o en piso el significado de seguimientos no_sale (Nuevo $0) frente a ventas cerradas.

### contacts_search

Buscar contactos

Busca contactos de esta subcuenta por nombre, teléfono, correo, etiqueta o lista. Ej.: {"q":"Ana","tag":"N1"}. No acepta otra subcuenta.

### contacts_get

Ficha de contacto

Ficha de un contacto: nombre, teléfono, correo, etiquetas, campos, dueño y hasta 20 oportunidades. Ej.: {"contactId":"<uuid>"}.

### pipelines_list

Pipelines y etapas

Pipelines de esta subcuenta con sus etapas e IDs. Ej.: {}.

### deals_search

Buscar oportunidades

Oportunidades por etapa, dueño o fechas de creación (YYYY-MM-DD). Ej.: {"stageId":"<uuid>","from":"2026-10-01","to":"2026-10-31"}.

### deals_get

Ficha de oportunidad

Una oportunidad de esta subcuenta. Ej.: {"dealId":"<uuid>"}.

### conversations_list

Listar conversaciones

Conversaciones de esta subcuenta, con canal y si están sin leer. Ej.: {"channel":"whatsapp"}.

### conversations_get

Leer mensajes

Una conversación y una página de mensajes (máximo 50, texto recortado). Ej.: {"conversationId":"<uuid>"}.

### calendars_list

Listar calendarios

Calendarios de reserva de esta subcuenta (nombre, duración, activo). Ej.: {}.

### appointments_list

Listar citas

Citas por fechas o por contacto. Ej.: {"from":"2026-10-01","to":"2026-10-07","contactId":"<uuid>"}.

### tasks_list

Listar tareas

Tareas de contactos. Ej.: {"contactId":"<uuid>","status":"pending"}.

### notes_list

Listar notas

Notas ligadas a un contacto o una oportunidad. Ej.: {"contactId":"<uuid>"}.

### lists_list

Listar listas

Listas de contactos de esta subcuenta. Ej.: {}.

### lists_members

Miembros de una lista

Contactos de una lista de esta subcuenta, paginados. Ej.: {"listId":"<uuid>"}.

### workflows_list

Listar workflows

Workflows de automatización y si están activos. No devuelve el grafo. Ej.: {}.

### usage_balance

Saldo de consumibles

Saldo del mes (America/Mexico_City) de WhatsApp masivo, correo, llamadas, IA de voz y líneas. Ej.: {}.

## Rate limits

- 30 tool calls per minute per user and sub-account.
- 60 requests per minute per IP.
- 10 dynamic client registrations per hour per IP.
- List tools return at most 50 rows. Pass the opaque `nextCursor`.

## Safe use

- Do not invent data. Quote only `data`, `signals`, `items`, or `meters` from the tool result.
- If a name is in `unavailable`, say it was not returned.
- Do not send WhatsApp, email, or place calls. This skill cannot spend balance.
- Do not paste access tokens, refresh tokens, or service keys into the chat.
- Say the cost before any future send. Sends are not available on this connection.

## Prompt

```
You are connected to NovaFlow for exactly one sub-account. Use only numbers and records returned by tools. Do not invent contacts, phones, emails, or causes. If a field is listed in unavailable, or a tool returns not_found, say the server did not return it. Do not send messages, book, or edit records. This connection is read-only (novaflow:read). Do not pass subAccountId. The sub-account is fixed by the OAuth grant. Pages return at most 50 rows. Pass nextCursor to continue.
```
