Skip to main content
Glama

Add a payment to the Payment Index

add_payment_outcome

Adds one payment the caller made to the SwapEazi Payment Index, voluntarily: currencies, amount sent, amount landed (after every deduction), the date it landed and the route type. SwapEazi works out the all-in cost against that day's reference with its landed-cost arithmetic and publishes the row as SELF-REPORTED; with a receipt or statement in files it is read and matched to the figures (amounts within 0.5%, date within 3 days) and published as VERIFIED, and the file is not kept unless keep_file is true. Refused with the reason when a field is invalid, the date is in the future or over two years old, the day has no reference, or the amounts are more than 15% from it. Costs below -50 or above 800 bps, or payments over USD 25m, are held for review, not published. No names, company or account details are taken; the provider is masked (e.g. 'a South African bank') unless show_provider is true. Returns a withdraw token. Same as POST /api/v1/index/payments.

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": {
      "source_currency": "<source_currency>",
      "destination_currency": "<destination_currency>",
      "amount_sent": "<amount_sent>",
      "amount_landed": "<amount_landed>",
      "date": "<date>"
    },
    "name": "add_payment_outcome"
  }
}

Input Schema

NameRequiredDescriptionDefault
dateYesThe day it landed, YYYY-MM-DD.
filesNoOptional receipt or statement for VERIFIED: [{ name, media_type, data (base64) }], PDF or image.
keep_fileNotrue: keep the file after it is read. Default false: read, matched, not stored.
route_typeNobank, payout_network, otc, exchange, stablecoin, card or not_stated.
amount_sentYesWhat left, in the currency sent.
amount_landedYesWhat arrived, in the currency received, after every deduction.
provider_nameNoOptional; shown on the row only when show_provider is true.
show_providerNotrue: show provider_name on the row. Default false (masked).
source_currencyYesCurrency sent, three letters, e.g. 'ZAR'.
provider_countryNoOptional two-letter country of the provider, for the masked description.
destination_currencyYesCurrency received, three letters, e.g. 'MZN'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.1/5.0
Behavior4/5

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

The annotations only cover the generic profile (write, non-idempotent, no destruction), while the description supplies the substantive behaviour: verification matching tolerances (0.5% amounts, 3 days), file retention default, provider masking unless show_provider, refusal reasons, and a review-hold band for costs below -50 or above 800 bps and payments over USD 25m. This is well beyond what the annotations declare. It falls short of 5 only because 'held for review, not published' leaves the review outcome and resubmission path unspecified.

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?

Content is front-loaded with the verb and resource, and nearly every clause carries operative information (matching rules, retention, refusals, review holds, return value). But it is delivered as a long, heavily comma-chained passage rather than distinct sentences, which makes the refusal conditions and the masking rule harder to scan than they need to be.

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 an 11-parameter write tool with no output schema, the description covers the missing pieces an agent needs: what the call returns (a withdraw token), the failure modes that produce a refusal with a reason, the case where a submission is held rather than published, and the privacy behaviour around provider details. Nothing material about the call's lifecycle is absent.

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 genuinely deepens several parameters beyond their schema text: amount_landed is clarified as post-every-deduction for the landed-cost arithmetic, files are tied to the VERIFIED matching rules, keep_file is given a retention consequence, and show_provider is explained in terms of the actual masked output ('a South African bank'). Minor gap: route_type is only implied by 'the route type' rather than expanded here.

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 and resource ('Adds one payment the caller made to the SwapEazi Payment Index') plus the scope that separates it from read-side siblings such as payment_index: it is a voluntary self-report that becomes SELF-REPORTED or VERIFIED. An agent can tell what this tool does and what it does not do (it is not a reconciliation, route-analysis or approval tool) 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 Guidelines3/5

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

The description makes the usage condition clear ('voluntarily', with or without a receipt for VERIFIED) and enumerates the refusal and review-hold conditions, which effectively tells the agent when the call will fail. However, it never routes the agent against close siblings like record_landed, reconcile_outcome or payment_index — no explicit 'use this instead of X when…' statement, so the choice is left 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.

Resources