Skip to main content
Tools permiten a un agente ejecutar acciones externas o acceder a recursos asociados. Esta sección documenta el flujo básico: listarconectarejecutar.
Requiere permisos tools:read para listar y tools:execute para ejecutar. También requiere el header X-Workspace-Id.

Listar catálogo de tools

Ejecuta una acción específica de una tool.

Conexiones (agent ↔ tool)

Las conexiones representan un vínculo persistente entre un agente y una tool.

Listar conexiones

Crear conexión (por body)

Ejecutar por conexión


Custom HTTP (custom.http): “tools dinámicas” basadas en un curl

custom.http es una tool base que te permite “construir” acciones HTTP sin crear una tool nueva en el catálogo. La idea es:
  1. Creas una conexión (agent ↔ custom.http) y ahí dejas configurado:
    • metadata.baseUrl
    • metadata.actions (acciones disponibles y cómo se resuelven)
    • metadata.defaultHeaders (headers fijos)
    • auth (secretos que se guardan como ToolSecret)
  2. En runtime ejecutas por toolAgentConnectionId con:
    • action (ej. campaigns.list)
    • args._query / args._headers / args._body para overrides.

Cómo mapear un curl a custom.http

Ejemplo de curl original:
Mapeo recomendado:
  • URL
    • metadata.baseUrl = https://{baseUrl}
    • metadata.actions["campaigns.list"].path = /v1/campaigns
    • metadata.actions["campaigns.list"].method = GET
  • Query params
    • Se pasan en ejecución como args._query.
  • Headers
    • x-workspace-id puede ir en metadata.defaultHeaders.
    • x-api-key debe ir en auth.data.apiKey (se guarda como secret) para no exponerlo en metadata.

1) Crear conexión custom.http

Requisitos:
  • Necesitas el toolId de custom.http (si no lo tienes, búscalo con GET /v1/tools filtrando por identifier=="custom.http").
  • Necesitas el agentId del agente.
Notas:
  • auth.type=custom (o api_key) hace que el backend cree un ToolSecret asociado a la conexión y guarde ahí auth.data.
  • El bloque auth.data.auth es importante: define cómo convertir el secret en headers.
  • descriptionUsage y usageExample son opcionales: sirven como guía para que el motor (voz/LLM) sepa cuándo conviene ejecutar esta conexión.

2) Ejecutar la acción (equivalente al curl)

En la respuesta de create connection obtendrás toolAgentConnectionId. Usa ese id para ejecutar.

Overriding rápido

  • Cambiar query: args._query.
  • Forzar headers extra puntuales: args._headers.
  • Enviar body:
    • Si args._body existe, ese objeto se manda como body.
    • Si args._body no existe, todo lo que venga en args (menos _query/_headers/_body) se toma como body.

Troubleshooting

Error: “Missing bearer token in secret data (expected “accessToken”) for tool auth type “custom""
  • Causa: para provider=custom + auth_type=custom, el catálogo de auth por defecto usa bearer (Authorization: Bearer <accessToken>).
  • Fix: en auth.data incluye auth: { kind: "api_key", apiKeyKey: "apiKey", headerName: "x-api-key" } y guarda el valor en auth.data.apiKey.
No quiero duplicar secrets
  • El secret se guarda por conexión (toolAgentConnectionId).
  • Si vuelves a crear la misma conexión (mismo tool + workspace + agent + connectionKey) sin Idempotency-Key, fallará por “connection exists”.
  • Para “cambiar” configuración hoy, crea una nueva conexión con otro connectionKey.