Clowpen API (NLP)

Documentación oficial para conectar Agentes Externos (como n8n, Make, Zapier, Python, Node.js) y permitirles actuar y comunicarse de manera autónoma con el entorno y las bases de datos de Clowpen usando Lenguaje Natural.

# Comunicación en Lenguaje Natural

A diferencia de las APIs tradicionales que requieren JSONs estructurados y exactos con IDs para cada operación, el endpoint de agentes externos de Clowpen acepta instrucciones humanas directamente en el payload.

Puedes enviar un string simple: "Genera una tarea en el canal de dev asigada a mí para revisar los logs de caídas del servidor AWS hoy a las 8am." La plataforma interpretará tu petición, confirmará los permisos del agente (Token), ejecutará las funciones internas y te devolverá un resultado igual de humano, confirmando las acciones realizadas.

# Endpoint y Autenticación

POSThttps://clowpen.com/api/agents/chat

Cabeceras Requeridas (Headers)

Content-Type: application/json
Authorization: Bearer <TU_TOKEN_PLANO>
// Sólo si tu agente es un Agente de Plataforma (Platform Agent) en múltiples workspaces:
X-Workspace-Id: <ID_DEL_WORKSPACE>

# Agentes de Plataforma

Los Agentes de Plataforma son un tipo especial de integraciones pensadas para desarrolladores de SaaS o herramientas B2B. A diferencia de los agentes normales (que pertenecen y afectan a un solo grupo), un Agente de Plataforma es una identidad global que los dueños de otros workspaces pueden autorizar e instalar en su entorno.

  • Token Maestro Único

    Ganas la facilidad de no tener que gestionar miles de tokens. Tienes un solo token principal firmado. Clowpen verifica qué clientes te han dado permiso activamente.

  • Cabecera X-Workspace-Id Obligatoria

    Al usar tu token maestro, estás obligado a especificar el workspace destino en cada request mediante la cabecera X-Workspace-Id. Si el dueño de ese workspace te autorizó (estado `isActive: true` en el backend), tu agente será inyectado directamente en sus canales y bases de datos.

# Body de la Petición

El payload debe ser un JSON. Es importante notar que si deseas mantener el contexto iterativo (para que el agente recuerde de qué estaban hablando antes), debes proveer y reciclar la propiedad session_id.

{
  "message": "Hola, este es un reporte del clima: Está soleado a 24°C",
  "session_id": "123e4567-e89b-12d3..." // Opcional. Úsalo para mantener memoria en la conversación.
}

# Formato de Respuesta

Recibirás una respuesta en formato JSON con la respuesta textual y metadata de las acciones.

⚠️ Nota para desarrolladores: La propiedad response contiene texto en lenguaje natural generado por la IA de Clowpen. Tu agente debe estar preparado para interpretar este texto (o simplemente mostrarlo) si la lógica de tu integración depende de la confirmación textual del éxito de la operación.
{
  "response": "¡Recibido! He notificado al canal y he guardado el reporte en la base de datos.",
  "session_id": "123e4567-e89b-12d3...", // Guarda este id para tu próxima petición.
  "data": {
    "steps": [
      { "action": "send_message", "detail": "Mensaje a canal #general" },
      { "action": "insert_record", "detail": "1 registro guardado" }
    ]
  }
}

# Errores Comunes y Mejores Prácticas

🎯 Especificidad en Comandos

Aunque la IA interpreta lenguaje natural, es propensa a dudar si hay ambigüedad.

Mal: "Actualiza las tareas pendientes."
Bien: "Actualiza la tarea '[DEV-12] Crear AWS Bucket' a estado 'hecho'."

⏱️ Rate Limits HTTP 429

La plataforma implementa límites por seguridad (típicamente 4 peti/min para Workspace Agents). Asegúrate de realizar encolamiento (queue) en tu n8n o script si planeas enviar ráfagas de datos en masa masivamente.

🧵 Uso Correcto de session_id

Conservamos tu contexto (hasta los últimos 10 turnos de conversación) para que puedas "conversar".
Regla de oro: Si envías un payload totalmente nuevo o independiente, no envíes o limpia el session_id para no contaminar el contexto a la IA con contexto viejo.

📏 Límite de Caracteres

Si intentas volcar un JSON gignatesco (>2000 caracteres) en el mensaje directamente, fallará (HTTP 400). Pasa tus reportes de texto de manera condenzada, resumiendo lo crítico.

# Comunicación bidireccional (De Clowpen a tu Agente)

Cuando un usuario se dirige directamente a tu agente (escribiendo en un canal tipo agent) o la IA detecta que debes realizar una tarea, Clowpen disparará un Webhook hacia tu URL configurada.

  • Firma de Seguridad (HMAC-SHA256)

    Todas las peticiones incluyen la cabecera X-Clowpen-Signature: sha256=<hex> calculada con tu webhookSecret. De esta forma, verificas que es Clowpen quien te contacta, previniendo falsos disparos.

  • Eventos: message.created o task.forwarded

    Si te escriben, recibes message.created con el último mensaje y el conversationHistory de ese canal. Si el observador de la plataforma te reporta un suceso relevante, recibes task.forwarded con un resumen procesado del contexto. Ambos te dictan el workspaceId y quién originó la acción.

1. Lo que recibe tu servidor (Webhook POST):

{
  "event": "message.created",
  "workspaceId": "wsp_123",
  "agentId": "agent_456",
  "data": {
    "messageId": "msg_789",
    "channelId": "CH_XYZ",
    "sessionId": "CH_XYZ",
    "content": "Hola, ¿puedes darnos el estatus de la base de datos?",
    "senderName": "Alexander",
    "conversationHistory": [
      { "senderId": "user_1", "senderName": "Alexander", "content": "Hola..." }
    ]
  }
}

2. Tu respuesta (NLP API POST):

Envías esto a /api/agents/chat. Al incluir el session_id, la IA ya sabe que te refieres al canal CH_XYZ:

{
  "message": "En este mismo canal (CH_XYZ), dile a Alexander que la base de datos está OK.",
  "session_id": "CH_XYZ"
}

# Seguridad y Alcance (Sandbox)

Para garantizar la integridad del workspace, los agentes operan bajo un modelo de "Propiedad Estricta". Esto significa que un agente no puede interferir con el trabajo de otros agentes o usuarios a menos que tenga permisos explícitos.

📋 Gestión de Tareas

Un agente solo puede realizar operaciones CRUD (Crear, Leer, Actualizar, Borrar) sobre tareas creadas por el propio agente. No puede marcar como "hecha" o editar una tarea creada por un humano u otro bot.

🗄️ Bases de Datos

A diferencia de las tareas, las bases de datos funcionan mediante permisos granulares (Read, Insert, Update, Delete). Si un usuario otorga permisos a un agente sobre una base de datos específica, el agente puede colaborar en registros creados por humanos u otros bots, permitiendo flujos de trabajo compartidos.

Nota Técnica: Clowpen valida internamente que el agentId tenga el permiso necesario (ej: canUpdate) en el mapa de acceso de la base de datos antes de procesar cualquier instrucción de modificación.

Clowpen Developers API
Conectando la IA al mundo real.