Skip to main content
Glama

create_reloadable_card

Create a reloadable card

Creates a reloadable card funded from the account holder's balance with the card issuer, and returns it. This is the same card the holder creates in the Laso dashboard, so an agent and a human end up with the same product.

The card is reusable by default (reusable: true): it stays open across charges until its limit is spent. Pass reusable: false for a single-use card that closes after its first approved charge.

This route is free — no x402 payment. The card draws on the account holder's own balance with the issuer, so Laso fronts nothing.

If the balance is short, this route answers 402. Fund it by sending USDC: GET /get-card-deposit-address returns the holder's own deposit address at the card issuer (USDC on Base only), and the balance credits within a couple of minutes. The holder can also top up with Apple or Google Pay in the dashboard.

Read the new card's number and CVV with /get-card-data?card_id=.... A card created here is Laso-issued, so its card_details come back directly — the approval step applies only to cards the holder created in a different app.

Input Schema

NameRequiredDescriptionDefault
reusableNoWhether the card stays open across charges. Defaults to `true`; `false` closes it after the first approved charge.
usd_amountYesAmount in US dollars to load onto the card, minimum $1. Sent as dollars, not cents.

Output Schema

NameRequiredDescriptionDefault
cardNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / auth_token
      Removed value: -{
      -  "description": "Laso credential. Only if the MCP connection has no Authorization header.",
      -  "type": "string"
      -}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "card": {
      +      "properties": {
      +        "balance": {
      +          "description": "Card balance in US dollars.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "card_id": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "card_type": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "expiry": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "last4": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "reusable": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "spend_limit": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "status": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "card": {
      -      "properties": {
      -        "balance": {
      -          "description": "Card balance in US dollars.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "card_id": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "card_type": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "expiry": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "last4": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "reusable": {
      -          "type": [
      -            "boolean",
      -            "null"
      -          ]
      -        },
      -        "spend_limit": {
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "status": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  3. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Discloses far beyond the sparse annotations (readOnlyHint=false, destructiveHint=false): the route is free with no x402 payment, the 402 response when the balance is short, the funding path (USDC-on-Base deposit address with ~minutes credit, Apple/Google Pay top-up), and the behavior that created cards are Laso-issued so no approval step applies. Rich operational detail an agent needs before invoking.

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

Conciseness3/5

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

Well-organized with front-loaded essentials and effective bold callouts (reusable, this route is free, if the balance is short), but verbose: roughly seven sentences for a two-parameter create. Asides like the Apple/Google Pay dashboard top-up and the 'so an agent and a human end up with the same product' framing could be trimmed without losing decision-relevant content. Structured, but not tight.

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?

Comprehensive for its complexity: an output schema exists (so return shape is covered), and the description handles error behavior (402 + funding remedy), payment cost, reusability, and follow-up reads via get-card-data. The only soft gap is that the 'approval step' for externally-created cards is referenced but never explained — minor in context.

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%, so the schema already documents both parameters (usd_amount as dollars-not-cents with $1 minimum; reusable defaulting true). The description adds narrative on the reusable semantics ('stays open across charges until its limit is spent', 'closes after its first approved charge') but this merely restates the schema meaning — no new syntax or format detail. Baseline 3 applies since the schema carries the load.

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?

States a specific verb+resource ('Creates a reloadable card funded from the account holder's balance') and grounds it in a concrete scenario — 'the same card the holder creates in the Laso dashboard.' It marks this as the free, balance-funded creation route, which distinguishes it from card siblings like order_card, fund_card_balance, and push_to_card without needing their schemas opened.

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?

Provides strong context for when to use it: it's free (no x402), it mirrors the dashboard product, and it is the route for a Laso-issued card whose data comes back directly ('the approval step applies only to cards the holder created in a different app'). It names companion follow-ups (get-card-deposit-address, get-card-data) but never crisply names a sibling alternative and the trade-off for choosing it over order_card.

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