Skip to main content
Glama

cancel_deposit_authorization

Withdraws a gasless-deposit authorization you already handed over (while the quote is alive, anyone holding it and your signature could send the deposit). Say WHICH one with the nonce deposit_data gave you in singleSignature.nonce (which works even if the order already has a newer quote, and is the way not to leave live signatures behind) or, for an order's current quote, with { orderId, quote }, which Bernuvia verifies and derives the nonce from. The authorizer is always set by the server (your paying wallet), so a signature of yours can only burn your own authorizations. Without a signature it returns the typedData CancelAuthorization(authorizer, nonce) to sign; with a signature it returns the USDC.cancelAuthorization calldata for you to send, or with broadcast:true Bernuvia sends it paying the gas (same limits as the deposit). Once it is confirmed, the order is only closed if its quote can no longer be redeemed; the answer says whether it ended up closed (orderClosed). If the authorization was already used or cancelled, it says so.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nonceNoThe `nonce` (bytes32) of the authorization you want to withdraw, exactly as deposit_data returned it in `singleSignature.nonce`. With it that authorization is withdrawn EVEN IF the order already has a newer quote: it is the route to use so as not to leave live signatures behind. Send `nonce` or `quote`.
quoteNoOptional (requires `orderId`): the `quote` object returned by deposit_data({ orderId, singleSignature: true }), AS IS. Bernuvia verifies it and derives the nonce from it. It works for the CURRENT quote of that order; if you already requested another quote, use `nonce`.
orderIdNoThe orderId (uuid) of the order whose authorization you want to withdraw. Optional if you send `nonce`; with it, the order is also closed when the cancellation is confirmed.
broadcastNoOptional, together with signature. true = Bernuvia sends the cancellation and pays the gas (if sponsored gas is available); otherwise it returns the calldata so that you send it yourself.
signatureNoOptional. Your EIP-712 signature of the CancelAuthorization typedData that this same function returns when called without a signature (0x + 130 hex).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nonceYesThe bytes32 of the authorization this response refers to.
statusYesThe branch of the response: no_longer_valid, signature_required, ready_to_send, cancellation_sent or canceled.
txHashNoOnly with "cancellation_sent" or "canceled": hash of the transaction Bernuvia sent.
orderIdNoThe uuid of the order, only if you named it in the call (when withdrawing by a bare `nonce` there may be none).
nextStepYesWhat to do now, in one sentence.
typedDataNoOnly with status "signature_required": the EIP-712 CancelAuthorization message to sign with signTypedData.
orderClosedNoOnly with "canceled" and having named an order: whether the order was also closed (it is not closed while its quote can still be redeemed).
transactionNoOnly with status "ready_to_send": the envelope ready to be sent from any wallet (what counts is the signature).
gasSponsoredNoOnly when Bernuvia sent it: true, the gas was paid by Bernuvia.
originDomainNoOnly with "signature_required": where the EIP-712 domain came from, "chain" (read from the token) or "assumed".
isFromCurrentQuoteNoOnly when it was derived from a `quote`: the nonce is the one of the current quote of that order. Absent if you gave it on its own (it cannot be asserted).
retransmissionAvailableNoCan Bernuvia send the cancellation and pay the gas? Absent in the branches where it no longer applies.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed30 schema fields changed
    • changedInput schema / properties / broadcast / description
      Previous value: -"Optional, together with firma. true = Bernuvia sends the cancellation and pays the gas (if sponsored gas is available); otherwise it returns the calldata so that you send it yourself."New value: +"Optional, together with signature. true = Bernuvia sends the cancellation and pays the gas (if sponsored gas is available); otherwise it returns the calldata so that you send it yourself."
    • removedInput schema / properties / cotizacion
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED alias of `quote`: it still works, but use `quote` (it will be removed in a future round, no date yet). Optional (requires `ordenId`): the `cotizacion` object returned by deposit_data({ ordenId, una_sola_firma: true }), AS IS. Bernuvia verifies it and derives the nonce from it. It works for the CURRENT quote of that order; if you already requested another quote, use `nonce`.",
      -  "type": "object"
      -}
    • removedInput schema / properties / firma
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED alias of `signature`: it still works, but use `signature` (it will be removed in a future round, no date yet). Optional. Your EIP-712 signature of the CancelAuthorization typedData that this same function returns when called without a signature (0x + 130 hex).",
      -  "type": "string"
      -}
    • changedInput schema / properties / nonce / description
      Previous value: -"The `nonce` (bytes32) of the authorization you want to withdraw, exactly as deposit_data returned it in `unaSolaFirma.nonce`. With it that authorization is withdrawn EVEN IF the order already has a newer quote: it is the route to use so as not to leave live signatures behind. Send `nonce` or `cotizacion`."New value: +"The `nonce` (bytes32) of the authorization you want to withdraw, exactly as deposit_data returned it in `singleSignature.nonce`. With it that authorization is withdrawn EVEN IF the order already has a newer quote: it is the route to use so as not to leave live signatures behind. Send `nonce` or `quote`."
    • removedInput schema / properties / ordenId
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED alias of `orderId`: it still works, but use `orderId` (it will be removed in a future round, no date yet). The ordenId (uuid) of the order whose authorization you want to withdraw. Optional if you send `nonce`; with it, the order is also closed when the cancellation is confirmed.",
      -  "type": "string"
      -}
    • changedInput schema / properties / orderId / description
      Previous value: -"The ordenId (uuid) of the order whose authorization you want to withdraw. Optional if you send `nonce`; with it, the order is also closed when the cancellation is confirmed."New value: +"The orderId (uuid) of the order whose authorization you want to withdraw. Optional if you send `nonce`; with it, the order is also closed when the cancellation is confirmed."
    • changedInput schema / properties / quote / description
      Previous value: -"Optional (requires `ordenId`): the `cotizacion` object returned by deposit_data({ ordenId, una_sola_firma: true }), AS IS. Bernuvia verifies it and derives the nonce from it. It works for the CURRENT quote of that order; if you already requested another quote, use `nonce`."New value: +"Optional (requires `orderId`): the `quote` object returned by deposit_data({ orderId, singleSignature: true }), AS IS. Bernuvia verifies it and derives the nonce from it. It works for the CURRENT quote of that order; if you already requested another quote, use `nonce`."
    • removedInput schema / properties / retransmitir
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED alias of `broadcast`: it still works, but use `broadcast` (it will be removed in a future round, no date yet). Optional, together with firma. true = Bernuvia sends the cancellation and pays the gas (if sponsored gas is available); otherwise it returns the calldata so that you send it yourself.",
      -  "type": "boolean"
      -}
    • removedInput schema / x-bernuvia-aliases
      Removed value: -{
      -  "broadcast": "retransmitir",
      -  "orderId": "ordenId",
      -  "quote": "cotizacion",
      -  "signature": "firma"
      -}
    • removedOutput schema / properties / dominioOrigen
      Removed value: -{
      -  "description": "Only with \"firma_requerida\": where the EIP-712 domain came from, \"cadena\" (read from the token) or \"asumido\".",
      -  "type": "string"
      -}
    • removedOutput schema / properties / esDeLaCotizacionVigente
      Removed value: -{
      -  "description": "Only when it was derived from a `cotizacion`: the nonce is the one of the current quote of that order. Absent if you gave it on its own (it cannot be asserted).",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / estado
      Removed value: -{
      -  "description": "The branch of the response: ya_no_vale, firma_requerida, lista_para_enviar, cancelacion_enviada or cancelada.",
      -  "enum": [
      -    "ya_no_vale",
      -    "firma_requerida",
      -    "lista_para_enviar",
      -    "cancelacion_enviada",
      -    "cancelada"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / gasPatrocinado
      Removed value: -{
      -  "description": "Only when Bernuvia sent it: true, the gas was paid by Bernuvia.",
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / gasSponsored
      Added value: +{
      +  "description": "Only when Bernuvia sent it: true, the gas was paid by Bernuvia.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / isFromCurrentQuote
      Added value: +{
      +  "description": "Only when it was derived from a `quote`: the nonce is the one of the current quote of that order. Absent if you gave it on its own (it cannot be asserted).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / nextStep
      Added value: +{
      +  "description": "What to do now, in one sentence.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / ordenCerrada
      Removed value: -{
      -  "description": "Only with \"cancelada\" and having named an order: whether the order was also closed (it is not closed while its quote can still be redeemed).",
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / ordenId
      Removed value: -{
      -  "description": "The uuid of the order, only if you named it in the call (when withdrawing by a bare `nonce` there may be none).",
      -  "type": "string"
      -}
    • addedOutput schema / properties / orderClosed
      Added value: +{
      +  "description": "Only with \"canceled\" and having named an order: whether the order was also closed (it is not closed while its quote can still be redeemed).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / orderId
      Added value: +{
      +  "description": "The uuid of the order, only if you named it in the call (when withdrawing by a bare `nonce` there may be none).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / originDomain
      Added value: +{
      +  "description": "Only with \"signature_required\": where the EIP-712 domain came from, \"chain\" (read from the token) or \"assumed\".",
      +  "type": "string"
      +}
    • removedOutput schema / properties / retransmisionDisponible
      Removed value: -{
      -  "description": "Can Bernuvia send the cancellation and pay the gas? Absent in the branches where it no longer applies.",
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / retransmissionAvailable
      Added value: +{
      +  "description": "Can Bernuvia send the cancellation and pay the gas? Absent in the branches where it no longer applies.",
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / siguientePaso
      Removed value: -{
      -  "description": "What to do now, in one sentence.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / status
      Added value: +{
      +  "description": "The branch of the response: no_longer_valid, signature_required, ready_to_send, cancellation_sent or canceled.",
      +  "enum": [
      +    "no_longer_valid",
      +    "signature_required",
      +    "ready_to_send",
      +    "cancellation_sent",
      +    "canceled"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / transaccion
      Removed value: -{
      -  "additionalProperties": true,
      -  "description": "Only with estado \"lista_para_enviar\": the envelope ready to be sent from any wallet (what counts is the signature).",
      -  "properties": {
      -    "data": {
      -      "description": "Already encoded calldata of cancelAuthorization (0x…).",
      -      "type": "string"
      -    },
      -    "descripcion": {
      -      "description": "What the transaction does.",
      -      "type": "string"
      -    },
      -    "to": {
      -      "description": "Address of the USDC contract.",
      -      "type": "string"
      -    },
      -    "value": {
      -      "description": "Native POL to send, in HEXADECIMAL with 0x (JSON-RPC QUANTITY): always \"0x0\".",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "to",
      -    "data",
      -    "value",
      -    "descripcion"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / transaction
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Only with status \"ready_to_send\": the envelope ready to be sent from any wallet (what counts is the signature).",
      +  "properties": {
      +    "data": {
      +      "description": "Already encoded calldata of cancelAuthorization (0x…).",
      +      "type": "string"
      +    },
      +    "description": {
      +      "description": "What the transaction does.",
      +      "type": "string"
      +    },
      +    "to": {
      +      "description": "Address of the USDC contract.",
      +      "type": "string"
      +    },
      +    "value": {
      +      "description": "Native POL to send, in HEXADECIMAL with 0x (JSON-RPC QUANTITY): always \"0x0\".",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "to",
      +    "data",
      +    "value",
      +    "description"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / txHash / description
      Previous value: -"Only with \"cancelacion_enviada\" or \"cancelada\": hash of the transaction Bernuvia sent."New value: +"Only with \"cancellation_sent\" or \"canceled\": hash of the transaction Bernuvia sent."
    • changedOutput schema / properties / typedData / description
      Previous value: -"Only with estado \"firma_requerida\": the EIP-712 CancelAuthorization message to sign with signTypedData."New value: +"Only with status \"signature_required\": the EIP-712 CancelAuthorization message to sign with signTypedData."
    • changedOutput schema / required
      Previous value: -[
      -  "nonce",
      -  "estado",
      -  "siguientePaso"
      -]New value: +[
      +  "nonce",
      +  "status",
      +  "nextStep"
      +]
  2. Changed31 schema fields changed
    • changedInput schema / properties / broadcast / description
      Previous value: -"Opcional, con firma. true = Bernuvia envía la cancelación pagando el gas (si el gas patrocinado está disponible); si no, devuelve el calldata para que la envíes tú."New value: +"Optional, together with firma. true = Bernuvia sends the cancellation and pays the gas (if sponsored gas is available); otherwise it returns the calldata so that you send it yourself."
    • changedInput schema / properties / cotizacion / description
      Previous value: -"ALIAS RETIRADO de `quote`: sigue funcionando, pero usa `quote` (se quitará en una tanda futura, aún sin fecha). / DEPRECATED alias of `quote`. Opcional (hace falta `ordenId`): el objeto `cotizacion` que devolvió deposit_data({ ordenId, una_sola_firma: true }), TAL CUAL. Bernuvia lo verifica y deriva de él el nonce. Sirve para la cotización VIGENTE de esa orden; si ya pediste otra cotización, usa `nonce`."New value: +"DEPRECATED alias of `quote`: it still works, but use `quote` (it will be removed in a future round, no date yet). Optional (requires `ordenId`): the `cotizacion` object returned by deposit_data({ ordenId, una_sola_firma: true }), AS IS. Bernuvia verifies it and derives the nonce from it. It works for the CURRENT quote of that order; if you already requested another quote, use `nonce`."
    • changedInput schema / properties / firma / description
      Previous value: -"ALIAS RETIRADO de `signature`: sigue funcionando, pero usa `signature` (se quitará en una tanda futura, aún sin fecha). / DEPRECATED alias of `signature`. Opcional. Tu firma EIP-712 del typedData CancelAuthorization que devuelve esta misma función sin firma (0x + 130 hex)."New value: +"DEPRECATED alias of `signature`: it still works, but use `signature` (it will be removed in a future round, no date yet). Optional. Your EIP-712 signature of the CancelAuthorization typedData that this same function returns when called without a signature (0x + 130 hex)."
    • changedInput schema / properties / nonce / description
      Previous value: -"El `nonce` (bytes32) de la autorización que quieres retirar, tal y como lo devolvió deposit_data en `unaSolaFirma.nonce`. Con él se retira esa autorización AUNQUE la orden ya tenga otra cotización más nueva: es la vía que hay que usar para no dejar firmas vivas detrás. Manda `nonce` o `cotizacion`."New value: +"The `nonce` (bytes32) of the authorization you want to withdraw, exactly as deposit_data returned it in `unaSolaFirma.nonce`. With it that authorization is withdrawn EVEN IF the order already has a newer quote: it is the route to use so as not to leave live signatures behind. Send `nonce` or `cotizacion`."
    • changedInput schema / properties / ordenId / description
      Previous value: -"ALIAS RETIRADO de `orderId`: sigue funcionando, pero usa `orderId` (se quitará en una tanda futura, aún sin fecha). / DEPRECATED alias of `orderId`. El ordenId (uuid) de la orden cuya autorización quieres retirar. Opcional si mandas `nonce`; con él, además, se intenta cerrar la orden al confirmarse la cancelación."New value: +"DEPRECATED alias of `orderId`: it still works, but use `orderId` (it will be removed in a future round, no date yet). The ordenId (uuid) of the order whose authorization you want to withdraw. Optional if you send `nonce`; with it, the order is also closed when the cancellation is confirmed."
    • changedInput schema / properties / orderId / description
      Previous value: -"El ordenId (uuid) de la orden cuya autorización quieres retirar. Opcional si mandas `nonce`; con él, además, se intenta cerrar la orden al confirmarse la cancelación."New value: +"The ordenId (uuid) of the order whose authorization you want to withdraw. Optional if you send `nonce`; with it, the order is also closed when the cancellation is confirmed."
    • changedInput schema / properties / quote / description
      Previous value: -"Opcional (hace falta `ordenId`): el objeto `cotizacion` que devolvió deposit_data({ ordenId, una_sola_firma: true }), TAL CUAL. Bernuvia lo verifica y deriva de él el nonce. Sirve para la cotización VIGENTE de esa orden; si ya pediste otra cotización, usa `nonce`."New value: +"Optional (requires `ordenId`): the `cotizacion` object returned by deposit_data({ ordenId, una_sola_firma: true }), AS IS. Bernuvia verifies it and derives the nonce from it. It works for the CURRENT quote of that order; if you already requested another quote, use `nonce`."
    • changedInput schema / properties / retransmitir / description
      Previous value: -"ALIAS RETIRADO de `broadcast`: sigue funcionando, pero usa `broadcast` (se quitará en una tanda futura, aún sin fecha). / DEPRECATED alias of `broadcast`. Opcional, con firma. true = Bernuvia envía la cancelación pagando el gas (si el gas patrocinado está disponible); si no, devuelve el calldata para que la envíes tú."New value: +"DEPRECATED alias of `broadcast`: it still works, but use `broadcast` (it will be removed in a future round, no date yet). Optional, together with firma. true = Bernuvia sends the cancellation and pays the gas (if sponsored gas is available); otherwise it returns the calldata so that you send it yourself."
    • changedInput schema / properties / signature / description
      Previous value: -"Opcional. Tu firma EIP-712 del typedData CancelAuthorization que devuelve esta misma función sin firma (0x + 130 hex)."New value: +"Optional. Your EIP-712 signature of the CancelAuthorization typedData that this same function returns when called without a signature (0x + 130 hex)."
    • changedOutput schema / properties / dominioOrigen / description
      Previous value: -"Solo con \"firma_requerida\": de dónde salió el dominio EIP-712, \"cadena\" (leído del token) o \"asumido\"."New value: +"Only with \"firma_requerida\": where the EIP-712 domain came from, \"cadena\" (read from the token) or \"asumido\"."
    • changedOutput schema / properties / esDeLaCotizacionVigente / description
      Previous value: -"Solo cuando se derivó de una `cotizacion`: el nonce es el de la cotización vigente de esa orden. Ausente si lo diste tú suelto (no se puede afirmar)."New value: +"Only when it was derived from a `cotizacion`: the nonce is the one of the current quote of that order. Absent if you gave it on its own (it cannot be asserted)."
    • changedOutput schema / properties / estado / description
      Previous value: -"La rama de la respuesta: ya_no_vale, firma_requerida, lista_para_enviar, cancelacion_enviada o cancelada."New value: +"The branch of the response: ya_no_vale, firma_requerida, lista_para_enviar, cancelacion_enviada or cancelada."
    • changedOutput schema / properties / gasPatrocinado / description
      Previous value: -"Solo cuando envió Bernuvia: true, el gas lo pagó ella."New value: +"Only when Bernuvia sent it: true, the gas was paid by Bernuvia."
    • changedOutput schema / properties / nonce / description
      Previous value: -"El bytes32 de la autorización a la que se refiere esta respuesta."New value: +"The bytes32 of the authorization this response refers to."
    • changedOutput schema / properties / ordenCerrada / description
      Previous value: -"Solo con \"cancelada\" y habiendo nombrado una orden: si además quedó cerrada (no se cierra mientras su cotización pueda canjearse)."New value: +"Only with \"cancelada\" and having named an order: whether the order was also closed (it is not closed while its quote can still be redeemed)."
    • changedOutput schema / properties / ordenId / description
      Previous value: -"El uuid de la orden, solo si la nombraste en la llamada (retirando por `nonce` suelto puede no haberla)."New value: +"The uuid of the order, only if you named it in the call (when withdrawing by a bare `nonce` there may be none)."
    • changedOutput schema / properties / retransmisionDisponible / description
      Previous value: -"¿Puede Bernuvia enviar la cancelación pagando el gas? Ausente en las ramas donde ya no procede."New value: +"Can Bernuvia send the cancellation and pay the gas? Absent in the branches where it no longer applies."
    • changedOutput schema / properties / siguientePaso / description
      Previous value: -"Qué hacer ahora, en una frase."New value: +"What to do now, in one sentence."
    • changedOutput schema / properties / transaccion / description
      Previous value: -"Solo con estado \"lista_para_enviar\": el sobre listo para enviar desde cualquier wallet (lo que cuenta es la firma)."New value: +"Only with estado \"lista_para_enviar\": the envelope ready to be sent from any wallet (what counts is the signature)."
    • changedOutput schema / properties / transaccion / properties / data / description
      Previous value: -"Calldata de cancelAuthorization ya codificado (0x…)."New value: +"Already encoded calldata of cancelAuthorization (0x…)."
    • changedOutput schema / properties / transaccion / properties / descripcion / description
      Previous value: -"Qué hace la transacción."New value: +"What the transaction does."
    • changedOutput schema / properties / transaccion / properties / to / description
      Previous value: -"Dirección del contrato USDC."New value: +"Address of the USDC contract."
    • changedOutput schema / properties / transaccion / properties / value / description
      Previous value: -"POL nativo a enviar, en HEXADECIMAL con 0x (QUANTITY del JSON-RPC): siempre \"0x0\"."New value: +"Native POL to send, in HEXADECIMAL with 0x (JSON-RPC QUANTITY): always \"0x0\"."
    • changedOutput schema / properties / txHash / description
      Previous value: -"Solo con \"cancelacion_enviada\" o \"cancelada\": hash de la transacción que envió Bernuvia."New value: +"Only with \"cancelacion_enviada\" or \"cancelada\": hash of the transaction Bernuvia sent."
    • changedOutput schema / properties / typedData / description
      Previous value: -"Solo con estado \"firma_requerida\": el mensaje EIP-712 CancelAuthorization a firmar con signTypedData."New value: +"Only with estado \"firma_requerida\": the EIP-712 CancelAuthorization message to sign with signTypedData."
    • changedOutput schema / properties / typedData / properties / domain / description
      Previous value: -"Dominio EIP-712 del USDC (name, version, chainId, verifyingContract)."New value: +"EIP-712 domain of the USDC (name, version, chainId, verifyingContract)."
    • changedOutput schema / properties / typedData / properties / message / description
      Previous value: -"Los valores firmados."New value: +"The signed values."
    • changedOutput schema / properties / typedData / properties / message / properties / authorizer / description
      Previous value: -"Tu wallet pagadora: la única que puede cancelar sus autorizaciones."New value: +"Your paying wallet: the only one that can cancel its own authorizations."
    • changedOutput schema / properties / typedData / properties / message / properties / nonce / description
      Previous value: -"El mismo bytes32 de la autorización."New value: +"The same bytes32 of the authorization."
    • changedOutput schema / properties / typedData / properties / primaryType / description
      Previous value: -"Siempre \"CancelAuthorization\"."New value: +"Always \"CancelAuthorization\"."
    • changedOutput schema / properties / typedData / properties / types / description
      Previous value: -"Definición de tipos EIP-712."New value: +"EIP-712 type definitions."
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers: the live-signature exposure, that `authorizer` is server-set so a signature can only burn your own authorizations, the three return modes (typedData without signature, calldata with signature, server-broadcast with broadcast:true), sponsored-gas limits, and the post-confirmation `orderClosed` outcome including the already-used/already-cancelled cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the purpose and keeps every clause informative, but it is one dense paragraph with parenthetical asides that make scanning harder than a short structured list would be. Little is wasted, though readability suffers slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter, nested-object tool with an output schema, the description covers the full invocation lifecycle and even flags the `orderClosed` field so the agent knows what to read from the response. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value beyond the schema: it explains the derivation of nonce from quote, why `nonce` survives a newer quote, and that `authorizer` is never client-supplied. That goes past restating field definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause names a specific verb and resource — 'Withdraws a gasless-deposit authorization you already handed over' — and immediately explains the risk it mitigates. Combined with its sibling set (deposit_data, submit_signed_deposit), an agent can tell exactly what this does and how it differs from depositing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing between the two invocation paths (`nonce` vs `{ orderId, quote }`) and states which to prefer ('so as not to leave live signatures behind'). It does not, however, frame when to cancel at all versus letting a quote expire or using another sibling tool, so the when-not-to-use side is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources