Skip to main content
Glama

get_wallet_link

The user's hosted wallet, as one shareable URL. Opens their Agentcard wallet in the browser: every card in one place, apply for an Agentcard card (identity verification runs right in the page). Mint it whenever the user needs a browser step (seeing cards, finishing verification when in-chat photos fail) and send them the URL. To ADD the user's own card, pass purpose "add_card": the link then opens their Agentcard vault card form directly (any card, typed once, locked with their passkey or master password, never seen by Agentcard) and works on personal logins too. Pass merchant + amount_cents to open the wallet ON the payment-approval sheet (the user picks a card and approves that exact charge) instead of the card list. Short-lived: how long it works is in expiresIn (the exact moment is in expiresAt). Say expiresIn to the user, never a date, a clock time or a time zone, and mint a fresh one when it expires. The wallet link only works for app connections (OAuth).

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_wallet_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
purposeNo"wallet" (default) opens the hosted wallet. "add_card" opens the vault card form so the user can put their own card on file; single-use, for as long as expiresIn says.
merchantNoMerchant name shown on the payment-approval sheet (with amount_cents).
amount_centsNoAmount in cents. When present, the link opens on the payment-approval sheet for this charge.

Output Schema

NameRequiredDescriptionDefault
urlNoThe hosted wallet URL to share with the user.
kindNopurpose add_card only: how the vault link signs the user in. "connected" = a one-time code to their own phone or email; "handoff" = directly; "open" = passkey setup or passkey sign-in.
messageYesReady-to-send sentence containing the URL.
sandboxNoTrue when the connection is in test mode.
expiresAtNoISO time the link stops working.
expiresInNoHow long the link works from now, in words ("about 24 hours"), from expiresAt. Say this to the user, never expiresAt.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / purpose / description
      Previous value: -"\"wallet\" (default) opens the hosted wallet. \"add_card\" opens the vault card form so the user can put their own card on file; single-use, about 15 minutes."New value: +"\"wallet\" (default) opens the hosted wallet. \"add_card\" opens the vault card form so the user can put their own card on file; single-use, for as long as expiresIn says."
    • addedOutput schema / properties / expiresIn
      Added value: +{
      +  "description": "How long the link works from now, in words (\"about 24 hours\"), from expiresAt. Say this to the user, never expiresAt.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / properties / kind / description
      Previous value: -"purpose add_card only: how the vault link signs the user in. \"connected\" = a one-time code to their own phone or email; \"handoff\" = directly; \"open\" = Face ID setup or passkey sign-in."New value: +"purpose add_card only: how the vault link signs the user in. \"connected\" = a one-time code to their own phone or email; \"handoff\" = directly; \"open\" = passkey setup or passkey sign-in."
  3. Changed2 schema fields changed
    • addedInput schema / properties / purpose
      Added value: +{
      +  "description": "\"wallet\" (default) opens the hosted wallet. \"add_card\" opens the vault card form so the user can put their own card on file; single-use, about 15 minutes.",
      +  "enum": [
      +    "wallet",
      +    "add_card"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / kind
      Added value: +{
      +  "description": "purpose add_card only: how the vault link signs the user in. \"connected\" = a one-time code to their own phone or email; \"handoff\" = directly; \"open\" = Face ID setup or passkey sign-in.",
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedInput schema / properties / amount_cents
      Added value: +{
      +  "description": "Amount in cents. When present, the link opens on the payment-approval sheet for this charge.",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / merchant
      Added value: +{
      +  "description": "Merchant name shown on the payment-approval sheet (with amount_cents).",
      +  "type": "string"
      +}
  5. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare non-read-only, non-idempotent, non-destructive; the description goes well beyond with short-lived expiry, the instruction to mint a fresh link, the privacy guarantee that the card is never seen by Agentcard, and the app-connection-only constraint. That is behavior an agent cannot infer from structured fields.

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?

The summary sentence is front-loaded and every clause carries operational meaning, but several sentences are long and parenthetically overloaded, which slows scanning. Nothing is truly wasteful, yet it could be split more cleanly.

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?

An output schema exists, so return fields needn't be documented, yet the description usefully tells the agent how to present expiresIn to the user (say the duration, never a date or time zone). Combined with mode selection, eligibility, and expiry handling, an agent has everything needed to call this correctly.

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 outcome detail the schema lacks: merchant + amount_cents makes the user pick a card and approve that exact charge rather than browse. The add_card explanation largely restates the enum description, so it is not a full tier above baseline.

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 description names a concrete artifact ("The user's hosted wallet, as one shareable URL") and immediately explains what the URL opens. Its three distinct modes (wallet, add_card, payment-approval sheet) make it unmistakable from siblings like list_cards or setup_payment_method, which surface data rather than a browser link.

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

Usage Guidelines5/5

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

It gives explicit when-to conditions ("whenever the user needs a browser step (seeing cards, finishing verification when in-chat photos fail)"), explains when to switch to purpose "add_card", and when to pass merchant + amount_cents instead of opening the card list. It also states the OAuth-only restriction, which is a hard eligibility gate an agent must check.

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