Tools permiten a un agente ejecutar acciones externas o
acceder a recursos asociados. Esta sección documenta el flujo básico:
listar →conectar → ejecutar.
Requiere permisos
tools:read para listar y
tools:execute para ejecutar. También requiere el header
X-Workspace-Id.Listar catálogo de tools
- TypeScript SDK
- cURL
- TypeScript SDK
- cURL
Conexiones (agent ↔ tool)
Las conexiones representan un vínculo persistente entre un agente y una tool.Listar conexiones
- TypeScript SDK
- cURL
Crear conexión (por body)
- TypeScript SDK
- cURL
Ejecutar por conexión
- TypeScript SDK
- cURL
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:
- Creas una conexión (agent ↔ custom.http) y ahí dejas configurado:
metadata.baseUrlmetadata.actions(acciones disponibles y cómo se resuelven)metadata.defaultHeaders(headers fijos)auth(secretos que se guardan comoToolSecret)
- En runtime ejecutas por
toolAgentConnectionIdcon:action(ej.campaigns.list)args._query/args._headers/args._bodypara overrides.
Cómo mapear un curl a custom.http
Ejemplo de curl original:- URL
metadata.baseUrl = https://{baseUrl}metadata.actions["campaigns.list"].path = /v1/campaignsmetadata.actions["campaigns.list"].method = GET
- Query params
- Se pasan en ejecución como
args._query.
- Se pasan en ejecución como
- Headers
x-workspace-idpuede ir enmetadata.defaultHeaders.x-api-keydebe ir enauth.data.apiKey(se guarda como secret) para no exponerlo enmetadata.
1) Crear conexión custom.http
Requisitos:- Necesitas el
toolIddecustom.http(si no lo tienes, búscalo conGET /v1/toolsfiltrando poridentifier=="custom.http"). - Necesitas el
agentIddel agente.
- cURL
auth.type=custom(oapi_key) hace que el backend cree unToolSecretasociado a la conexión y guarde ahíauth.data.- El bloque
auth.data.authes importante: define cómo convertir el secret en headers. descriptionUsageyusageExampleson 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ástoolAgentConnectionId. Usa ese id para ejecutar.
- cURL
Overriding rápido
- Cambiar query:
args._query. - Forzar headers extra puntuales:
args._headers. - Enviar body:
- Si
args._bodyexiste, ese objeto se manda como body. - Si
args._bodyno existe, todo lo que venga enargs(menos_query/_headers/_body) se toma como body.
- Si
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.dataincluyeauth: { kind: "api_key", apiKeyKey: "apiKey", headerName: "x-api-key" }y guarda el valor enauth.data.apiKey.
- 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.
