Skip to main content
Glama
dinggi5

Kura

Request a payment

request_payment
Destructive

Request a human-approved payment from a wallet app, waiting up to 5 minutes for password confirmation; auto-approval applies only to user-enabled autopay.

Instructions

Asks the user to make a payment. The wallet app opens an approval window, and the payment is only sent once the user approves it with their password (it waits up to 5 minutes). The one exception is autopay, which the user turns on themselves — only then can a payment be approved automatically, and only within an unlocked session, a small limit, and a trusted address. Arguments: to (recipient address), amount (decimal string), token (USDC by default, or ETH), memo (what the payment is for — the user reads it to decide, so always fill it in), and optionally agent_id (the recipient's ERC-8004 number, if a service told you one — the wallet then shows the user whether the address matches that agent's registered wallet). Per-payment and daily limits and the emergency lock are enforced by the app. Never send a password as an argument — the user types it in the app. Returns: status, tx_hash, detail, and an explorer link. status is approved (the chain accepted the transfer), rejected or failed (nothing was sent — safe to ask again), or unknown: the user approved but the wallet couldn't confirm whether the transfer reached the chain (tx_hash is set when known). unknown means it MAY have been sent — never ask again on your own; tell the user and have them check the history or the tx.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesRecipient address (42 characters, starting with 0x).
memoNoWhat the payment is for — the user reads this in the approval window, so fill it in.
tokenNoToken: "USDC" (default) or "ETH".
amountYesAmount as a decimal string, for example "1.5".
agent_idNoOptional: the recipient's ERC-8004 agent number, if you know it from the service's own documentation or agent card. The wallet reads that agent's on-chain record and tells the user whether the address you are paying is the one registered for that agent. A mismatch is the useful part — a match is not proof of anything, since anyone can register. Leave it out if you don't know it; a wrong number just produces a "no such agent" note.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.4.1
    • removedInput schema / properties / agent_id / default
      Removed value: -null
    • removedInput schema / properties / agent_id / nullable
      Removed value: -true
    • removedInput schema / properties / memo / default
      Removed value: -null
    • removedInput schema / properties / memo / nullable
      Removed value: -true
    • removedInput schema / properties / token / default
      Removed value: -null
    • removedInput schema / properties / token / nullable
      Removed value: -true
  2. Changed1 schema field changedv0.4.0
    • addedInput schema / properties / agent_id
      Added value: +{
      +  "default": null,
      +  "description": "Optional: the recipient's ERC-8004 agent number, if you know it from the service's own\ndocumentation or agent card. The wallet reads that agent's on-chain record and tells the\nuser whether the address you are paying is the one registered for that agent. A mismatch\nis the useful part — a match is not proof of anything, since anyone can register.\nLeave it out if you don't know it; a wrong number just produces a \"no such agent\" note.",
      +  "format": "uint64",
      +  "minimum": 0,
      +  "nullable": true,
      +  "type": "integer"
      +}
  3. First observedv0.2.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds far more: a 5-minute approval timeout, password-entry-only-in-app, app-enforced per-payment/daily limits and emergency lock, autopay preconditions (unlocked session, small limit, trusted address), and the semantics of approved/rejected/failed/unknown including the no-retry rule on unknown. That is exactly the behavioral disclosure a payment tool needs.

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?

Front-loaded with purpose, then arguments, then return semantics in a logical order. It is long, but the length is justified by the absence of an output schema and the high stakes of an irreversible transfer; each section earns its place.

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?

With no output schema, the description fully documents the return contract (status, tx_hash, detail, explorer link) and the three status branches, plus the critical unknown-may-have-been-sent caveat. Nothing needed to invoke or handle the result 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 operative meaning beyond the schema: 'USDC by default', the instruction to always fill in memo because the user reads it, and a caution that agent_id mismatch is the useful signal while a match proves nothing. It largely restates the schema fields, but the added rationale has real value.

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 ('Asks the user to make a payment') and immediately distinguishes it from read-only siblings like get_balances/get_history by describing the approval-window flow. An agent can tell this is the mutating spend path without opening the schema.

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?

Gives explicit when-to-use and when-not-to-act guidance: the approval window is the normal path, autopay is the only auto-approval exception and only under user-enabled conditions, and on 'unknown' the agent must never retry on its own but hand off to the user. This is actionable routing logic, not vague context.

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