Skip to main content
Glama

Prepare an IFSO v2 payment (unsigned)

ifso_prepare_v2_payment
Read-only

Builds a v2 if-so payment in USDG, USDe or ETH and returns its own payment address, known before any money moves, so it can be funded from anywhere on Robinhood Chain (any wallet, or the Robinhood app, which can send ETH and USDG to any address). Also returns the UNSIGNED data the sender may sign instead: an EIP-3009 authorization for USDG, a Permit2 signature for USDe, or one fundETH transaction for ETH. The money moves when the condition is met, or comes back to the sender after the expiry. This server never signs and never sends.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "asset": "<asset>",
      "amount": "<amount>",
      "sender": "<sender>",
      "condition": "<condition>"
    },
    "name": "ifso_prepare_v2_payment"
  }
}

Input Schema

NameRequiredDescriptionDefault
assetYesThe asset: USDG, USDe or ETH on Robinhood Chain.
amountYesAmount in whole units of the asset, e.g. "20" or "0.015".
expiryNoUnix seconds after which anyone can send the money back (default: from the condition).
senderYesThe wallet that funds the payment and gets it back if it comes back.
linkKeyNoFor a claim link: the address derived from the link secret. Keep the secret yourself; never send it.
refundToNoWhere the money comes back to (default: the sender).
conditionYesWhat unlocks the payment. One of: {"kind":"TIME","at":<unix seconds>}, {"kind":"PRICE","ticker":"ETH","op":"GTE"|"LTE","price":"4000","deadline":<unix seconds>} (checked at the deadline), {"kind":"APPROVE_PARTIES"} (both of you tap OK; needs a named recipient), {"kind":"APPROVE_REFEREE","referee":"0x..."}.
recipientNoNamed recipient. Give this or linkKey.
releaseAtNoPay on delivery (v2.1): unix seconds when a release window ends. The money goes to the recipient then unless the sender disputes before it ends; after a dispute the referee decides, and a silent referee means it comes back at the expiry. Needs the APPROVE_REFEREE condition and an expiry at least 1 day later (default: 2 days later).
requestIdNoThe id of a payment request this pays (see ifso_create_request).
altRefundToNoSecond refund address, used if the first cannot receive.
cancellableNoLet the sender cancel before the condition decides (default false).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / releaseAt
      Added value: +{
      +  "description": "Pay on delivery (v2.1): unix seconds when a release window ends. The money goes to the recipient then unless the sender disputes before it ends; after a dispute the referee decides, and a silent referee means it comes back at the expiry. Needs the APPROVE_REFEREE condition and an expiry at least 1 day later (default: 2 days later).",
      +  "type": "integer"
      +}
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with that, reinforcing it with 'This server never signs and never sends.' It adds genuinely useful lifecycle context not in the annotations: the money moves only when the condition is met and returns to the sender after expiry, and the address is known before funds move.

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?

Dense but well front-loaded: the returned address and pre-funding property come first, then the unsigned payloads, then the settlement lifecycle. A few clauses restate schema content (the asset list, the expiry-to-sender rule), which is mild redundancy but not enough to hurt readability.

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

Completeness4/5

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

For a 12-parameter tool with a nested condition object and no output schema, the description does a good job covering what comes back (payment address and unsigned signing data per asset) and the settlement/refund semantics. It does not cover error conditions, whether the prepared payment is retrievable later via ifso_get_v2_payment, or the relationship to releaseAt disputes, leaving minor gaps.

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

Parameters3/5

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

Schema description coverage is 100% and the nested condition object is fully documented with examples in the schema itself, so the schema carries the parameter burden. The description adds only the asset enumeration and a general mention of the signing variants (USDG via EIP-3009, USDe via Permit2, ETH via fundETH), which is a modest but real addition.

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

Purpose4/5

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

States a specific verb and resource ('Builds a v2 if-so payment in USDG, USDe or ETH') and describes what it returns (payment address plus unsigned signing payload). The 'v2' qualifier hints at a distinction from the sibling ifso_prepare_payment, but that distinction is never made explicit, so an agent must infer it from the name.

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

Usage Guidelines3/5

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

Gives useful context about how the result is used (fund from any wallet on Robinhood Chain, or sign the returned EIP-3009/Permit2/fundETH payload) and notes the server never signs or sends. It never says when to choose this over ifso_prepare_payment, ifso_prepare_x402_conditional, or ifso_create_request, leaving the sibling routing to inference.

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.