Skip to main content
Glama

send_bank_payment

Send dollars to a bank account

Pay USDC to send dollars to a bank account by ACH. The x402 USDC price is the requested amount plus a 0.25% transfer fee (with a $1.50 minimum fee). On-chain payment credits the calling wallet's Laso account balance via the standard deposit webhook; the callable then debits the gross amount and queues the transfer.

A bank destination is required first. destination_id comes from the banking callables: create the banking profile with createBankingProfile, register who is being paid with createBankingRecipient, and attach their bank account with addBankingDestination, which returns the id. List what you already have at GET /bank-recipients (free). See the bank accounts guide for the full setup.

Identity verification is required on the account that owns the banking profile, and only the human owner can complete it. createBankingProfile hands back a kycUrl when it is outstanding.

If the payout cannot be fulfilled (no approved banking profile, a destination that is not yours, an amount out of range), nothing is stranded: the USDC you paid has already credited your account balance. Fix the problem and retry, or recover it with POST /withdraw.

Settlement: ACH, normally 1-2 business days. Follow it with listBankingTransactions / getBankingTransaction.

Fee: 0.25% with a $1.50 minimum (included in the USDC price).

PAID ROUTE (11.50-10025 USD): the x402 USDC price is paid automatically from your managed agent wallet. Make sure the wallet exists and is funded first (get_agent_wallet).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountYesUSD delivered to the recipient's bank account (min $10, max $50,000). The x402 payment price is this amount plus a 0.25% fee (with a $1.50 minimum).
auth_tokenNoLaso credential. Only if the MCP connection has no Authorization header.
destination_idYesBank destination to pay out to. Returned by `addBankingDestination`, and listed by `GET /bank-recipients`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "auth": {
      -      "properties": {
      -        "expires_in": {
      -          "description": "Token lifetime in seconds",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "id_token": {
      -          "description": "ID token — use as Bearer token for Laso Finance APIs",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "refresh_token": {
      -          "description": "Use with POST /auth (grant_type=refresh_token) to get a new id_token when it expires",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "bank_payment": {
      -      "properties": {
      -        "amount": {
      -          "description": "USD delivered to the bank account.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "charged_amount": {
      -          "description": "amount + fee_amount, the total debited.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "destination": {
      -          "description": "The bank account being paid, summarized. The account number is masked to its last four digits.",
      -          "properties": {
      -            "account_holder_name": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "account_number_last4": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "bank_name": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "name": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            }
      -          },
      -          "type": [
      -            "object",
      -            "null"
      -          ]
      -        },
      -        "destination_id": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "fee_amount": {
      -          "description": "Transfer fee charged on top of the amount.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "payout_id": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "state": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "timestamp": {
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "callable_base_url": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "message": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "success": {
      -      "type": [
      -        "boolean",
      -        "null"
      -      ]
      -    },
      -    "user_id": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It discloses fee structure, settlement timing, the credit-then-debit flow, failure behavior with recovery via withdraw, and wallet funding requirements. This is far beyond a typical description.

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?

Well-structured with bold section headers and front-loaded core behavior. It is long and repeats the fee twice, but every section adds operational value.

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 high-complexity banking payout with no annotations and no output schema, it covers prerequisites, failure recovery, settlement, and follow-up. An agent has enough to invoke correctly and handle outcomes.

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 already covers all 3 params, but the description adds provenance for destination_id (createBankingProfile → createBankingRecipient → addBankingDestination) and fee/price context for amount. The paid-route range '11.50-10025' is slightly inconsistent with the schema max of 50,000, which keeps this from a 5.

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?

Opens with a specific verb and resource ('Send dollars to a bank account') and clarifies the mechanism ('Pay USDC ... by ACH'). The banking-specific language and references to banking callables distinguish it from generic siblings like send_payment.

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?

Gives explicit prerequisites (bank destination, identity verification, funded wallet) and a setup sequence, plus follow-up calls. It doesn't explicitly contrast with send_payment or other transfer tools, but the conditions for using this tool are unambiguous.

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