Listado, Orden y Filtros
Las tools *_list usan la misma paginación de la API v1: por cursor (mira
Paginación, ordenación y filtros).
| Argumento | Por defecto | Regla |
|---|---|---|
limit | 25 | de 1 a 100 |
cursor | — | el meta.next_cursor de la página anterior |
{ "name": "kadu_executions_list", "arguments": { "status": "failed", "limit": 50 } }
El resultado trae el sobre de siempre:
{
"data": [ /* ... */ ],
"meta": { "next_cursor": "eyJpZCI6IjJmMWMi…", "limit": 50 }
}
Repite la llamada con cursor igual al next_cursor hasta que venga null. El
cursor es opaco: no lo armes ni lo interpretes. Un cursor inválido devuelve
VALIDATION_ERROR.
:::note Listas sin cursor
Algunos listados devuelven un conjunto fijo, y la tool correspondiente no
ofrece cursor ni limit: las entregas de webhook
(kadu_webhook_deliveries_list, las 50 más recientes), los miembros de la
organización (kadu_users_list, hasta 100), los eventos de sistema
(kadu_system_events_list, los 100 más recientes) y la búsqueda de ejecuciones
(kadu_executions_search). Los eventos, logs y pendientes de una ejecución
vienen completos y en orden; para leer solo los nuevos, pasa after_sequence
(kadu_executions_events_list) o after_id (kadu_executions_logs_list).
Es intencional: una tool que anunciara cursor en una ruta que lo ignora haría
que el modelo paginara para siempre una lista que no avanza.
:::
Orden
| Argumento | Valores | Por defecto |
|---|---|---|
sort_by | created_at, updated_at o un campo filtrable del recurso | created_at |
sort_order | asc o desc | desc |
{ "name": "kadu_executions_list", "arguments": { "sort_by": "created_at", "sort_order": "asc" } }
Un sort_by por el que el recurso no ordena devuelve VALIDATION_ERROR, como
en la API. Un sort_order que no es asc ni desc se rechaza antes de llegar
a la ruta, con VALIDATION_ERROR y el mensaje Invalid tool arguments..
kadu_operation_approvals_list no ordena: las aprobaciones vienen siempre de la
más reciente a la más antigua.
Filtros
Cada tool de listado declara los filtros del recurso como argumentos con
nombre — su inputSchema dice cuáles son. Se convierten en los filtros de la
API:
| Forma del argumento | Ejemplo | Se convierte en |
|---|---|---|
| Un valor | status: "failed" | status=failed |
| Una lista (hasta 100) | status: ["failed", "cancelled"] | status[in]=failed,cancelled |
<campo>_gte / <campo>_lte | reference_date_gte: "2026-10-01" | reference_date[gte]=2026-10-01 |
{ "name": "kadu_executions_list",
"arguments": { "status": ["failed", "cancelled"], "reference_date_gte": "2026-10-01", "limit": 50 } }
Un argumento que la tool no declara se descarta antes de la llamada — el tamaño de página, por ejemplo, no pasa de 100 dentro de un filtro.
Contrato de datos
Lo que vale para la API v1 vale aquí, porque es el mismo código (mira Convenciones):
snake_caseen todo, argumentos y respuestas.- Fechas en ISO 8601 en UTC; fechas de referencia en
AAAA-MM-DD. - Costo en dólares en los campos
_usd; precio en reales en los campos_brl. - Los valores de los secrets nunca vuelven, por ninguna tool.
- Las escrituras aceptan
idempotency_key— mira Idempotencia.