Saltar al contenido principal

Idempotencia

Las tools de creación y modificación aceptan un argumento idempotency_key. Se envía al endpoint como el encabezado X-Idempotency-Key que la API REST ya respeta — ver Idempotencia en la API.

{ "name": "finance_payables_create",
"arguments": {
"company_id": "…",
"description": "Alquiler de noviembre",
"amount": 4500,
"due_date": "2026-11-10T00:00:00Z",
"person": { "name": "Inmobiliaria Centro" },
"idempotency_key": "7c4a8d09-ca37-4f21-b1f0-3d2f2b8c9a11"
} }
FormatoString opaco, de 1 a 255 caracteres. Un UUID es la elección usual.
Repetición con el mismo cuerpoDevuelve la respuesta original, sin ejecutar la operación de nuevo.
Repetición con cuerpo distintoConflicto (IDEMPOTENCY_KEY_REUSED).

Las tools que borran no aceptan el argumento: la ruta no lo lee, y borrar dos veces ya da el mismo resultado.

Por qué un agente lo necesita más que tu backend​

Un cliente MCP que da timeout y reintenta, o un modelo que decide "no estoy seguro de que eso funcionó, lo hago de nuevo", es justo el patrón que crea el segundo título y el segundo movimiento. Tu backend tiene un bucle de reintentos que escribiste tú; el agente tiene un criterio.

Envía una clave siempre que la operación cree algo. Una clave nueva es un intento nuevo; para repetir con seguridad, repite la misma.

Las que mueven dinero: la clave es obligatoria​

En estas cuatro la clave no es opcional — la tool rechaza la llamada sin ella, como la ruta:

ToolQué hace
finance_payables_send_to_bankEnvía el pago al banco por Kobana
finance_payables_cancel_dispatchCancela el envío al banco
finance_receivables_chargeEmite boleto o Pix al cliente
finance_receivables_charge_cancelCancela el cobro

Un envío duplicado es un pago duplicado, y un cobro duplicado es una deuda duplicada — ningún _delete lo deshace. Son también tools destructive: el servidor solo las ejecuta después de confirmar con la persona — vea Confirmación de tools destructivas.