Skip to main content
Glama

SwapEazi

Server Details

SwapEazi is the AI agent for managing cross-border payments.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

B3/5.0

Scored across 66 tools

Disambiguation1/5

Several tools are explicit aliases (get_corridor_rates = assess_route, check_provider_liquidity = liquidity_map, prepare_payment_instruction = run_payments, track_payment_settlement = payment_run_status), and four payment-intelligence tools all share POST /api/v1/payment-analyses. Intent/route and approval/release clusters overlap heavily, so an agent cannot reliably distinguish tools without deep reading.

Naming Consistency3/5

All names are snake_case, but conventions are mixed: some are verb_noun, many are noun-only (coverage, payment_controls, payout_rules), and a large subset carries a swapeazi_ prefix while the rest do not. Readable but inconsistent.

Tool Count1/5

66 tools is far beyond a well-scoped set and includes multiple aliases and overlapping analyses. The domain is broad, but this is an extreme surface with too many near-duplicate entry points.

Completeness4/5

Coverage is broad: intent compilation, route assessment, liquidity, preparation, approval, release, reconciliation, audit records, mandates and rail accounts. Minor gaps exist (e.g. mandate update/delete, payment-run cancellation), but core lifecycle is well covered.

Available Tools

66 tools
analyse_payment_leakageFX leakage on a paymentAInspect

Where the money leaks on your current provider: total cost against the official rate in money and bps, split into FX spread and fees, and the estimated saving against the recommended eligible route (ESTIMATED, never realised). Needs existing_provider. One analysis (POST /api/v1/payment-analyses), the same service for every payment-intelligence tool. Every figure labelled LIVE, INDICATIVE, HISTORICAL or ESTIMATED; estimated savings are never realised. Free: shares the route-assessment allowance.

NameRequiredDescriptionDefault
amountNoAmount, in currency (default the source currency).
weightsNoYour own scoring weights: { total_cost, speed, reliability, liquidity, compliance }, non-negative, normalised to 1.
currencyNoThe currency of amount: the source currency, or the destination one (then it is what the supplier receives).
due_dateNoYYYY-MM-DD: a route that cannot settle by then is not eligible.
priorityNoSets the default scoring weights. Default balanced.
supplierNo
referenceNo
access_keyNoA router key (rk_...), if not sent as a Bearer header: names the routes and is not counted.
analysis_idNoRead a kept analysis (pa_...) instead of making a new one.
invoice_textNoPaste the invoice or a sentence (e.g. 'Invoice INV-2207, Lusaka Copper Supplies Ltd, Zambia. Amount due: EUR 80,000. Due 2026-11-20'). Or the fields below.
source_currencyNoISO code you pay from, e.g. EUR or ZAR.
existing_providerNoYour current provider: { provider, kind: quote | entered_rate | past_payment, rate (destination per source unit) or landed_amount, fees: { transaction, intermediary, payout } in the source currency, fees_deducted_destination, quoted_at, valid_until }.
beneficiary_amountNoWhat the supplier must receive, in the destination currency (instead of amount).
destination_countryNoISO 3166 alpha-2 or name, e.g. ZM or Mozambique.
destination_currencyNoISO code the supplier is paid in, e.g. ZMW. Or destination_country.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses that figures are labelled LIVE, INDICATIVE, HISTORICAL, or ESTIMATED, that estimated savings are never realised, that it calls POST /api/v1/payment-analyses, and that it shares the free route-assessment allowance. It stops short of fully explaining persistence, side effects, or authentication behavior beyond the schema's access_key field.

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 purpose is front-loaded and the description is dense with useful context. It repeats the point that estimated amounts are never realised, but the overall length is appropriate for the tool's complexity.

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?

For a 15-parameter analytical tool with no output schema and no annotations, the description explains the output categories, data-quality labels, prerequisite, endpoint, and allowance sharing. It remains somewhat incomplete about analysis persistence and when to read an existing analysis_id versus create a new one.

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 87%, so the schema already carries most parameter meaning. The description adds only the important prerequisite that existing_provider is needed, without adding syntax or interpretation for the other 14 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific analytical purpose: measuring payment cost versus the official rate, split into FX spread and fees, with estimated savings against a recommended route. It is clearly not a generic cost calculator or route recommender, though it does not explicitly name sibling tools it should be preferred over.

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?

It gives a clear prerequisite, 'Needs existing_provider', and frames the tool around analysing a current provider. However, it does not explicitly say when to use this instead of siblings such as calculate_payment_cost, assess_route, or compare_payment_providers.

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

approval_statusApproval statusAInspect

Read a payout the agent held for approval by approval_id: awaiting_approval while it is pending; approved with the agent_approval { id, role } to pass to record_release; rejected with the approver's reason; or expired once its release-by date passed undecided. Each decision is signed and chained to the agent's decision record. Do not release a payout while it is awaiting approval, rejected or expired. Read-only. Needs the organisation's key; demo items (aprd_) do not.

NameRequiredDescriptionDefault
approval_idYesapr_… (or aprd_… for a demo item), from POST /api/v1/agent/run with policy_id.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does most of it: it declares the operation read-only, requires the organisation's key, flags that aprd_ demo items do not work, and describes the state machine including the signed, chained decision record. It stops short of stating what happens for an unknown or malformed approval_id, or how long an issued agent_approval remains valid before expiry.

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 verb and resource, and every clause carries information — the state list, the release hand-off, the safety warning, and the auth caveat. The opening sentence is a long multi-clause run-on of semicolon-separated states, which slightly hurts scannability for a first read.

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?

There is no output schema, and the description compensates fully by enumerating the four possible status payloads and the agent_approval shape. For a one-parameter read-only status lookup, an agent has everything needed to call it and act on the result.

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% and the single parameter is already documented as apr_…/aprd_…, so the baseline is 3. The description adds genuine meaning on top by explaining that an aprd_ item bypasses the organisation key requirement, which the schema does not say.

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 ("Read") plus resource ("a payout the agent held for approval") and the key it is addressed by (approval_id), then enumerates the four terminal states it can return. That is enough for an agent to distinguish it from request_payment_approval, approve_payment_run, release_status, or verify_release_record without opening any schema.

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?

It gives a clear when-to-use (look up the state of a held payout) and an explicit when-not-to-proceed ("Do not release a payout while it is awaiting approval, rejected or expired"), plus the hand-off path: pass the returned agent_approval { id, role } to record_release. What it lacks is any naming of adjacent siblings — e.g. release_status or approve_payment_run — to explain which read/decision tool to pick instead.

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

approve_payment_runRecord a named person's approval of a payment runAInspect

Records the approval of a named person (approver: { name, role }) for the run's prepared payments (payments: "all_prepared") or listed payment_ids (held ones need acknowledge: true), and creates one release record per approved payment. Each approved payment returns release_in_own_bank: beneficiary, amount, currency, reference, which of the business's own accounts to pay from and the cut-off, for the business to release itself in its own bank or rail portal; then record what landed with reconcile_payment. An agent cannot approve on its own: this tool records an approval only when the run's policy sets agent_may_record_approval and names the person who approved; otherwise it returns how the person approves (POST /api/v1/payment-runs/{id}/approve). Never sends or moves money.

NameRequiredDescriptionDefault
run_idYespr_... or pr_sample.
approverYes{ name, role, id? }: the person who approved. Required.
paymentsNo"all_prepared" or a list of payment_ids.
access_keyNoA router key (rk_...), if not sent as a Bearer header.
acknowledgeNotrue to approve listed payments that need attention or have no evidence, once the person has assessed them.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the write side effect (one release record per approved payment), states the guardrail that an agent cannot approve on its own, and says plainly 'Never sends or moves money.' It does not say whether a recorded approval is immutable or how to correct a mistaken approval, which is a meaningful gap for an approval-recording tool.

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?

Purpose is front-loaded and every clause carries information (policy gate, acknowledge rule, returned release instructions, follow-up tool). The weakness is form: it is one very long run-on sentence with inline quoted literals, which makes it harder to parse quickly than a few short sentences would be.

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?

For a 5-parameter, nested-object, no-output-schema mutation tool, it covers the essentials: gating policy, side effect, non-movement of funds, and the shape of the per-payment return (release_in_own_bank with beneficiary, amount, currency, reference, source account, cut-off). It leaves out error/edge behavior such as calling against a run with nothing prepared or replaying an already-recorded approval.

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 linkage the schema does not spell out: held payments require acknowledge: true, payments accepts either the literal "all_prepared" or a list of payment_ids, and approver is the { name, role } of the actual approving person. This meaningfully reduces the chance of a mis-invocation.

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 opening clause gives a precise verb and resource: it records a named person's approval of a run's prepared payments and creates one release record per approved payment. This is clearly distinguishable from siblings such as request_payment_approval (asks for approval), release_status (reads status), and reconcile_payment (records what landed).

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 states the prerequisite (the run's policy must set agent_may_record_approval and name the approver), the fallback when it does not hold (returns the person's own approval path via POST /api/v1/payment-runs/{id}/approve), the precondition for held/pending items (acknowledge: true once assessed), and the follow-on tool (reconcile_payment). That is explicit when-to-use, when-not, and next-step routing.

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

assess_routeAssess a cross-border payment route before payingAInspect

Before a business commits to a cross-border payment, assess the corridor on SwapEazi's independent data. Returns deterministic JSON: the routes known for the pair, each cost and FX figure with its source, read time, freshness (fresh, aging, stale, unknown) and evidence type (observed, executable, indicative, published; the official rate as reference), settlement facts, the requirements on record with sources, what changed since the last assessment of the corridor, data-quality flags (stale, contradictory, missing, indicative only), unknowns, and the evidence behind each finding, under an assessment_id whose record is kept and retrievable (GET /api/v1/route-assessments/{id}; a content hash, not a signature). Never ranks a route as advice, never executes, never claims a figure is executable unless a provider's firm quote is on record. Free; same as GET /api/v1/route-assessments.

NameRequiredDescriptionDefault
toNoDestination currency, ISO code, e.g. ZMW.
fromNoSource currency, ISO code, e.g. EUR.
sortNoYour chosen order for the routes: landed cost against the official rate, stated days to land, or the measured 7-day answer rate. It is your order, stated as yours; SwapEazi does not rank routes.
as_ofNoAssessment time, ISO 8601, within 15 minutes of now (default now). A past assessment is retrieved by assessment_id, never recomputed.
amountNoAmount leaving, in the source currency. Optional: without it the corridor is assessed at about USD 10,000, labelled.
corridorNoInstead of from and to: e.g. EUR-ZMW.
assessment_idNoRetrieve a kept assessment record instead of making a new one.
exclude_typesNoLeave out routes of these rail types. Each route left out is listed with the reason.
include_typesNoKeep only routes of these rail types. Each route left out is listed with the reason.
min_answer_rateNoPercent, 0 to 100: leave out routes whose measured 7-day answer rate is lower, or not measured (not enough reads). Each is listed with the reason.

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: deterministic JSON output, per-figure source/read time/freshness/evidence type, data-quality flags, unknowns, and a kept record retrievable by assessment_id with a content hash rather than a signature. It also states the negative guarantees (never ranks, never executes, never claims executability without a firm quote on record) and that the call is free — behavior an agent cannot get from any structured field here.

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 purpose and the pre-payment timing are front-loaded, and the closing sentence of guarantees is well placed. The middle is a single long run-on inventory of return fields, which is dense and hard to scan, though nearly every clause carries information an agent would otherwise lack given no output schema.

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?

For a 10-parameter tool with no annotations and no output schema, the description is unusually complete: it explains the shape of the result, the freshness and evidence-type vocabularies, quality flags, and record retention. Minor gaps remain — nothing about auth/permissions, rate limits, or what is returned for an unknown or unassessed corridor.

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% and each parameter is already documented in detail, including the default-amount label, the 15-minute as_of window, and the include/exclude behaviour. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

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 first sentence names a specific verb and resource ('assess the corridor') and fixes the scope to pre-commitment cross-border payments on SwapEazi's own data. The closing clauses ('never ranks a route as advice, never executes') carve out a clear boundary against rank/recommend and execution siblings such as recommend_payment_route or submit_payment, and the endpoint reference anchors it to GET /api/v1/route-assessments.

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?

It gives clear timing guidance ('Before a business commits to a cross-border payment') and states the retrieval path for past assessments rather than recomputation. It does not, however, name an explicit alternative for adjacent needs (e.g. price_routes, compare_payment_providers, recommend_payment_route) or state when not to use it, so an agent still has to infer routing among the rich sibling set.

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

calculate_payment_costCalculate what a payment costsAInspect

What this payment costs through your current provider against the official rate: effective rate, FX spread, transaction, intermediary and payout fees, total cost in money and bps, and what the beneficiary receives; with each alternative route's cost at the same size. One analysis (POST /api/v1/payment-analyses), the same service for every payment-intelligence tool. Every figure labelled LIVE, INDICATIVE, HISTORICAL or ESTIMATED; estimated savings are never realised. Free: shares the route-assessment allowance.

NameRequiredDescriptionDefault
amountNoAmount, in currency (default the source currency).
weightsNoYour own scoring weights: { total_cost, speed, reliability, liquidity, compliance }, non-negative, normalised to 1.
currencyNoThe currency of amount: the source currency, or the destination one (then it is what the supplier receives).
due_dateNoYYYY-MM-DD: a route that cannot settle by then is not eligible.
priorityNoSets the default scoring weights. Default balanced.
supplierNo
referenceNo
access_keyNoA router key (rk_...), if not sent as a Bearer header: names the routes and is not counted.
analysis_idNoRead a kept analysis (pa_...) instead of making a new one.
invoice_textNoPaste the invoice or a sentence (e.g. 'Invoice INV-2207, Lusaka Copper Supplies Ltd, Zambia. Amount due: EUR 80,000. Due 2026-11-20'). Or the fields below.
source_currencyNoISO code you pay from, e.g. EUR or ZAR.
existing_providerNoYour current provider: { provider, kind: quote | entered_rate | past_payment, rate (destination per source unit) or landed_amount, fees: { transaction, intermediary, payout } in the source currency, fees_deducted_destination, quoted_at, valid_until }.
beneficiary_amountNoWhat the supplier must receive, in the destination currency (instead of amount).
destination_countryNoISO 3166 alpha-2 or name, e.g. ZM or Mozambique.
destination_currencyNoISO code the supplier is paid in, e.g. ZMW. Or destination_country.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does real work: it discloses the backend model (one analysis via POST /api/v1/payment-analyses, a persisted pa_ record), the data-quality taxonomy applied to every figure (LIVE, INDICATIVE, HISTORICAL, ESTIMATED), the explicit caveat that estimated savings are never realised, and quota behaviour (free, shares the route-assessment allowance). It stops short of stating authentication requirements, error behaviour, or latency, and the phrase 'the same service for every payment-intelligence tool' is left unexplained.

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?

The lead clause is front-loaded with the right information, and the trailing caveats about data labels and quota earn their place. However, the prose is telegraphic and runs a long fragment chain ('with each alternative route's cost at the same size. One analysis (POST /api/v1/payment-analyses), the same service for every payment-intelligence tool'), and that last clause adds ambiguity rather than clarity.

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?

For a 15-parameter, nested-object tool with no output schema and no annotations, the description covers the return content in enough detail that an agent knows what comes back, plus the data-quality labelling and quota constraints. The main gap is that it never positions itself against the many adjacent pricing/route tools, so an agent must guess whether to call it, price_routes, or assess_route.

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 87%, so the parameters are already documented (currency semantics, due_date eligibility, beneficiary_amount vs amount, existing_provider shape). The description adds little parameter-level meaning beyond establishing that comparison happens 'at the same size', which loosely ties amount to the alternative-route comparison. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence is a specific verb-plus-resource statement: it computes what a payment costs through the current provider versus the official rate, listing the exact figures returned (effective rate, FX spread, transaction/intermediary/payout fees, total in money and bps, beneficiary receives). It also notes it returns each alternative route's cost at the same size. It never names a sibling to use instead (price_routes, assess_route, compare_payment_providers, swapeazi_landed_cost all overlap), so differentiation is left to inference.

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?

Usage is implied by the enumerated output: an agent can infer this is the tool for a full cost breakdown of a specific payment size. There is no explicit 'use this when / use X instead' routing despite roughly 60 sibling tools with overlapping pricing scope. The 'Free: shares the route-assessment allowance' note gives a cost-of-calling cue but not selection guidance.

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

check_constraintsHold a map to constraintsAInspect

Re-evaluate every candidate in a stored Options Map against constraints supplied now: the principal's own policy, an AP2 open (intent) mandate, a Verifiable Intent credential, or x402 payment requirements (accepts[] with the listed price, verified against the reference). Each row comes back inside, outside or unknown, and carries the map's own route_family, regulatory_risk and onboarding_status/onboarding_gap for that candidate, so an agent can drop ineligible or blocked rows without a second call. Nothing is executed or issued. Free.

NameRequiredDescriptionDefault
x402No{ accepts: PaymentRequirements[], price: { currency, amount } }.
map_idYesThe map_id from map_options.
policy_idNoA release policy of this organisation (needs its key): supplies the limit and the map-age rule.
ap2_mandateNoAn AP2 intent mandate; recognised fields are read, the rest listed as unevaluable.
constraintsNomax_all_in_bps_vs_ref, max_settlement_days, allowed_rail_classes, disallowed_providers, must_include_provider_id, allowed_providers (restrict every row to your own already-connected panel, by provider id or name — a candidate outside it evaluates outside, never hidden; for embedding this assessment as a mandatory step inside your own already-licensed payment run, the way an EMS asks which of its own connected brokers should carry an order), corporate_only. Stablecoin risk appetite, the client's own thresholds held to each token's dated profile (/stablecoins): stablecoin_attestation_max_age_days, stablecoin_peg_min_share_within_50bps (0 to 1, last 30 days), stablecoin_peg_max_worst_bps (last 30 days), stablecoin_exit_depth_covers_amount (true), stablecoin_supervised_in (ISO codes or EU), stablecoin_no_single_key_mint_freeze (true). A fact not on record makes the row unknown, never inside.
verifiable_intentNoA Verifiable Intent credential: the serialised SD-JWT, or decoded mandate objects. Amount limits and expiry are held to the intent; where the payment crosses currencies, the result says the mandate does not bound the conversion cost.
instrument_classes_allowedNo

TDQS

A4/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden. It explicitly says nothing is executed or issued and that the tool is free, and it describes result categories (inside/outside/unknown) and enriched row fields, though it does not cover auth, rate limits, or error behavior.

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?

It is dense and front-loaded, opening with the action and closing with safety and cost. A bulleted structure would be easier to scan, but every sentence contributes information rather than restating the name.

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?

For a 7-parameter, nested-object tool with no annotations and no output schema, the description is substantially complete: it covers inputs conceptually, return-row verdicts and carried fields, and non-execution. Some operational details (policy key requirement, map-age rule, full response shape) are left to the schema or omitted.

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?

With 86% schema coverage, the baseline is 3; the description adds real semantic value by explaining constraint sources (policy, AP2 mandate, Verifiable Intent, x402 accepts/price) and the unknown-propagation rule. It still does not add meaning for every parameter, such as instrument_classes_allowed or map_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb-resource pair — re-evaluate every candidate in a stored Options Map against constraints supplied now — and scopes it to four constraint sources. It implies distinction from single-item checkers like check_payment_against_mandate by operating over map rows, though it never names a sibling or exclusion explicitly.

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?

It makes the usage context clear: a stored Options Map plus constraints supplied now, with the benefit of dropping ineligible or blocked rows without a second call. It does not state when not to use it or name alternative sibling tools, so it falls short of a 5.

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

check_payment_against_mandateHold one payment against a mandateAInspect

Verify one payment against a mandate before it is prepared. A breach returns mandate_violation and the rule that failed. A pass still needs the named person to approve. Nothing is sent. A router key is required. The verification is recorded when the payment is prepared inside a payment run.

NameRequiredDescriptionDefault
toYes
fromYes
railNo
amountYes
agent_idNo
currencyYes
access_keyNo
mandate_idYes
cost_above_official_pctNoNull when the gap to the official rate is not on record. Never treated as zero.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does much of it: it discloses that nothing is sent (no side effects), that a breach returns mandate_violation plus the failing rule, and that verification is only persisted when the payment is prepared inside a payment run. This last point is a genuinely non-obvious behavioral caveat. It does not cover authorization requirements in concrete terms or failure modes beyond mandate breach.

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?

Six short sentences, front-loaded with purpose and outcome semantics, with no filler. The 'A router key is required' sentence is terse to the point of ambiguity, but otherwise every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter mutation-adjacent check with no annotations and no output schema, the behavior and return-on-breach story is adequately covered, but the parameter surface is essentially undocumented. An agent can decide whether to call it but will struggle to populate the inputs correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 11%, with nine parameters and just one documented, so the description must compensate and largely does not. 'A router key is required' gestures at a credential parameter but never maps it to access_key, agent_id, or rail, and the meaning of from/to, rail values, and mandate_id is left entirely to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and object ('Verify one payment against a mandate') and pins the moment of use ('before it is prepared'), which separates it from mandate-management siblings like get_mandate or create_mandate. It stops short of naming a specific alternative sibling, so an agent must infer the boundary with check_constraints or payout_rules.

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?

Timing guidance is explicit ('before it is prepared'), and the description clarifies that a pass is not an approval, implicitly routing approval to request_payment_approval or approve_payment_run. There are no explicit exclusions or named alternatives, so the routing is clear but not fully disambiguated.

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

check_provider_liquidityLiquidity at this payment's sizeCInspect

Spec v1.0 name for liquidity_map: each venue type with whether the evidence read shows depth at the size, slippage and landing cost with a Rate Receipt, or Being measured with the reason. Same arguments as liquidity_map.

NameRequiredDescriptionDefault
toNo
fromNo
pairNoe.g. EUR-ZMW. Or from and to.
amountYes
access_keyNo
amount_currencyNo

TDQS

C2.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the possible result states for each venue type, including Rate Receipt-backed values and a 'Being measured' state with a reason. However, it does not state whether the operation is read-only, whether access_key is required for authorization, or how errors and missing evidence are handled.

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?

The description is compact, but it front-loads the cryptic 'Spec v1.0 name for liquidity_map' framing before explaining the actual output. The single dense sentence is reasonably efficient, yet its technical shorthand makes the purpose harder to parse than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with no annotations, no output schema, and only 17% schema description coverage, the definition leaves too much unexplained. It covers the result categories but does not explain parameter semantics, authorization behavior, or practical usage relative to liquidity_map and the other liquidity-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is very low at 17%, so the description needs to compensate for the undefined parameters. It only hints that amount represents the payment size and defers the rest by saying 'Same arguments as liquidity_map,' leaving from, to, access_key, and amount_currency unexplained in this definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource and the key output shape: liquidity by venue type, including depth at the requested size, slippage, landing cost, Rate Receipt status, or a 'Being measured' reason. It clearly identifies this as the spec v1.0 name for liquidity_map, but that alias relationship is not the same as helping an agent choose between the two tools.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus liquidity_map or any of the other payment and routing tools. The only routing information is the statement that it takes the same arguments as liquidity_map, which does not tell the agent when this tool is preferred.

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

compare_payment_providersCompare payment providers for one paymentAInspect

Your current provider beside every route on record for the corridor at the same amount and against the same official rate: all-in bps, total cost, beneficiary amount, eligibility and score, plus routes known without figures. One analysis (POST /api/v1/payment-analyses), the same service for every payment-intelligence tool. Every figure labelled LIVE, INDICATIVE, HISTORICAL or ESTIMATED; estimated savings are never realised. Free: shares the route-assessment allowance.

NameRequiredDescriptionDefault
amountNoAmount, in currency (default the source currency).
weightsNoYour own scoring weights: { total_cost, speed, reliability, liquidity, compliance }, non-negative, normalised to 1.
currencyNoThe currency of amount: the source currency, or the destination one (then it is what the supplier receives).
due_dateNoYYYY-MM-DD: a route that cannot settle by then is not eligible.
priorityNoSets the default scoring weights. Default balanced.
supplierNo
referenceNo
access_keyNoA router key (rk_...), if not sent as a Bearer header: names the routes and is not counted.
analysis_idNoRead a kept analysis (pa_...) instead of making a new one.
invoice_textNoPaste the invoice or a sentence (e.g. 'Invoice INV-2207, Lusaka Copper Supplies Ltd, Zambia. Amount due: EUR 80,000. Due 2026-11-20'). Or the fields below.
source_currencyNoISO code you pay from, e.g. EUR or ZAR.
existing_providerNoYour current provider: { provider, kind: quote | entered_rate | past_payment, rate (destination per source unit) or landed_amount, fees: { transaction, intermediary, payout } in the source currency, fees_deducted_destination, quoted_at, valid_until }.
beneficiary_amountNoWhat the supplier must receive, in the destination currency (instead of amount).
destination_countryNoISO 3166 alpha-2 or name, e.g. ZM or Mozambique.
destination_currencyNoISO code the supplier is paid in, e.g. ZMW. Or destination_country.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full load and does substantial work: it discloses that the call POSTs /api/v1/payment-analyses and persists a readable analysis, that every figure is tagged LIVE/INDICATIVE/HISTORICAL/ESTIMATED, that estimated savings are never realised, and that the call is free but draws on the shared route-assessment allowance (a quota constraint agents must budget for). Residual gaps are error behaviour and the fact that routes without figures are still returned, which is mentioned but not explained.

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?

Four compact sentences, information-dense with essentially no filler; the output fields come first and the provenance and quota caveats follow. The opening is elliptical (no explicit verb, 'Your current provider beside every route on record') and the phrase 'routes known without figures' is cryptic on first read, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, nested-object tool with no output schema and no annotations, the description covers return content, provenance labels, persistence and quota well. The critical omission is input sufficiency: with zero required parameters, an agent gets no guidance on the minimum viable call (e.g. invoice_text alone, or amount plus source/destination, or a corridor), nor on precedence when invoice_text and the explicit fields conflict.

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 87%, so the schema already explains almost every parameter, and the baseline of 3 applies. The description adds context that the comparison is run at the same amount and against the same official rate, which explains why amount/currency/source/destination must be pinned down, but it adds no syntax or constraint detail for the 15 parameters, including the nested weights and existing_provider objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states precisely what is produced: the agent's current provider set beside every recorded route for the corridor, at identical amount and official rate, with named output fields (all-in bps, total cost, beneficiary amount, eligibility, score). That is a specific comparison resource rather than a restatement of the title. It stops short of distinguishing itself from close siblings such as swapeazi_route_compare, price_routes, calculate_payment_cost or recommend_payment_route, and 'the same service for every payment-intelligence tool' describes infrastructure rather than scope.

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?

Usage is implied rather than stated: the framing around 'your current provider' signals this is the benchmarking tool when the caller already has an incumbent quote or past payment. The description also documents the read-vs-create branch ('analysis_id ... instead of making a new one'), which is real guidance. But with 60+ siblings and four or five near-neighbours, it never says when to pick this over assess_route, price_routes or recommend_payment_route, and offers no exclusions.

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

compile_intentStructure a payment intentAInspect

Turn a corporate FX or payment requirement into a PaymentIntent: the currencies, the amount and whether it is what leaves or what must land, the value date, and the principal's own constraints. Accepts a sentence ('pay a Japanese supplier JPY 800m by 15 October') with the source currency, a flat form, or a full intent. The source currency is never assumed. Returns the intent, its hash and every assumption made. Free.

NameRequiredDescriptionDefault
toNoISO 4217 code it must land in.
fromNoISO 4217 code the money leaves in.
textNoThe requirement in plain words.
payerNoWho is paying, so onboarding_status can be resolved per candidate instead of defaulting to onboardable-with-steps. All optional.
amountNoThe amount.
value_dateNoISO date the money must land by.
amount_basisNoWhether the amount leaves (source) or must land (destination). Default destination.
max_all_in_bpsNoThe principal's own limit on all-in cost against the reference, in basis points.
max_settlement_daysNoThe principal's own limit on settlement time.
allowed_rail_classesNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavior: the source currency is never assumed, the response includes the intent, its hash, and every assumption made, and it is marked 'Free'. Those are meaningful traits (determinism-ish, assumption disclosure, no cost) an agent cannot get from the schema. It leaves out whether compilation is side-effect-free/idempotent and what happens when the text is ambiguous.

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?

Three sentences, front-loaded with the core transformation, then input modes, then return values. Each sentence carries content. The trailing one-word 'Free.' is terse to the point of ambiguity and would read better as a clause about cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with a nested payer object, no annotations and no output schema, the description does cover what comes back (intent, hash, assumptions) and the input shapes. The notable gap is that with zero required parameters it never says what a valid call looks like at minimum or how partial inputs (e.g., text only) are resolved. Error and ambiguity behavior is also unaddressed.

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 already 90%, so the baseline is 3; the description earns above that by explaining the polymorphic input surface (a plain sentence, a flat form, or a full intent) and by glossing amount_basis as 'what leaves or what must land'. That reframing makes the source/destination distinction easier to act on than the schema text alone. It adds nothing, though, about how payer sub-fields interact or which combination is minimally sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and artifact: turning a corporate FX or payment requirement into a PaymentIntent, and it enumerates the fields it captures (currencies, amount, amount basis, value date, constraints). That is far more than a restatement of the name. It stops short of naming which sibling consumes the output (route_intent, decide_intent, payment_intent), so the compile-vs-route boundary is left implicit.

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 example ('pay a Japanese supplier JPY 800m by 15 October') and the three accepted input shapes (sentence, flat form, full intent) implicitly tell an agent how to call it, and the framing suggests this is the entry point of the payment flow. However, there is no explicit when-to-use versus when-not-to-use, no mention of route_intent/decide_intent/payment_intent as the next steps, and no statement of the minimum input needed when zero parameters are required.

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

confirm_paymentConfirm a prepared payment on chainAInspect

After your wallet has sent a payment prepared by prepare_payment, give its prepare_id and transaction hash. SwapEazi reads the receipt on chain, verifies it came from the prepared wallet and matches the prepared transaction, and returns a signed payment record for the audit trail. Read-only on chain; moves nothing.

NameRequiredDescriptionDefault
tx_hashYes
contributeNoTrue adds one anonymised row (token, network, month, size band) to SwapEazi's cost research.
prepare_idYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the key behavior—on-chain receipt reading, verification that the receipt came from the prepared wallet and matches the prepared transaction, returning a signed audit record, and that it is read-only and moves nothing. However, it omits failure/mismatch behavior and does not mention the optional contribute data-sharing side effect (though the schema documents that parameter).

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

Conciseness5/5

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

Two tight sentences, front-loaded with the precondition and then the action and result. Every clause adds value and there is no filler.

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?

Given no annotations, no output schema, and low schema coverage, the description supplies the necessary chain of events, verification behavior, and return value. It still leaves the optional contribute privacy trade-off and mismatch/error handling unstated, so it is strong but not fully complete.

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 only 33%, so the description must compensate. It explains that prepare_id identifies the prepared payment and tx_hash is the transaction hash the wallet sent, and it describes what the tool does with them (verify against the prepared wallet and transaction). The optional contribute parameter is covered only by the schema description, not the tool description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: confirm a payment that the wallet has already sent after prepare_payment, reading the receipt and returning a signed record. This clearly separates it from prepare_payment (preparation) and implicitly from submit_payment (sending), though it does not explicitly differentiate from reconcile_payment or reconcile_outcome.

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 a clear precondition: use this after your wallet has sent a payment prepared by prepare_payment, supplying the prepare_id and transaction hash. It lacks explicit when-not guidance or named alternatives for reconciliation scenarios.

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

connect_rail_accountConnect your own rail accountAInspect

Keyed. Connects the business's OWN account at a rail (yellowcard) for reads and sandbox sending; production sending is off unless the deployment enables it, and the default flow is that the business releases payments itself in its own portal with its API key and secret and a required cap per payment. The credentials are proven with a read (no payment is sent), encrypted at rest and never returned: answers show the key's last four characters and the created date. Prefer POST /api/v1/rail-connections from your own software: credentials passed here travel through the agent's context. SwapEazi holds no funds and has no account in the flow.

NameRequiredDescriptionDefault
envNo
railYes
labelNo
secretYes
senderNo
api_keyYes
access_keyNo
cap_per_paymentYes

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: production sending is off unless the deployment enables it, credentials are proven with a read (no payment sent), encrypted at rest, never returned, and only the last four characters plus created date surface in responses. It also discloses that SwapEazi holds no funds and has no account in the flow, and flags a real risk — credentials traversing the agent's context.

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?

It is a dense single paragraph that front-loads the core action before the caveats and the alternative-path recommendation, and nearly every clause carries information. The leading 'Keyed.' is dead weight and the multi-clause sentences around the default release flow take effort to parse.

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?

For an 8-parameter, no-annotation, no-output-schema mutation tool this is close to complete: it covers safety implications, the production/sandbox distinction, credential handling, and even what the response will reveal. The gaps are the undocumented sender and access_key parameters and no statement about what happens on failure or duplicate connection.

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 0%, so the schema documents nothing beyond types and enums; the description partially compensates by explaining rail (yellowcard only), api_key/secret, the required cap_per_payment per payment, and the sandbox/production sending distinction behind env. Three parameters — label, sender (a nested object), and access_key — receive no explanation anywhere, and the cap_per_payment currency/value structure is unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — connecting the business's own account at a rail (yellowcard) — and bounds the scope to reads and sandbox sending. It is clearly distinct from list_rail_accounts and remove_rail_account in the sibling set, though it never names those siblings explicitly. The opening token 'Keyed.' is opaque and adds no clarity.

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?

It gives explicit directional guidance: prefer POST /api/v1/rail-connections from your own software because credentials passed through this tool travel in the agent's context, and it explains the default operational flow (business releases payments itself in its own portal). That is strong when-to-use context. It stops short of telling the agent when NOT to use it or pointing at list_rail_accounts to check existing connections first.

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

corridor_eventsCorridor news for a pair or currencyAInspect

Dated corridor news for a currency pair or one currency: provider route launches and exits, licences granted or revoked, central-bank FX and payment rule changes, devaluations, limit changes and outages, collected from payments press and regulator feeds across Africa, Latin America, Asia, the Middle East and Turkey. Each event carries its source link and an evidence label: 'official source' (a regulator or central bank published it), 'announced, unverified' (a company or the press reported it), or 'headline only, not read'. Listed newest first; route launches for the exact pair come back separately as announced_routes, never as payment options. Free.

NameRequiredDescriptionDefault
daysNoLook-back window, 1 to 365. Default 90.
kindNoOptional comma-separated kinds: route_launch, route_exit, licence_granted, licence_revoked, rule_change, devaluation, limit_change, outage, partnership, other.
pairNoSix letters, e.g. NGNCNY. Matches either currency or the exact corridor.
limitNoEvents returned, 1 to 100. Default 25.
currencyNoOne ISO code, e.g. NGN, when no pair is given.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it names the source pool (payments press and regulator feeds), defines three evidence labels with their meanings, states ordering (newest first), discloses the announced_routes split, and notes the tool is free. It omits operational traits like rate limits or paging beyond the limit cap, which keeps it short of a 5.

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?

One dense paragraph, but it is front-loaded with purpose and scope, and the enumerations of event types and evidence labels each add decision-relevant information. The regional list is the only mildly expendable phrase.

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?

There is no output schema and no annotations, yet the description sketches the return shape well (per-event source link, evidence label, newest-first ordering, separate announced_routes collection), which is the main thing an agent needs before calling a news-feed tool. Missing only operational details such as rate limits or empty-result behavior.

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 coverage is 100%, so days, kind, pair, limit, and currency are already documented, and the description adds little parameter-level detail beyond listing the event categories that correspond to `kind` values. Baseline 3 is appropriate given the schema does the heavy lifting.

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 opens with a specific verb+resource ("Dated corridor news for a currency pair or one currency") and immediately enumerates the event classes it returns (route launches/exits, licences, central-bank rule changes, devaluations, limit changes, outages) plus the geographic scope. That is enough for an agent to separate it from rate, registry, or route-selection siblings such as get_corridor_rates or map_options.

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?

Usage is implied rather than stated: the tool is for news/regulatory events, and the note that pair route launches "come back separately as announced_routes, never as payment options" steers the agent away from treating this as a route-selection tool. However, no sibling is named as the alternative and there is no explicit when-not-to-use statement.

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

coverageCoverage for a pair and sizeBInspect

How much of the map for a currency pair and size rests on evidence: the coverage tier (evidenced, partial or inferred), how many reconciled outcomes sit behind it, how many candidates carry economics, the reference's publishers, error band and type (hard_peg, derived_peg, fixing_median or home_central_bank), and whether a failure rate is published yet. With country (e.g. CI for XOF), also that country's profile and measured receipts. Free.

NameRequiredDescriptionDefault
toYes
fromYes
amountNo
countryNoOptional ISO 3166-1 alpha-2 country, e.g. CI for XOF.
amount_basisNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden and does a reasonable job: it reveals the tier vocabulary (evidenced, partial, inferred), that failure rate may not be published yet, and that the call is free — provenance and cost traits an agent could not infer. It never states explicitly that this is a read-only, non-mutating lookup, nor anything about authentication or rate limits, which is a meaningful gap for an annotation-free tool.

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?

The key idea is front-loaded in the first clause, which is good, but the remainder is a single run-on sentence that stacks seven returned fields into a comma chain, making it hard to scan. Every element is arguably informative, yet the packaging costs readability.

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?

With no output schema and only 20% parameter documentation, the description effectively doubles as the response contract — listing every returned field including the peg-type enum values — which is exactly what is needed here. The remaining shortfall is the undocumented amount_basis parameter and the absent read-only/permission framing.

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 coverage is only 20%, so the description must compensate, and it partially does: it names the pair and 'size' (the amount), and explains country with an ISO example (CI for XOF). However, amount_basis with its source/destination enum is never mentioned, and the from/to pair semantics are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause states a specific resource and scope: coverage of the map for a given currency pair and size, enumerating the tier, outcome counts, publishers, error band, and peg type. An agent knows exactly what data comes back. What it does not do is distinguish itself from the near-identical siblings get_coverage and swapeazi_coverage, which an agent must disambiguate on its own.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives, despite two obviously overlapping sibling tools. The only usage-adjacent signal is the trailing 'Free.', which tells the agent about cost but not about selection. The optional country argument is described in terms of what it returns rather than when to supply it.

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

create_mandateCreate a per-agent spend mandateAInspect

Create a spend mandate for an agent: per-payment cap, period cap, currencies, corridors, rails (bank, provider, stablecoin_wallet), optional cap on cost above the official rate, the person who approves, and an expiry. A router key is required. A person still approves every payment. The mandate does not send money.

NameRequiredDescriptionDefault
periodYes
agent_idYes
access_keyNoA router key (rk_...), if not sent as a Bearer header.
expires_atYesISO 8601, in the future.
rails_allowedYes
max_per_periodYes{ amount, currency }
max_per_paymentYes{ amount, currency }
corridors_allowedYese.g. USDT-ZAR
approver_person_idYesThe person who approves. An agent cannot approve alone.
currencies_allowedYes
max_cost_above_official_pctNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that a router key is required, a person still approves every payment, and the mandate does not move money, but it does not cover idempotency, permission requirements, failure modes, or what happens if a mandate already exists.

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

Conciseness5/5

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

The description is three tight sentences that front-load the created resource, enumerate its main fields, and then add the key constraints. There is little wasted wording, and the most important behavioral caveats are placed at the end for emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter create tool with 9 required fields, no annotations, and no output schema, the description covers the core concept and several important constraints. It remains incomplete on full parameter semantics, return value, validation behavior, and side effects, so it is adequate but not fully complete.

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 coverage is 55%, and the description adds meaning for several parameters: rails are listed with their enum values, approver_person_id is framed as the human approver, and access_key is described as a router key. It still leaves agent_id, period semantics, and the cap-object shape largely to the schema, so it partially but not fully compensates for the moderate coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: create a spend mandate for an agent, and it enumerates the main configuration dimensions. It also distinguishes the tool from payment execution by saying the mandate does not send money, though it does not explicitly contrast with get_mandate or check_payment_against_mandate.

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?

Usage is implied as setup/configuration for agent spending controls, and the human-approval requirement hints that this does not replace payment approval. However, there is no explicit guidance on when to use this instead of get_mandate, check_payment_against_mandate, or payment_controls.

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

decide_intentA named person approves or rejects a proposalAInspect

Keyed. A named person approves or rejects a payment intent. The decision is kept with the time, the person and the proposal. An agent cannot approve alone. Nothing is sent.

NameRequiredDescriptionDefault
decisionYes
intent_idYes
access_keyNo
person_nameYes
person_roleYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does meaningful work: it discloses that the decision is persisted with timestamp, person, and proposal (an audit record), that a human is mandatory ("an agent cannot approve alone"), and that no outbound message is dispatched ("Nothing is sent"). It omits error behavior, duplicate-decision handling, and what the response contains, which keeps it short of a 5.

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?

Sentences are short and front-loaded, and the human-approval constraint and no-side-effect guarantee arrive before any detail. The opening fragment "Keyed." is cryptic and costs a little clarity without carrying clear meaning on its own.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-required-parameter mutation with no annotations and no output schema, the definition covers the essentials an agent needs (human authority, audit retention, no dispatch) but leaves person_role undefined, never explains the access_key, and says nothing about failure or repeat-call behavior.

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 0%, so the description must compensate, and it only partly does: "named person" maps to person_name, "approves or rejects" to the decision enum, "proposal" to intent_id, and "Keyed" appears to signal access_key. Nothing explains person_role at all, and no formats or value conventions are given for any field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb pair (approves or rejects) against a specific resource (a payment intent), and the title adds that the actor is a named person. It does not explicitly differentiate itself from close siblings such as request_payment_approval, approve_payment_run, or approval_status, so the agent must infer the boundary.

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?

"An agent cannot approve alone" is a real precondition that implies a human must drive this call, which is useful when-to-use context. However, no sibling tool is named and no when-not-to-use case is given, so a model cannot tell from the text whether to reach for this versus request_payment_approval or approve_payment_run.

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

discover_paymentPayment DiscoveryAInspect

Call this before initiating any cross-border or cross-currency payment. One call: a payment requirement in, a signed DiscoveryReport (a Decision Brief) out, across bank, PSP and stablecoin rails side by side — each leg's cost in basis points against an independent reference, settlement time, licence and evidence class. Pass a needed_by date to also get timing_scenarios (fund now, lock a forward, convert and park, or hold unhedged — the router's own due-date scenarios, unordered), fx_exposure (what funding the obligation today would cost at +1/+3/+5% adverse moves, arithmetic on the reference, not a forecast), and hedge_scenarios (no/half/full hedge, indicative cost from covered interest parity, residual exposure — scenario presentation only, never a recommended ratio or automated hedge). historical_context today is band-wide for the pair and size, not yet specific to the caller; current_quote, if passed, is measured against the reference the same way (the Markup Measure). what_we_dont_know is always present, even when empty. Nothing here ranks, picks or recommends. Does not execute, hold or price money. Free within the daily allowance; a key lifts it. The options/cost path is typically under 3 seconds, cached metadata only; with needed_by, timing_scenarios adds one live routing lookup and can take longer. Returns a compact view by default (one short object per option; what_we_dont_know, regulatory_notes and the scenarios in full) that points at the signed Options Map behind it; pass detail: "full" for the whole report.

NameRequiredDescriptionDefault
payerNo
amountYesThe amount, greater than zero.
clientNo
detailNocompact (default): a short summary that points at the signed full document, sized for a tool result. full: the whole document, which can exceed 100 KB.
amount_inNoWhich currency amount is stated in. Overrides direction's default, e.g. paying a fixed destination amount while funding from the source currency.
directionNopay (default): amount is what leaves. receive: amount is what must land.
needed_byNoOptional ISO date the money must land by. Adds timing_scenarios, fx_exposure and hedge_scenarios to the report, and each option's settlement.release_by: the latest release that lands by this date at the rail's later and earlier typical settle_days (on bank rails, the provider's cut-off on a banking day; the cut-off is not on record).
release_atNoOptional ISO date-time the payment will be released; default now. Each option's settlement.release_window states whether its rail moves at that moment (bank rails on banking days only, stablecoin rails around the clock), when it starts moving, the landing dates that follow, any sourced time-based markup, and what is not on record (cut-offs, bank holidays).
constraintsNo
current_quoteNoOptional: a quote already held, measured as given against the reference.
rails_allowedNoDefault: all. Only bank and stablecoin filter directly today; psp/dex leave every non-excluded rail in.
source_currencyYesISO 4217 code the payment leaves in, e.g. 'EUR'.
target_currencyYesISO 4217 code the payment must land in, e.g. 'ZAR'.

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are supplied, so the description carries the full burden and does so well: it discloses cost model (free within the daily allowance, a key lifts it), latency profile (under 3 seconds on cached metadata; needed_by triggers one live routing lookup that can take longer), and the always-present what_we_dont_know. It also flags interpretive caveats an agent could otherwise misread — historical_context is band-wide and not caller-specific, hedge_scenarios are presentation only with no recommended ratio, and current_quote is measured against the reference (the Markup Measure).

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 single most important instruction — when to call it — is front-loaded, and nearly every clause carries operative information about output shape, latency, or interpretation limits. It is a dense wall of em-dash-separated clauses rather than paragraph structure, which costs readability for a report this complex, but little of the content is filler.

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?

For a 13-parameter tool with nested objects and no output schema, the description covers the essentials: what comes back (per-leg cost in bps, settlement time, licence, evidence class), what changes when needed_by is passed, and how compact versus full output differ. Gaps remain around the payer/client metadata parameters and how constraints like exclude_providers and max_settlement_hours alter results, which an agent must read from the schema instead.

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?

With 77% schema coverage the baseline is 3, but the description adds genuine meaning beyond the schema: needed_by is explained as the switch that unlocks timing_scenarios, fx_exposure and hedge_scenarios (with each scenario family characterized), and detail is framed as compact-pointing-at-the-signed-map versus full report. It leaves several parameters (payer.entity_type, exclude_providers, max_settlement_hours) unexplained beyond their schema text, so it does not fully compensate for the remaining coverage gap.

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 in one line: "a payment requirement in, a signed DiscoveryReport (a Decision Brief) out" across bank, PSP and stablecoin rails side by side. It also declares negative scope ("Nothing here ranks, picks or recommends. Does not execute, hold or price money"), which separates it from siblings like recommend_payment_route and the payment execution tools without needing their schemas.

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 an explicit trigger: "Call this before initiating any cross-border or cross-currency payment," plus a clear boundary that it never executes or recommends. It does not name the concrete alternative sibling to use for ranking/execution, so the agent must infer the handoff rather than being routed to it explicitly.

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

evidence_passportPayment case and Evidence PassportAInspect

Read a payment case by intent_id (pi_…): its lifecycle status and who reported it, the Evidence Passport (intent, evidence with provenance and freshness, provider access and dependencies, decision, outcome), unknowns, exceptions with owner and next action, and the timeline. Use it before acting on a payment, to see what is current, what has expired and what must happen next. Read-only: it changes nothing and moves no money. Cases opened with an organisation's key need that key.

NameRequiredDescriptionDefault
intent_idYespi_… from POST /api/v1/cases.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full disclosure burden and does well: it declares read-only behavior ('changes nothing and moves no money') and states an authorization prerequisite ('Cases opened with an organisation's key need that key'). It omits error behavior and any rate or pagination details, which keeps it below a 5 for a tool with zero annotation coverage.

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 description is front-loaded with purpose and return contents, then moves to usage, safety, and auth notes in a logical order. The long parenthetical inventory of Evidence Passport components is dense but each item earns its place by telling the agent what fields to expect; it is not padded.

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?

There is no output schema, so the description must explain what is returned, and it does so thoroughly by listing lifecycle status, evidence provenance and freshness, provider access, decision, outcome, unknowns, exceptions, and timeline. It also covers read-only safety and the organisation-key requirement. Only the absence of any error or failure-mode guidance keeps it from a 5.

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 coverage is 100% and the single intent_id parameter is already documented in the schema, including the pi_ prefix and provenance from POST /api/v1/cases. The description repeats the 'pi_…' hint but adds no new syntax, format, or validation meaning beyond the structured field, so baseline 3 is appropriate.

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 gives a precise verb and resource ('Read a payment case by intent_id') and then enumerates exactly what the composite view contains: lifecycle status, reporter, Evidence Passport components, unknowns, exceptions, and timeline. This clearly separates it from narrower siblings like intent_status or payment_intent, which return only a status rather than the full evidence dossier.

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?

It states a concrete usage condition: 'Use it before acting on a payment, to see what is current, what has expired and what must happen next,' which tells the agent when this tool should precede action tools like submit_payment or approve_payment_run. It does not name specific alternative tools or exclusion cases, keeping it just short of a 5.

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

get_corridor_ratesCorridor rates and routesCInspect

Spec v1.0 name for assess_route: the official rate for the pair and each route's all-in cost and FX figure with source, read time, freshness and evidence type, settlement and requirements, under an assessment_id. Same arguments as assess_route.

NameRequiredDescriptionDefault
toNo
fromNo
amountNoAmount leaving, in the source currency.
corridorNoe.g. EUR-ZMW instead of from and to.
access_keyNo

TDQS

C2.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the returned evidence structure (source, read time, freshness, evidence type) and that results are bound to an assessment_id, which is genuinely useful. However it never states that the call is read-only, says nothing about authentication via access_key, rate limits, or whether an assessment_id must pre-exist or is minted by the call.

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?

It is a single dense run-on sentence that front-loads meta-information about spec versioning rather than the operation itself. Most of the content earns its place, but the ordering and lack of sentence breaks make the payload list hard to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations for a 5-parameter tool, and the description covers the return payload only in outline while leaving three parameters and the relationship to assess_route unexplained. It is not complete enough for an agent to invoke it confidently over its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 40% — from, to, and access_key are undocumented — and the description compensates only by deferring to another tool ('Same arguments as assess_route'), which is not self-contained. It adds no meaning about the pair-vs-corridor override or the access_key other than the schema's own example for corridor.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (official rate for a currency pair plus per-route all-in cost, FX, settlement and requirements) but never states a clear verb — it opens with versioning metadata ('Spec v1.0 name for assess_route') rather than what the tool does. It does distinguish itself from assess_route by framing itself as the v1.0-named counterpart, but the reader is left unsure whether it is an alias or a distinct operation.

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

Usage Guidelines2/5

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

'Same arguments as assess_route' hints at equivalence but never says when to call this instead of assess_route, price_routes, or recommend_payment_route. There is no guidance on prerequisites (e.g. whether access_key is needed) or on which sibling to prefer, so an agent has to guess between near-duplicate tools.

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

get_coverageRoute standing for every corridorAInspect

List corridors and each route's standing: proven (a real price and at least one closed landing), priced_only, or no_live_route with a reason. Includes last_priced_at, last_landed_at, landed_count and max_age_seconds. A route is never proven without a closed landing. Free callers see masked route names. Same records as GET /api/v1/coverage?view=routes.

NameRequiredDescriptionDefault
access_keyNoA router key (rk_...), if not sent as a Bearer header.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations supplied, the description carries the load and does well: it commits to a semantic guarantee ('never proven without a closed landing'), discloses an access-tier behavior ('free callers see masked route names'), and lists the returned timestamps and counters. Gaps remain around ordering, volume/pagination, and any rate limits for a large corridor list.

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 the core behavior, then statuses, then return fields, then access-tier caveat. Every sentence carries information; the parenthetical status definition is dense but useful rather than filler.

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?

For a one-parameter read tool with no output schema, the description compensates by naming the returned fields and defining every status value, plus noting the equivalent REST endpoint. The main omission is routing guidance against the crowded family of adjacent coverage/rate tools.

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% for the single optional access_key parameter, so the schema already explains it fully. The description adds nothing about the credential parameter or how it interacts with the 'free callers see masked names' behavior, which is the one place it could have added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List corridors and each route's standing') and enumerates the three possible statuses with a definition of 'proven'. An agent can tell what data comes back, but the description never distinguishes this from close siblings such as 'coverage', 'swapeazi_coverage', or 'get_corridor_rates'.

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?

Usage is only implied: the definition of the standing states tells the agent which questions this answers (is a route proven? priced only? dead?), but there is no explicit when-to-use, when-not-to-use, or named alternative among the many similar coverage/rate siblings.

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

get_mandateRead one spend mandateBInspect

Read a mandate by id (man_...) for the organisation of the router key. A router key is required.

NameRequiredDescriptionDefault
idNoman_...
access_keyNoA router key (rk_...), if not sent as a Bearer header.
mandate_idNoSame as id.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully discloses the auth requirement (router key via header or access_key) and the org scoping boundary, which is real behavioral context. It does not describe return shape, error behavior for unknown ids or foreign-org mandates, or whether this is a pure read.

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

Conciseness5/5

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

Two short sentences, front-loaded with the resource and id format, then the auth prerequisite. No filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (3 params, full schema coverage, no output schema), so a short description is defensible and the auth/scoping note is valuable. However, with no annotations and no output schema, it should indicate what a returned mandate contains and how not-found or cross-org access behaves.

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 all three parameters are already documented, including 'man_...' and the router-key alternative to a Bearer header. The description adds the org-scoping meaning of the key but little else beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a mandate by id') and gives the id format ('man_...'), which clearly separates it from create_mandate and the broader payment siblings. It does not explicitly contrast with catalogue/analysis tools, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

The description says a router key is required and that the mandate must belong to the router key's organisation, but gives no when-to-use guidance relative to alternatives such as check_payment_against_mandate or create_mandate. An agent must infer the retrieval use case on its own.

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

get_rate_receiptRead one stored Rate ReceiptAInspect

Return a stored Rate Receipt by id (rr_...). Schema swapeazi.rate_receipt.v1. Includes max_age_seconds. Free callers see a masked publisher; a router key sees the source name.

NameRequiredDescriptionDefault
idYesrr_... from price_routes.
access_keyNoA router key (rk_...), if not sent as a Bearer header.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose a real behavioral trait: response content varies by credential tier (masked publisher for free callers, source name for router keys). It says nothing about not-found/expired receipt handling, what max_age_seconds actually gates, or rate limits.

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?

Four short, front-loaded sentences with no filler; the identifying information comes first and the credential-tier caveat follows. Slightly telegraphic ('Schema swapeazi.rate_receipt.v1') but every fragment carries information.

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?

For a simple 2-parameter read with full schema coverage and no output schema, this covers the essentials, including response variance by caller tier and the presence of max_age_seconds. A brief note on missing/expired ids would make it complete.

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 baseline is 3, but the description adds meaning beyond the schema by explaining the consequence of access_key (elevated visibility of the publisher) rather than just repeating its format. The id parameter gets no extra semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return a stored Rate Receipt by id') plus the id format (rr_...) and schema version, so the operation is unambiguous. It does not name a sibling (e.g. price_routes, which mints the ids) to differentiate against, which keeps it from a 5.

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?

Usage is only implied: the agent infers it should call this after obtaining an rr_... id from price_routes. The free-vs-router-key sentence gives auth context but no explicit when-to-use/when-not or alternative-tool routing.

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

intent_statusRemembered intent statusAInspect

A payment intent SwapEazi is watching (from route_intent with remember: true): today's route and what paying now, locking the rate and holding unhedged need, every day since it was kept, and what changed (the selected route, the cost of paying today, the payer's lock-at level, the due date). Signed. Facts only; SwapEazi moves no money.

NameRequiredDescriptionDefault
intent_idYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two useful traits: the output is 'Signed' and 'Facts only; SwapEazi moves no money', signalling a non-mutating read. It does not cover behavior for unknown/stale intent_ids, freshness of the daily history, or any access requirements.

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?

A single front-loaded sentence that first names the object and then enumerates returned fields; nothing is padding. It is dense with nested parentheticals and would read better as two shorter sentences, costing it a point.

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?

Despite no output schema and no annotations, the description enumerates the payload well: today's route, cost of paying now, rate lock, unhedged hold need, daily history, and the changed fields (selected route, cost, lock-at level, due date). For a one-parameter read tool this is close to sufficient, with only error/freshness behavior missing.

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?

The single parameter has 0% schema description coverage, so the description must compensate. It partially does by explaining that intent_id refers to an intent retained via route_intent with remember: true, giving provenance that the bare string schema lacks, but adds no format or validity detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Identifies a specific resource — a remembered payment intent created via route_intent with remember: true — and distinguishes itself from route_intent by naming that origin. The verb is implicit (the description is a noun phrase describing returned state), so it is clear but not crisply action-oriented.

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?

Implies usage by stating the intent comes from route_intent with remember: true, which tells an agent when an intent_id would exist and be worth querying. It offers no explicit when-not or comparison against nearby siblings such as payment_intent, compile_intent, or decide_intent.

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

join_networkJoin the networkCInspect

Keyed. A business, a rail or an agent joins. A rail may attach a quote feed as an API key or an OAuth-style connection and one published rate. No placement is sold. SwapEazi does not hold or move money.

NameRequiredDescriptionDefault
toNo
fromNo
nameYes
rateNo
partyYes
contactYes
rail_kindNo
access_keyNo
quote_feedNo

TDQS

C2.6/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden, and it does disclose some real traits: that rails may attach a quote feed via API key or OAuth connection plus exactly one published rate, and that SwapEazi takes no custody of funds and sells no placement. What remains undisclosed is significant for a write-like operation: whether re-joining is idempotent, whether the contact is verified, what permissions or approvals are needed, and what a successful call returns.

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?

The description is short and broken into digestible sentences, so it is not bloated. But the telegraphic style works against it: the opening "Keyed." is an unexplained fragment, and the ordering puts an ambiguous word ahead of the actual subject of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter registration tool with no annotations, no output schema, and zero schema description coverage, the description is far too thin. It explains neither the required fields nor the outcome of the call, so an agent could not reliably construct a valid invocation from it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across nine parameters, so the description must compensate and largely does not. It gives meaningful hints for only party (business/rail/agent), quote_feed (api_key vs oauth) and rate (one published rate); the required parameters name and contact, plus from, to, rail_kind and access_key, receive no explanation of format or semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"A business, a rail or an agent joins" restates the name join_network rather than naming the operation (register/onboard party onto the network), though it usefully enumerates the three participant types that map to the party enum. The opening fragment "Keyed." is opaque and adds no discriminating meaning. An agent can broadly guess this is an onboarding/registration call but could not confidently distinguish it from siblings like connect_rail_account or request_introduction.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no named alternative is given. "No placement is sold" and "SwapEazi does not hold or move money" are trust disclaimers, not selection criteria. The agent is left to infer on its own whether this tool or connect_rail_account is the right entry point.

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

liquidity_mapMap liquidity for a currency pair at a ticket sizeBInspect

For a currency pair (e.g. ZAR-USD, NGN-USD, KES-USD, USD-MWK) and a ticket size: each venue type (exchange order books, stablecoin pools, P2P adverts, ramps and off-ramps, OTC desks, banks) with whether the evidence read shows depth at that size, the measured slippage and landing cost at that size with a Rate Receipt, the largest size the evidence supports, or Being measured with the reason. With prefunding (amount held, days held), idle fiat prefunding and stablecoin reserves on the same evidence: cost to enter and exit at that size, the peg and exit depth from the stablecoin profiles, and the past official-rate move over the same days. Figures, not advice. Unknowns listed. SwapEazi never holds, creates or moves liquidity. Free callers see Route A, Route B; a router key shows venue names. Same as GET/POST /api/v1/liquidity.

NameRequiredDescriptionDefault
toNo
fromNo
pairNoe.g. ZAR-USD or USD-MWK. Or from and to.
amountYesTicket size, in the from currency unless amount_currency says otherwise.
access_keyNoA router key (rk_...), if not sent as a Bearer header.
prefundingNo{ amount, currency?, corridor?, days_held }: an amount held to prefund the corridor, and for how many days (1 to 365).
amount_currencyNoThe from or the to currency. Default from.

TDQS

B3.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does substantial work: it discloses the access-tier behavior (free callers get anonymized venue labels, router keys get names), the disclaimers 'Figures, not advice' and 'Unknowns listed', and the fact that SwapEazi 'never holds, creates or moves liquidity'. It also enumerates the output shape (depth, slippage, landing cost, Rate Receipt, largest supported size, 'Being measured' reason). What is missing is a plain statement of whether the call itself is read-only/idempotent and any rate limits.

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

Conciseness2/5

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

The core is a single ~130-word run-on sentence whose clauses chain venue types, per-venue status, slippage, Rate Receipt and fallback states without any list or punctuation breaks. The opening frame is well front-loaded, but the middle is a dense wall an agent must re-parse, which undercuts the otherwise substantive content.

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?

For a seven-parameter tool with a nested object and no output schema, the description covers a lot of the return surface: venue coverage, per-venue depth verdict, slippage and landing cost, largest supportable size, failure states, and prefunding-related costs and peg/exit depth. Remaining gaps are the read-only nature of the call and the missing differentiation from sibling liquidity tools.

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 coverage is 71%, so the schema already documents pair, amount, amount_currency, access_key and the nested prefunding object. The description only adds that prefunding involves 'amount held, days held' and that amount is a ticket size, which mostly restates the schema; nothing is said about how from/to interact with pair or about the prefunding sub-fields' optionality.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Map liquidity for a currency pair ... and a ticket size') and enumerates the venue types covered (order books, stablecoin pools, P2P adverts, ramps, OTC desks, banks). An agent can tell what this produces, though it never explicitly distinguishes itself from near-siblings like check_provider_liquidity or onchain_liquidity.

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

Usage Guidelines2/5

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

No when-to-use or when-not guidance is given, and no sibling is named as the alternative despite roughly sixty siblings including several liquidity-adjacent ones. The prefunding narrative implies a use case (cost to enter/exit at a size while holding prefunding) but the agent must infer it, and the access-tier note ('Free callers see Route A, Route B; a router key shows venue names') is a payload detail rather than routing guidance.

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

list_rail_accountsYour connected rail accountsCInspect

Keyed. The rail accounts connected with this router key: rail, env, label, the API key's last four characters, created date and cap per payment. Never a key or a secret.

NameRequiredDescriptionDefault
access_keyNo

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add a genuinely useful security disclosure — the response never includes a key or secret, only the last four characters — which tells the agent the output is safe to surface. It stops short of stating that this is a non-mutating read, what authorization the access key needs, or what an empty result looks like.

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?

Very short with no filler, and the scoping statement plus the field list are front-loaded. But the fragment style ("Keyed.") and colon-led field enumeration are cryptic rather than economical — a few more words would have bought substantial clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description appropriately enumerates the returned fields, which is the right call. It nevertheless leaves key gaps for a credential-adjacent tool with zero annotations: no statement of read-only behavior, no auth or rate-limit context, and no handling for the optional access_key.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter, so the description must compensate and largely does not. "The rail accounts connected with this router key" only obliquely links access_key to which key's accounts are returned; it never says what the parameter is, whether it is optional (the schema marks it non-required), or what happens if omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description implies a listing of rail accounts scoped to a router key and enumerates the returned fields (rail, env, label, key suffix, created date, cap), which clarifies what the tool yields. However, the phrasing is telegraphic ("Keyed.") and never states the read/list action outright, nor distinguishes it from siblings like connect_rail_account or remove_rail_account.

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

Usage Guidelines2/5

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

"Keyed" hints that an access key is involved, but there is no explicit when-to-use guidance, no statement of what the tool is an alternative to, and no mention that connect_rail_account is the way to add accounts. The agent must infer usage entirely from the name.

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

map_optionsMap the options for an intentAInspect

The signed Options Map for a PaymentIntent: every rail and provider the graph holds for the pair and size, each with its access facts, documented capacity, settlement window, economics basis (observed, band or unpublished) and evidence class, and whether it sits inside, outside or unknown against the principal's constraints. Each candidate also carries route_family (bank_correspondent or stablecoin_casp), regulatory_risk (stable, watch, restricted or blocked, tied to a tracked rule) and onboarding_status (ready, onboardable, ineligible or unknown, with onboarding_gap naming what's missing) so an agent can filter out ineligible or blocked routes before quoting. route_families lists every family even one with zero candidates, reason no_eligible_provider, rather than hiding it. Sorted by coverage tier, rail class and name, never by a rank. payout_rules lists the rules that reach the payout per route (applies or depends, each with its document; document_not_read when found by search). A guide, not advice. Pass an intent (any form compile_intent takes, including payer) or an intent_id. Free within the daily allowance; a key lifts it. Returns a compact view by default (one short object per candidate, every unknown in full) that points at the signed full map; pass detail: "full" for the whole signed document, or map_id to read back a map made earlier.

NameRequiredDescriptionDefault
detailNocompact (default): a short summary that points at the signed full document, sized for a tool result. full: the whole document, which can exceed 100 KB.
intentNoA PaymentIntent, a flat form or { text, from }.
map_idNoA map_id from an earlier map_options call: returns that stored, signed map (with expired) instead of making a new one.
countryNoOptional ISO 3166-1 alpha-2 country of the payer (or payee) for a multi-country currency, e.g. CI for XOF: attaches that country's profile (banks, fees, payment-side rules, each with source and confidence) and the receipts measured there.
intent_idNoAn intent compiled earlier.
release_atNoOptional ISO date-time the payment will be released; default now. Sets each candidate's settlement.release_window.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does well: it says the map is signed, stored, compact by default, potentially over 100 KB in full mode, and free within a daily allowance that a key lifts. It does not specify permissions, error behavior, or side effects, so it stops short of a 5.

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 description is front-loaded and every major sentence describes an output, constraint, or invocation behavior, which is justified for a complex mapping tool. It is still a dense single paragraph that would be easier to scan with structure, which keeps it from a 5.

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?

Because there is no output schema, the description does the necessary work of enumerating the returned fields, sorting rules, compact/full behavior, and map_id reuse. It omits explicit coverage of country and release_at behavior and some error cases, but those are secondary for this mapping tool.

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 all six parameters and the baseline is 3. The description adds a useful cross-reference to compile_intent for the intent form and reiterates the compact/full default and map_id read-back, but it says nothing about country or release_at beyond what the schema already provides.

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 opening sentence names the exact artifact returned — a signed Options Map for a PaymentIntent — and specifies its scope: every rail and provider the graph holds for the pair and size. The phrases 'never by a rank' and 'A guide, not advice' help distinguish it from recommendation or route-selection siblings.

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?

It gives a clear use context ('so an agent can filter out ineligible or blocked routes before quoting') and says to pass an intent or intent_id. It also signals that the result is guidance rather than advice, but it does not name sibling tools or spell out explicit when-not cases.

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

onchain_liquidityOn-chain dollar liquidity at a ticket sizeAInspect

Where dollars are on-chain at your size: for USDC and USDT (and ZARP, cNGN as to_asset), executable depth and cost at the amount on Ethereum, Tron, Solana, Base, BNB Chain, Arbitrum and Polygon, from keyless DEX aggregator quotes (KyberSwap, ParaSwap, Jupiter): price impact against a USD 100 quote, cost against par with gas and stated fees, and each network's published time to finality. Bridge cost and time between chains from Across, Circle CCTP and LI.FI. The hourly reads at USD 10k, 100k, 1m and 5m for the pair, each with its age. With destination (two-letter country), the documented facts on whether suppliers there take stablecoins directly (not established where we hold no source) and the off-ramp venues SwapEazi reads in its currency. Every figure has its source, time and a Rate Receipt; each failure keeps its reason. Figures, not advice; never ranked. SwapEazi never holds or moves money and never asks for a wallet signature. Same as GET/POST /api/v1/onchain-liquidity. Free within the daily allowance.

NameRequiredDescriptionDefault
amountYesThe ticket in US dollars (dollar stablecoins at par).
chainsNoAny of ethereum, tron, solana, base, bsc, arbitrum, polygon. Default all.
to_assetNoUSDC, USDT, ZARP or cNGN (ZAR and NGN map to ZARP and cNGN). Default: the other dollar coin.
access_keyNoA router key (rk_...), if not sent as a Bearer header: shows exchange and P2P venue names in the destination block.
from_assetNoUSDC or USDT. Default USDC.
destinationNoOptional supplier country, two letters (e.g. HK, CN, AE, NG, ZA, KE).

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses provenance (KyberSwap, ParaSwap, Jupiter, Across, CCTP, LI.FI), that every figure carries a source, timestamp and Rate Receipt, that failures retain their reason, that unsourced countries are reported as 'not established' rather than guessed, that results are never ranked, and that the service never holds funds or requests signatures. It also states the pricing model ('free within the daily allowance') and the equivalent REST endpoint.

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?

The purpose and primary scope are front-loaded, but the body is a dense multi-clause wall of text with stacked parentheticals that is hard to parse on first read. Most clauses carry information, yet some (the REST-endpoint mapping, the repeated non-custody disclaimers) could be compressed without loss.

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 six-parameter tool with no output schema, the description is unusually complete: it enumerates the returned data blocks (depth and cost, bridge cost and time, hourly reads with age, destination block), the provenance and receipt model, and the failure semantics. An agent knows what it will get back and how to interpret gaps without seeing a response schema.

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 already 100%, so the baseline is 3, but the description adds real meaning: it explains what amount means in practice (price impact benchmarked against a USD 100 quote, cost against par with gas and stated fees), what destination unlocks (documented supplier stablecoin acceptance plus off-ramp venues), and what to_asset/from_asset do at the currency level. It does not clarify the access_key versus Bearer-header behaviour beyond what the schema says, but overall it exceeds the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb-and-resource: executable on-chain depth and cost for dollar stablecoins at a given ticket size, enumerating the chains, coins, aggregators and metrics covered. It is unmistakably not a generic rate tool. It never names or contrasts a sibling (check_provider_liquidity, liquidity_map, swapeazi_dex_cost all overlap in theme), so differentiation is inferential rather than explicit.

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?

Usage is implied rather than stated: 'at your size', the destination block behaviour, and the note that hourly reads cover USD 10k/100k/1m/5m hint at when the tool applies. There is no explicit when-to-use versus when-not, no named alternative for provider-side or route-comparison questions, and no prerequisites beyond the passing mention of an access key for venue names.

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

parallel_signalMarket-observed gap between public adverts and the official rateAInspect

A dated series per currency of the gap between a public-advert median and the official rate. Labelled market-observed, never an official rate. Currencies: ZAR, MZN, MWK, ZMW, NGN, KES, BRL, ARS, PHP. Too few adverts, or no read on record, is null with a reason. A missing gap is never zero. Free.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD. Default today (UTC).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses coverage (nine named currencies), the null-with-reason behavior when adverts are too few, and the crucial caveat that a missing gap is never zero. It also flags 'Free' as a cost signal. It omits cadence/pagination and confirmation of read-only nature, which keeps it short of a 5.

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

Conciseness5/5

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

Five short sentences, front-loaded with what the series is and immediately followed by the disclaimers that prevent misuse. No filler; each clause (market-observed, currency list, null rule, not-zero rule, free) communicates a distinct operational fact.

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?

For a one-optional-parameter read tool with no output schema, the description conveys the series shape (dated, per currency), the coverage set, and the null semantics well enough to call it and interpret results correctly. A hint at the series length or return container is the only material gap.

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 coverage is 100%, with the single optional date parameter fully documented (YYYY-MM-DD, default today UTC). The description adds only the word 'dated' and no further meaning about the date parameter, so the schema does the heavy lifting and baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states precisely what is returned: a dated per-currency series of the gap between a public-advert median and the official rate, and explicitly frames it as market-observed, never official. That is a specific resource with a clear measurement semantic. It does not name a sibling (e.g. get_corridor_rates, rate_deal_history) as the alternative, so differentiation is left to inference from the wording.

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?

Usage is implied rather than stated: the agent can infer this is for measuring parallel-market premium, and 'Free' signals it is a no-cost reference series. There is no explicit when-to-use versus when-to-use-a-sibling guidance, and no stated prerequisites.

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

payment_controlsSpend profiles, approvals and audit trailAInspect

Read the controls that govern the payments an agent prepares for an organisation: its spend profiles with today's and this month's spend against each budget, the payments waiting for a person to approve (with any transaction already prepared after approval), and the audit trail of prepared and confirmed payments. With approval_id, reads that one approval. Read-only. Needs the organisation's key.

NameRequiredDescriptionDefault
approval_idNorapr_… returned by prepare_payment when a person must approve.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does well: it declares read-only semantics, states the authentication requirement (organisation key), and discloses the scope of returned data including today's and month-to-date spend against each budget. It does not mention pagination, result volume, or freshness/latency, which are the remaining gaps for a multi-view read.

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?

Purpose is front-loaded in the first clause, followed by the three returned views and then the two short operational facts (read-only, key required). Dense but well ordered. The first sentence is long and runs three list items together, which slightly hurts scannability.

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?

There is no output schema, so the description must convey return content — and it does: spend profiles versus budget, pending approvals including any pre-prepared transaction, and the prepared/confirmed audit trail. For a single-optional-parameter read tool this is close to sufficient; only detail on shape or pagination of the lists is missing.

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?

Only one parameter and schema coverage is 100%, so the baseline is 3. The description does add real meaning beyond the schema by explaining that supplying approval_id switches the tool from a collection read to a single-approval read — a mode change the schema alone does not convey. That modest addition keeps it at 3 rather than higher, since id format and provenance are already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Read the controls that govern the payments') and enumerates the three views returned: spend profiles with budget consumption, payments awaiting human approval, and the audit trail of prepared/confirmed payments. An agent knows exactly what it gets. It stops short of naming which siblings (e.g. approval_status, request_payment_approval) cover overlapping ground, which keeps it from a 5.

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?

It gives a clear conditional mode: with approval_id it reads that single approval, otherwise it reads the full control set. It also states the prerequisite ('Needs the organisation's key'). However, there is no explicit guidance on when to use this versus approval_status or request_payment_approval, so the agent must infer the boundary.

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

payment_intentState what the business owesAInspect

Keyed. A business states the payee, the corridor, the amount the payee must receive, and the deadline. Returns a proposal: bank, OTC, ramp, AMM and secure P2P wallet routes, including the business's own negotiated rate when one is on record. The selected route is the lower total the payer sends to land the full amount by the deadline. Each figure is measured, a public quote read at a date and not locked, or Being measured. SwapEazi does not hold or move money. A person still approves.

NameRequiredDescriptionDefault
toYes
fromYes
deadlineYesYYYY-MM-DD
access_keyNo
payee_nameYes
customer_idNo
amount_receiveYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does substantial work: it states SwapEazi does not hold or move money, that a person still approves, that returned figures may be measured, a non-locked public quote, or still being measured, and that the selected route minimizes total payer outlay. What it leaves unstated is whether calling it persists an intent record (side effects), and what 'Keyed' and the access_key mean for authentication.

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?

It is front-loaded and dense, with each sentence carrying new information about inputs, outputs, selection logic or trust model. The staccato fragments and capitalized 'Being measured' make it slightly harder to parse than a clean prose version, but there is almost no wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-parameter tool with no annotations and no output schema, the description covers the return shape (route families, negotiated rate, selection rule) well. It is incomplete on whether the call creates a persistent intent, on error conditions, and on the access_key/customer_id identity parameters, which matters because without annotations the agent has no other signal about side effects.

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 coverage is only 14% (only deadline is documented), so the description must compensate, and it does clarify the most important ambiguity: amount_receive is what the payee must receive, not what the payer sends, and from/to form the corridor. But the two non-required parameters, access_key and customer_id, get no explanation in either the schema or the description, leaving an authentication/identity gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource: a business states payee, corridor, amount and deadline, and the tool returns a route proposal. That is specific enough to distinguish it from pure rate lookups like get_corridor_rates or price_routes. It does not, however, name or contrast itself with close siblings such as compile_intent, route_intent, decide_intent or prepare_payment.

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?

Usage is only implied: the description shows the situation in which you would supply an obligation and get proposals back, but never states when to call this instead of route_intent, compile_intent or price_routes. There are no exclusions or prerequisites, so an agent must infer placement in the workflow from the narrative alone.

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

payment_run_statusA payment run's status, per payment, or its audit exportAInspect

Read a payment run by run_id: each payment's status (prepared, needs_attention with reasons, no_evidence), its assessment and Rate Receipts, approval, release record and what landed. export: true returns the audit export, where any payment without an assessment, approval or release record shows "no evidence". pr_sample needs no key; a real run needs the router key that made it.

NameRequiredDescriptionDefault
exportNotrue: the audit export (JSON) instead of the run.
run_idYespr_... from run_payments, or pr_sample.
access_keyNoA router key (rk_...), if not sent as a Bearer header.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses the authentication/ownership requirement (the key that made the run), and it explains that the export path degrades gracefully, reporting 'no evidence' for payments missing an assessment, approval or release record rather than failing. It does not mention pagination, cost, or whether reading has any side effects, so it stops short of full coverage.

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?

Three sentences, front-loaded with the resource and the returned fields, then the export variant, then the key requirement. The middle sentence is dense but each clause carries information; only the parenthetical status list is slightly hurried given it lacks explanations for the enum values.

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?

There is no output schema and no annotations, so the description must explain both returns and behavior, and it largely does: it describes the per-payment payload, the alternate export payload, and the missing-record behavior. Minor gaps remain around volume/pagination for large runs and the exact shape of Rate Receipts.

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 earns more: it clarifies that export: true swaps the return shape to a JSON audit export, that run_id accepts pr_... values from run_payments plus the pr_sample sentinel, and that access_key must specifically be the router key that created the run — a constraint the schema only hints at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Read a payment run by run_id') and enumerates exactly what comes back: per-payment status values (prepared, needs_attention with reasons, no_evidence), assessment, Rate Receipts, approval, release record and landed amounts. It is clear what the tool returns, though it never names which sibling to use for a narrower single-record view (approval_status, release_status).

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?

It gives useful calling context — pr_sample needs no key, a real run requires the router key that created it — and explains when to pass export: true. What it lacks is routing guidance: no statement of when to prefer approval_status or release_status over this composite view, so the agent must infer the choice from sibling names.

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

payout_preflightAssess a payout file before it is releasedAInspect

Pre-release check on a whole payout file before it goes to the company's own bank or PSP. Send the file's text: an ISO 20022 pain.001 credit-transfer file (versions .03 to .12) or a CSV with a header row (comma or semicolon, Dutch or English column names). Every row comes back ok, needs_person or blocked, with the reasons: missing name or account, failed IBAN checksum, a BIC from a different country than the IBAN, SA branch code, SADC mobile money, too many decimals, a euro payment outside SEPA, an execution date in the past or on a weekend, possible duplicates, and rows above the company's own review limit. With a signing key set, it also returns a signed record of the check (file hash and each row's state, no names or accounts). SwapEazi never sends, holds or routes the money: the company releases the file itself. Paid: configure this server with an Authorization Bearer key (https://swapeazi.io/pricing).

NameRequiredDescriptionDefault
fileYesThe payout file's text: pain.001 XML or a CSV with a header row.
todayNoRelease date, YYYY-MM-DD. Defaults to today (UTC).
review_aboveNoRows above this amount need a person, whatever else they pass. The company's own limit.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full behavioral burden, and it does substantial work: it discloses the three outcome states (ok, needs_person, blocked), the full reason taxonomy, the optional signed record with its privacy properties (hash and states, no names or accounts), and the payment/auth requirement (paid, Authorization Bearer key with pricing URL). What it omits is operational behavior an agent would still want: output format, file size limits, and how malformed input is reported.

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 core check and its pre-release framing are front-loaded, then formats, then outcomes, then the non-custody and paid caveats — a sensible order with little filler. The long comma-spliced list of rejection reasons is dense and would read better as a structured list, but each item carries information an agent needs.

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?

With no annotations and no output schema, the description must stand alone, and it covers input formats, the verdict vocabulary, the reason set, the optional signed artifact, the paid/auth requirement, and the custody boundary. Remaining gaps are the concrete response shape (field names, per-row identifiers) and failure behavior for unparseable files.

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 coverage is 100%, so all three parameters are already documented, establishing a baseline of 3. The description does add real meaning on top: accepted formats (pain.001 .03 to .12, CSV with comma or semicolon and Dutch or English headers) and the mapping of review_above to 'the company's own review limit' producing needs_person, which a schema alone would not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Pre-release check on a whole payout file') plus scope ('before it goes to the company's own bank or PSP'), which clearly separates it from row-level checks like swapeazi_beneficiary_check. It never names a sibling tool explicitly, so the differentiation is inferable rather than stated.

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?

It gives a clear trigger point (pre-release, before the file reaches the bank or PSP) and states the limits of the service ('SwapEazi never sends, holds or routes the money: the company releases the file itself'), which implicitly routes release actions elsewhere. It stops short of naming the alternative tool for actually sending or approving a run.

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

payout_rulesPayout rules: does it apply, and whenAInspect

Which payout rules reach a payout, and when: for a corridor (two-letter countries, or currencies) and a route (bank or stablecoin), each rule SwapEazi holds answers applies, depends (and on what) or does not apply, with its dated steps, its official document and the day it was read. Drafts are never answered as law. Information from each rule's own document, not legal advice. route_intent carries the rules that reach its payout in its rules field. Read-only, free, no key.

NameRequiredDescriptionDefault
toYesPaying to: a two-letter country (ZW) or a currency (USD).
fromYesPaying from: a two-letter country (ZA) or a currency (ZAR).
routeNoHow the payout goes; both when left out.
currencyNoCurrency sent, when from and to are countries.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it states the tool is read-only, free, and requires no key, and it discloses that drafts are never answered as law and that output is not legal advice. It does not cover rate limits, pagination, or error behavior, so it stops short of full transparency.

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 description is front-loaded with the core question and remains reasonably tight despite a dense, run-on first sentence. The caveats and route_intent note earn their place, though some phrasing could be cleaner.

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?

For a read-only lookup tool with no output schema, the description explains what each rule answer contains: applies, depends, or does not apply, plus dated steps, official document, and read date. It also covers legal caveats, though it does not describe output structure or behavior when no rules are found.

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 the parameters and enum. The description reinforces the corridor and route concepts but adds no syntax or conditional meaning beyond what the schema already provides.

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 states a specific resource and scope: which payout rules reach a payout for a corridor and route, and whether each rule applies, depends, or does not apply. It also distinguishes the tool from route_intent by noting that route_intent carries applicable rules in its own rules field.

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 usage is implied by the corridor-and-route framing and the reference to route_intent, but there is no explicit 'use this when' or 'do not use this when' guidance. An agent can infer the purpose, but alternatives and exclusions are not clearly stated.

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

prepare_paymentPrepare a stablecoin payment within the rulesAInspect

Prepare an unsigned USDC or USDT transaction for the paying wallet you control, on Base, Arbitrum, Optimism, Polygon or BNB Chain, or USDT (TRC-20) on Tron (chain_id 728126428, T... addresses; TronLink signs it). SwapEazi screens the recipient's address and verifies the organisation's spend profile first: the cap per payment, the daily and monthly budget, approved recipients and chains, and the approval line. A person approves every payment an agent prepares: within the rules it returns an approval_id, the approver decides at /approvals, and once approved payment_controls with that approval_id returns the transaction (a plain transfer, or a swap or bridge with no SwapEazi fee) for your wallet to sign; outside the rules it explains why. Pass the map_id and candidate_id of the stablecoin option you took from discover_payment or map_options, so the approver sees what the guide showed for it and the records name the map; the guide never picks it. SwapEazi never signs, holds keys or moves funds. With private: true, the payment runs through NEAR Intents' confidential mode under the same rules; that is also the way between Tron and an EVM chain. With profile_id, needs the organisation's key.

NameRequiredDescriptionDefault
toYesThe recipient's address on the chain it receives on (0x, or T... on Tron), or your own deposit address at an off-ramp.
fromYesThe paying wallet's address: 0x on EVM chains, T... (base58check) on Tron.
rulesNoInline rules when no profile is used: max_per_payment_usd, approval_above_usd, daily_limit_usd, monthly_limit_usd, allowed_recipients, allowed_chains.
tokenYes
amountYes
map_idNoThe map_id from discover_payment or map_options. The map must not have expired.
privateNoPay privately through NEAR Intents' confidential mode: one transfer to a deposit address for your wallet to sign; settles in full or refunds to your wallet. The quote's signature and correlation id go into the signed record. Read progress with private_payment_status.
chain_idYes8453 Base, 42161 Arbitrum, 10 Optimism, 137 Polygon, 56 BNB Chain, 728126428 Tron (USDT only).
to_tokenNo
profile_idNoprof_… from payment_controls; applies the organisation's budgets and approval line.
to_chain_idNoThe chain the recipient receives on, when it differs from chain_id. To or from Tron (728126428) needs private: true.
candidate_idNoThe stablecoin candidate in that map this payment takes. Bank candidates are sent by your bank or provider, not prepared here.
destination_currencyNoThe local currency the money is for, so local stablecoin rules are assessed, e.g. ZAR.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: it discloses that the output is unsigned, that SwapEazi never signs, holds keys or moves funds, that every payment is human-approved via /approvals, that recipient screening and spend-profile checks precede preparation, that failures come back as an explanation, and that private mode settles in full or refunds to the wallet. That is exactly the mutation/safety context an agent needs and 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.

Conciseness3/5

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

The purpose is front-loaded in the first clause, but the prose then collapses into two very long semicolon-chained sentences that mix workflow, custody disclaimers, parameter sourcing and Tron edge cases into an undifferentiated block. Nearly every fact earns its place, yet the packaging makes it harder to scan than it needs to be.

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?

For a 13-parameter, no-output-schema, no-annotation preparation tool, the description covers purpose, screening, approval handoff, failure mode, private mode and key parameter sourcing. Remaining gaps are the inline `rules` object semantics and `destination_currency`, plus what the returned payload contains beyond the approval_id.

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 description coverage is 77%, so the schema already handles much of the surface. The description still adds real meaning beyond it: how map_id and candidate_id pair up and where they come from, what private mode actually does and which tool tracks it (private_payment_status), and the Tron/EVM constraint on private. It is silent on the inline `rules` object and `destination_currency`, leaving a small gap.

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 ('Prepare an unsigned USDC or USDT transaction'), enumerates the supported chains and the Tron/TRC-20 special case, and distinguishes itself from neighbours by naming payment_controls as the post-approval retrieval step and discover_payment/map_options as the source of map_id and candidate_id. An agent can tell this apart from prepare_payment_instruction or submit_payment without opening a schema.

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 concrete workflow conditions: within the rules it returns an approval_id and the transaction comes later from payment_controls; outside the rules it explains why; map_id and candidate_id must come from discover_payment or map_options; private: true is required between Tron and an EVM chain; profile_id needs the organisation's key. It stops short of explicitly excluding near-siblings like prepare_payment_instruction or submit_payment, but the routing context is otherwise clear.

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

prepare_payment_instructionPrepare payment instructionsBInspect

Spec v1.0 name for run_payments: prepares each payment (payee validation, route assessment, instruction, approval digest) and returns each payment's lifecycle state. Never approves or sends. Same arguments as run_payments; sample: true for the synthetic run.

NameRequiredDescriptionDefault
fileNo
sampleNo
payablesNo
access_keyNo
source_currencyNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must carry the whole burden. It does disclose two valuable behavioral facts: the tool is non-terminal (never approves or sends) and it returns each payment's lifecycle state per item. It says nothing about authentication requirements (access_key is unexplained), whether preparing creates persistent records, idempotency, or error behavior for invalid payees — significant gaps for a multi-stage preparation operation.

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 description is a compact single paragraph that proceeds from identity to operations to constraints to arguments without filler. The version/alias preamble is mildly self-referential but does convey useful provenance. Nothing is redundant enough to flag.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter tool with no annotations, no output schema, and zero schema coverage, the description is thin: it does not explain inputs, auth, side effects, or result shape beyond 'lifecycle state'. The one genuinely complete claim is the non-approval/non-send boundary. An agent could not construct a correct payables payload from this definition alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across five parameters, so the description must compensate and largely does not. Only 'sample: true for the synthetic run' is explained; file, payables, access_key, and source_currency are left entirely to inference. 'Same arguments as run_payments' is an indirect pointer to a sibling rather than an explanation of what these arguments mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource and enumerates the actual work performed: payee validation, route assessment, instruction construction, and approval digest. It also clarifies the aliasing relationship to run_payments, so an agent can locate the canonical operation. It stops short of 5 because the 'Spec v1.0 name for run_payments' framing front-loads naming trivia rather than the distinction from siblings like prepare_payment.

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?

'Never approves or sends' usefully excludes the approval/send siblings (approve_payment_run, submit_payment, confirm_payment), which is real routing guidance. However, there is no explicit statement of when to choose this over prepare_payment or run_payments, and no prerequisites are given despite the presence of an access_key parameter. Usage is implied rather than stated.

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

price_routesPublic prices for a corridor, each with a Rate ReceiptAInspect

Read public prices for a corridor at a payment size: on-chain pools, public order books and public adverts, with no partner key. Each figure is a route option with a Rate Receipt (schema swapeazi.rate_receipt.v1): publisher, source_type, read_at, size_priced, rate, official_rate, cost_pct, confidence, evidence_ref and status (proven, priced_only or no_live_route). max_age_seconds says when to read again. A missing figure is null with a reason. Free callers see Route A, Route B; a router key sees source names. Never executes.

NameRequiredDescriptionDefault
toNoDestination currency, e.g. ZAR.
fromNoSource currency, e.g. USDT.
amountNoAmount in the source currency. Default 10000.
corridorNoInstead of from and to: USDT-ZAR.
access_keyNoA router key (rk_...), if not sent as a Bearer header.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does well: "Never executes" declares it a read-only, non-mutating operation, it states no partner key is required, and it discloses that missing figures come back as null with a reason rather than erroring. It also reveals a visibility difference by credential tier (free callers see Route A/Route B, router keys see source names), though it says nothing about rate limits or quotas.

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 lead sentence front-loads what the tool returns and the key constraint, and the following sentences each add distinct information (receipt fields, freshness, null semantics, tiering, no execution). The receipt field enumeration is dense but load-bearing given there is no output schema; minor cost is a long unbroken paragraph.

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?

There is no output schema, so the description must describe the return shape itself, and it does: it names the receipt schema, lists every field, and enumerates the status values (proven, priced_only, no_live_route). Combined with null-with-reason semantics, freshness guidance, and the never-executes guarantee, an agent has everything needed to call and interpret this tool.

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 baseline is 3, but the description adds real meaning beyond the schema: it explains that access_key changes what publishers are named in the response, and that amount is the "payment size" at which figures are quoted. The from/to vs corridor relationship is left to the schema, which already documents it as an either/or.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read public prices for a corridor at a payment size" gives a specific verb and resource and enumerates the sources covered (on-chain pools, public order books, public adverts) plus the no-partner-key constraint. It does not name or contrast any sibling such as get_corridor_rates or swapeazi_route_compare, so an agent must infer the boundary from the "public / no partner key" qualifier alone.

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?

Usage is implied by the framing (public, no key, quoted at a payment size) and there is useful refresh guidance in "max_age_seconds says when to read again," plus an access-tier note about free vs router key callers. However, there is no explicit when-to-use/when-not or named alternative among the many rate siblings, so the selection decision 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.

private_payment_statusWhere a private payment standsAInspect

For a payment prepared with private: true, give the deposit_address from its quote_proof. Returns the NEAR Intents status: PENDING_DEPOSIT, KNOWN_DEPOSIT_TX, PROCESSING, SUCCESS, REFUNDED, INCOMPLETE_DEPOSIT or FAILED, with the reason when it cannot be read. Read-only, free, no key.

NameRequiredDescriptionDefault
deposit_addressYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden and does real work: it declares 'Read-only, free, no key,' enumerates the exact status vocabulary, and states that a reason is returned when the status cannot be read. It does not cover what happens with an unknown or non-private deposit_address (error vs. status value), which keeps it short of a 5.

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?

Two sentences, densely packed, with the precondition and the read-only/free/no-key facts front-loaded. Every clause earns its place; the only cost is the slightly tangled opening clause that muddles subject and action.

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 must explain returns, and it does: the full status enum plus the failure mode of returning a reason. Combined with the read-only/no-key disclosure and parameter provenance, an agent has everything needed to call this single-parameter read tool 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 0% and the sole property is an unqualified string, so the description must supply meaning — and it does, explaining that deposit_address originates from the quote_proof of a private payment. That provenance is exactly what an agent needs to source a valid value, though nothing is said about format or address validation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns the NEAR Intents status for a payment prepared with private: true, and names the resource being read (deposit_address from its quote_proof). It distinguishes itself from generic status siblings (intent_status, payment_run_status) by tying the lookup to the private-payment deposit address, though the first sentence's phrasing ('give the deposit_address from its quote_proof') momentarily reads as an instruction for obtaining the input rather than what the tool does.

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 qualifier 'For a payment prepared with private: true' gives a clear precondition that implies when to use it. However, no alternative is named — an agent can't tell from the description whether intent_status or payment_run_status should be used for non-private payments or before a deposit address exists, so routing must be inferred.

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

rail_handoffHandoff to your railAInspect

Keyed. With intent_id: after a person has approved, the approved instruction for your rail, with a Rate Receipt of the rate against the official rate and the negotiated deal; where no live connection is configured the adapter is marked stub. The default is that the business releases the payment itself in its own bank or rail portal (release_in_own_bank on the approved payment); SwapEazi never sends it. Sandbox only: with run_id, payment_id and connection_id, sends ONE Payment Run payment a named person approved through the business's OWN connected rail account (Yellow Card sandbox; production stays off unless the deployment sets YELLOWCARD_ENV=production), with the rail's own idempotency key, and returns the submission with a Rate Receipt and the release record. Refused, with the reason, without a recorded approval, when the payment changed since approval, above the connection's cap, or for an account other than the one approved. With run_id and payment_id only: reads that payment's status from the rail. SwapEazi holds no funds and has no account in the flow.

NameRequiredDescriptionDefault
reasonNo
run_idNo
intent_idNo
access_keyNo
channel_idNo
network_idNo
payment_idNo
account_typeNo
connection_idNo
account_numberNoThe payee's full account number as approved; SwapEazi keeps only its last four characters and matches this against the approved instruction.

TDQS

A3.9/5.0
Behavior5/5

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

With no annotations, the description carries the full load and does so well: it states the default is that the business releases the payment in its own portal and SwapEazi never sends it, that sending is sandbox-only and production-gated by YELLOWCARD_ENV, that the rail's own idempotency key is used, and that SwapEazi holds no funds. It also discloses the exact refusal conditions (no recorded approval, payment changed, above cap, wrong account) and the adapter-is-stub behavior when no live connection exists.

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?

Nearly every clause carries real information, but it is delivered as one dense semicolon-chained block that is hard to parse and hard to scan for the relevant mode. The leading fragment 'Keyed.' costs a slot without orienting the reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, multi-mode tool with no output schema and no annotations, the description covers modes, rollback/refusal semantics, and environment gating well, but omits what the status-read mode actually returns and what several parameters (reason, channel_id, network_id, access_key, account_type) are for.

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 coverage is only 10%, so the description must compensate, and it does explain the roles of intent_id, run_id, payment_id, and connection_id and their combinations. But reason, access_key, channel_id, network_id, and account_type are left entirely undefined in both schema and description, leaving half the surface unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names concrete resources and verbs: it returns the approved instruction plus a Rate Receipt with intent_id, submits a single Payment Run payment with run_id/payment_id/connection_id, and reads rail status with run_id/payment_id alone. The multi-mode branching is distinguishable from siblings like submit_payment or release_status, though 'Keyed.' as an opener is opaque.

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?

Each mode is gated on an explicit parameter combination and precondition ('after a person has approved', 'Sandbox only', 'with run_id and payment_id only'). It does not, however, tell the agent when to prefer this tool over near-neighbors such as verify_release_record, release_status, or record_release.

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

rail_positionWhere a rail's published price sitsCInspect

Keyed. For one corridor, the rail's own published rate beside the official rate and a public market read when one exists. Position is lower_landed_cost, higher_landed_cost or unknown. A missing figure is Being measured.

NameRequiredDescriptionDefault
toYes
fromYes
access_keyNo

TDQS

C2.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does add genuine behavioral value by enumerating the three possible position outcomes and disclosing how missing data is represented ("Being measured"), which is information the schema cannot convey. It says nothing, though, about the access_key requirement, permissions, whether this is a read-only lookup, or latency/caching behavior.

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?

The definition is short, but its brevity comes partly from under-specification rather than economy. The leading fragment "Keyed." is opaque and the final sentence, "A missing figure is Being measured.", is awkwardly capitalized and grammatically odd, so the reader must work to parse it. The core purpose is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema coverage on three parameters, the description is the only source of context and it is thin. It partially compensates by describing the return states and the missing-data marker, but it omits authentication, endpoint semantics, and any routing guidance among a large set of near-duplicate rate and cost siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters, so the description must compensate and largely fails. "For one corridor" weakly implies that from and to are corridor endpoints, but neither is named or explained, and the access_key parameter is never mentioned at all, leaving the agent to guess that it is a credential. Two of three parameters carry no meaning from either source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does convey the resource and comparison: for one corridor it puts the rail's own published rate beside the official rate and an optional market read, yielding a position of lower_landed_cost, higher_landed_cost or unknown. However, it opens with the cryptic fragment "Keyed." instead of a verb, and it never distinguishes itself from closely related siblings such as get_corridor_rates, price_routes, or swapeazi_landed_cost, so an agent cannot tell from the text alone which of these to pick.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no stated alternatives or exclusions. The phrase "For one corridor" implies the scope of a single lookup, but nothing tells the agent when this is preferable to the many other rate and cost tools in the sibling list. The only usage-adjacent signal is the informal convention that a missing figure shows as "Being measured."

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

rate_deal_historyDated comparisons against a customer's bank dealAInspect

Keyed. Returns the dated history of comparisons for one customer and corridor: the rate on each prepared or reconciled payment against that day's official rate, the negotiated deal (margin in bps or a fixed spread, with the customer's own bank label), and a public market price when one was read. Drift is in bps and in the sent currency. above_negotiated is set when the gap over the deal exceeds the stored tolerance. A missing figure is null. The payment stays with the customer's own bank. A router key is required.

NameRequiredDescriptionDefault
toYes
fromYes
access_keyNoA router key (rk_...), if not sent as a Bearer header.
customer_idYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses units (drift in bps and in the sent currency), the meaning of the above_negotiated flag relative to a stored tolerance, null handling for missing figures, and that payment identity stays with the customer's own bank. What it does not cover is ordering, pagination, or result volume for a presumably unbounded history query.

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 content is dense and largely front-loaded with the resource and payload described before the caveats, and most sentences carry distinct information. The one-word opener 'Keyed.' is opaque, and the closing 'A router key is required' largely restates what the access_key schema field already describes.

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?

For a tool with no output schema and no annotations, the description does unusually well at explaining the return shape — field meanings, units, the derived above_negotiated flag, and null semantics. The remaining gaps are the date-range semantics and result ordering/limits, and the dangling corridor reference that the schema cannot satisfy.

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 only 25%, so the description must compensate; it scopes customer_id to a single customer and implies from/to bound the dated window, which is some added meaning. However, it never states the date format or inclusivity, and it repeatedly references a 'corridor' dimension that has no corresponding parameter in the schema, which muddies rather than clarifies the parameter set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — the dated history of rate-vs-deal comparisons for one customer and corridor — and enumerates what each record contains (official rate, negotiated deal with margin in bps or fixed spread, public market price). That is enough to distinguish it from point-in-time siblings like get_corridor_rates or get_rate_receipt, though it never names those siblings explicitly.

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?

Usage is implied by the scope 'for one customer and corridor' and by the focus on prepared or reconciled payments, so an agent can infer this is a retrospective audit/summary call rather than a live quoting call. There is no explicit when-to-use, when-not-to-use, or named alternative, leaving the routing decision to inference.

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

recommend_payment_routeRecommend a route for one paymentAInspect

Hard eligibility first (complete cost, not stale, settles by the due date, licence active, not excluded by route health), then configurable scoring (total cost, speed, reliability, liquidity, compliance), and the recommendation with why, alternatives, data used, missing information and freshness; or no reliable recommendation with the reasons. Not a firm quote: confirm with the provider before approval. One analysis (POST /api/v1/payment-analyses), the same service for every payment-intelligence tool. Every figure labelled LIVE, INDICATIVE, HISTORICAL or ESTIMATED; estimated savings are never realised. Free: shares the route-assessment allowance.

NameRequiredDescriptionDefault
amountNoAmount, in currency (default the source currency).
weightsNoYour own scoring weights: { total_cost, speed, reliability, liquidity, compliance }, non-negative, normalised to 1.
currencyNoThe currency of amount: the source currency, or the destination one (then it is what the supplier receives).
due_dateNoYYYY-MM-DD: a route that cannot settle by then is not eligible.
priorityNoSets the default scoring weights. Default balanced.
supplierNo
referenceNo
access_keyNoA router key (rk_...), if not sent as a Bearer header: names the routes and is not counted.
analysis_idNoRead a kept analysis (pa_...) instead of making a new one.
invoice_textNoPaste the invoice or a sentence (e.g. 'Invoice INV-2207, Lusaka Copper Supplies Ltd, Zambia. Amount due: EUR 80,000. Due 2026-11-20'). Or the fields below.
source_currencyNoISO code you pay from, e.g. EUR or ZAR.
existing_providerNoYour current provider: { provider, kind: quote | entered_rate | past_payment, rate (destination per source unit) or landed_amount, fees: { transaction, intermediary, payout } in the source currency, fees_deducted_destination, quoted_at, valid_until }.
beneficiary_amountNoWhat the supplier must receive, in the destination currency (instead of amount).
destination_countryNoISO 3166 alpha-2 or name, e.g. ZM or Mozambique.
destination_currencyNoISO code the supplier is paid in, e.g. ZMW. Or destination_country.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does substantial work: it discloses the eligibility gates applied, the scoring dimensions, what the response contains on both success and failure paths, the data-quality labelling scheme (LIVE / INDICATIVE / HISTORICAL / ESTIMATED), the warning that estimated savings are never realised, and the quota model ('Free: shares the route-assessment allowance'). It does not say whether a POST analysis is persisted or what happens on repeated calls, which keeps it out of 5 territory.

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?

The opening sentence is a single unbroken chain of clauses and parentheticals, and the mid-text aside about POST /api/v1/payment-analyses and a shared service for all payment-intelligence tools is more confusing than useful. The caveats and labelling rules do earn their place, but the dense packing hurts scannability.

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?

For a 15-parameter tool with no annotations and no output schema, the description covers the gap well: decision process, eligibility criteria, output shape on both success and no-recommendation paths, quoting caveat, data-freshness vocabulary and quota behaviour. What is left implicit is that zero parameters are required and which input mode is expected, which an agent must derive from the schema alone.

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 coverage is 87% with 15 parameters, so the schema already documents most fields including the nested existing_provider object. The description reinforces a few semantics — the five scoring dimensions map to the weights object, and due-date settlement is an eligibility gate — but it adds no usage rules for the mutually exclusive input modes (invoice_text vs. amount/currency vs. beneficiary_amount) or for analysis_id replay. Baseline 3 given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation on a specific resource: it runs hard eligibility gates, then weighted scoring, then returns a recommendation with rationale, alternatives, data used, missing information and freshness. That is far more concrete than the title. It stops short of naming which sibling it replaces (assess_route, price_routes, compare_payment_providers), and the line 'the same service for every payment-intelligence tool' actively blurs the boundary between them.

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?

Usage is implied through the eligibility preconditions (complete cost, not stale, settles by due date, licence active, route health) and the caveat that this is not a firm quote to be confirmed with the provider. There is no explicit when-to-use/when-not-to-use statement and no routing against the many sibling analysis tools, so the agent must infer the choice.

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

reconcile_outcomeReconcile what landedAInspect

After the money moved: post what was sent and what landed (or the all-in cost) against the map it was chosen from. Returns the expected band beside the realised cost, signed. The outcome is kept by pair and size band only and later maps at that size carry it, so bands tighten and unknowns close. Economics only. Free.

NameRequiredDescriptionDefault
map_idYes
sourceNo
realisedYes
proof_refNoYour own reference for the proof; never an account number.
candidate_id_usedYesThe candidate_id from the map the payment went through.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose a non-obvious side effect: outcomes are retained only by pair and size band and later maps at that size inherit them, so bands tighten. It also discloses no cost ('Free') and the signed return value. It omits idempotency (can an outcome be re-posted or corrected?), permissions, and what happens on a failure-flagged outcome.

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?

Four short sentences, front-loaded with the trigger ('After the money moved') and the retention behavior, with no wasted framing. Density is high and some phrasing requires domain fluency, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 40% schema coverage, the description covers the trigger, the retention side effect, and the return shape. It still leaves an agent uncertain about re-submission/correction semantics and authorization, which matters for a write that permanently adjusts future routing bands.

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 coverage is 40%, so the description needs to compensate somewhat. It clarifies that realised may be expressed as sent versus landed or as an all-in cost, which maps onto the nested realised fields, and ties the post to the map it was chosen from. It adds nothing about source (an enum of four ingestion channels) or about failure and settled_at inside the nested object, leaving materially undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action: post what was sent and what landed (or the all-in cost) against the map the payment was chosen from, and return the expected band beside the realised cost. The verb and resource are specific, but the vocabulary ('map', 'band', 'signed') is domain shorthand and the tool is not contrasted with near-siblings like reconcile_payment or record_landed, so an agent must infer the boundary.

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?

'After the money moved' establishes the trigger condition clearly, and 'Economics only. Free.' bounds scope, but there is no explicit statement about when to use this instead of record_landed, reconcile_payment, or swapeazi_guardrail_reconcile. Usage is implied rather than routed.

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

reconcile_paymentReconcile what landed on a payment runAInspect

Record what landed for released payments in a run: amount sent, amount landed, settlement time, proof reference, the official rate with a Rate Receipt, realised all-in cost in percent and in the sent currency, and position inside, above or below the assessment range. The same proof reference is rejected the second time. dry_run: true validates and writes nothing. A payment with no assessment is flagged no_evidence. A router key is required except for pr_sample. Never sends money.

NameRequiredDescriptionDefault
run_idYespr_... or pr_sample.
dry_runNotrue: validate only, write nothing.
paymentsYes[{ payment_id, sent_amount, landed_amount, settled_at?, proof_ref, source? }]. proof_ref is an MT103 reference, a transaction hash or a provider reference.
access_keyNoA router key (rk_...), if not sent as a Bearer header.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does substantial work: it discloses idempotency (the same proof reference is rejected the second time), a validation-only mode that writes nothing, a 'no_evidence' flag when a payment has no assessment, an auth requirement (router key except for pr_sample), and the reassurance that it never sends money. Gaps remain around what a successful write returns and whether a recorded reconciliation can be corrected or overwritten.

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 the core action, then the operational constraints. Dense but every clause carries a distinct rule or caveat, and there is no filler. The long recorded-fields enumeration in the opening sentence is the only part that could be trimmed or moved.

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?

For a write tool with no annotations and no output schema, the definition covers the important unknowns: side-effect safety, idempotency, validation mode, auth requirement and one failure mode. It is nearly complete; what is missing is the success response shape and any precondition that the run must actually be in a released state before reconciliation is attempted.

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 already 100%, so the baseline is 3. The description adds some meaning the schema does not, notably the duplicate proof_ref rule and the dry_run write-nothing contract, but it also lists recording fields (official rate with a Rate Receipt, realised all-in cost in percent and sent currency, position vs the assessment range) that do not appear among the schema's payment item properties, leaving an agent unsure whether those are inputs or derived outputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: record what actually landed for released payments in a run, and then enumerates the recorded dimensions (amount sent, amount landed, settlement time, proof reference, realised cost, range position). That is far more than a restatement of the name. It stops short of a 5 because it never names its closest siblings (record_landed, reconcile_outcome) to explain why a run-level reconcile differs from those.

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?

Usage is implied rather than stated: it applies to 'released payments in a run', and dry_run: true is offered for validate-only. There is no explicit when-to-use versus when-not, and no guidance on choosing this over record_landed, reconcile_outcome or run_payments, even though those siblings plausibly overlap. The pr_sample auth exception is the one concrete conditional given.

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

record_landedRecord a landed intentAInspect

Close a remembered intent once the money arrived: what left (source currency) and what arrived (destination currency), and/or attach a stablecoin leg by chain and transaction hash, verified from the chain. SwapEazi measures it against the independent reference and against what was routed, and every later route on the pair carries it as a measured payment. On a recurring intent it closes the current cycle only and the series moves to its next due date. Amounts only, never names or account numbers.

NameRequiredDescriptionDefault
txNoFor a stablecoin leg: the transaction hash; read and priced from the chain and added to the payment record.
sentNo
chainNoFor a stablecoin leg: base, ethereum, arbitrum, optimism, polygon or celo.
landedNo
providerNoDefaults to the route selected on the last day.
intent_idYes
settled_atNoYYYY-MM-DD

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and delivers real behavioral context: the result is measured against an independent reference and against the routed amount, every later route on the pair inherits it as a measured payment, and on a recurring intent it closes only the current cycle while the series advances to its next due date. It also imposes a data-constraint rule (amounts only, never names or account numbers). It stops short of coverage on permissions, failure/mismatch behavior, or idempotency.

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 action and its trigger are front-loaded in the first clause, and the later sentences each add new information (measurement, route propagation, recurring behavior, data constraints) rather than restating the title. It is dense and long-sentenced, but no sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation with no annotations and no output schema, the description covers purpose, side effects, and recurring semantics well, but omits what the call returns and how errors or measurement mismatches are surfaced. The provider and settled_at semantics are left entirely to the schema, which only partly documents them.

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 coverage is 57%, and the description meaningfully compensates for the two bare numeric params by defining sent as what left (source currency) and landed as what arrived (destination currency), plus the chain/hash pairing for the stablecoin leg. It adds nothing for intent_id, provider, or settled_at beyond what the schema already says, leaving the uncovered remainder partly undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: close a remembered intent once funds have arrived, recording what left, what arrived, and optionally a stablecoin leg by chain and tx hash. It is unambiguous about the operation, but it never names or distinguishes itself from likely-overlapping siblings such as confirm_payment, reconcile_payment, or record_release, so it stops short of a 5.

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?

Timing guidance is implied clearly enough ('once the money arrived'), and the recurring-intent branch tells the agent which case it is in. However, there are no explicit exclusions or named alternatives for the adjacent settlement/confirmation tools, and no preconditions (e.g. intent must exist or be in a pending state) are stated.

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

record_releaseRecord a releaseAInspect

At the moment a material payment is released, record it against the organisation's release policy: the map_id and measure_id on file, who released it, and any exception with its reason and approver. When an agent releases under a policy with agent_autonomy tiers, the record states the tier its amount falls in and the agent_approval on record for it. Returns a Release Evidence Record, appended to the organisation's hash chain and signed. It records; it never blocks, executes or moves money. A release with no map is still recorded, flagged as a policy miss. Needs the organisation's key.

NameRequiredDescriptionDefault
uetrNoThe payment's SWIFT UETR (UUID v4), optional: ties the record to the payment itself.
amountNo
map_idNo
exceptionNo
policy_idYes
measure_idNo
intent_hashNo
payment_refYesYour internal payment reference, never an account number.
released_atNoISO timestamp; defaults to now.
released_byYes
agent_approvalNoAgent releases only: { id, role } of the person who signed off a release above the policy's agent_autonomy.release_up_to. The role is the policy's agent_autonomy.approver_role.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses the side effect (append to the organisation's hash chain, signed), the return artefact (Release Evidence Record), non-blocking semantics, an edge case (a release with no map is still recorded, flagged as a policy miss), and an auth prerequisite (the organisation's key). The notable omission is idempotency — whether re-recording the same payment_ref duplicates or upserts an evidence record.

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 the trigger and the payload, then behavioural guarantees, then the edge case and auth requirement — a sensible ordering with no filler. Some sentences are long and compound, but each adds distinct information.

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?

For an 11-parameter mutation tool with no annotations and no output schema, the description covers the return value, side effects, a failure-adjacent edge case and the key requirement. Remaining gaps are idempotency/retry behaviour and the semantics of the amount and intent_hash fields.

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 only 36%, and the description compensates for the opaque fields by explaining what map_id, measure_id, exception (reason + approver) and agent_approval mean in policy terms, including the agent_autonomy tier and approver_role linkage. It leaves amount, intent_hash, uetr and released_at unexplained, so the compensation is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('record it against the organisation's release policy') and enumerates what the record captures (map_id, measure_id, releaser, exceptions). The clause 'It records; it never blocks, executes or moves money' separates it from execution-oriented siblings like run_payments or submit_payment. It does not name the closest siblings (verify_release_record, release_status), so differentiation is partial.

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?

Timing is stated precisely ('At the moment a material payment is released') and the 'material' qualifier implies scope, but there is no explicit when-not-to-use or pointer to verify_release_record / release_status for reading records back. Usage is implied by context rather than routed against alternatives.

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

release_statusRelease record statusAInspect

Read a Release Evidence Record by rer_id: the policy result at release and the reconcile status as of now (pending, done, overdue or not required). With no rer_id, verifies the organisation's chain of records and returns ok or the first record where it breaks. Read-only. Needs the organisation's key.

NameRequiredDescriptionDefault
rer_idNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does real work: it declares 'Read-only' and 'Needs the organisation's key', covering the safety and auth profile an agent would otherwise lack. It also enumerates the possible reconcile states (pending, done, overdue, not required) and the chain-check outcome (ok or first breaking record), though it says nothing about error behavior or volume of records returned.

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

Conciseness5/5

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

Two front-loaded sentences with no filler: the primary lookup mode comes first, the no-id fallback second, and the operational constraints (read-only, key required) are compressed to the end. Every clause carries information.

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?

With no output schema and no annotations, the description steps in to describe return values for both modes and the auth prerequisite, which is most of what an agent needs before calling. Remaining gaps are minor — no guidance on interpreting an 'overdue' status or on what happens when a supplied rer_id does not exist.

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 0%, so the bare 'string' type for rer_id gives an agent nothing. The description partly compensates by tying rer_id to record lookup and by defining the meaning of its absence (organisation-wide verification), but it never says what a rer_id looks like or where one is obtained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Read a Release Evidence Record by rer_id') and spells out the dual mode: lookup by id versus a whole-organisation chain verification when rer_id is absent. It is clear what the tool does, though it never names the adjacent siblings (verify_release_record, record_release, reconcile_outcome) that an agent must choose between.

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?

The conditional 'With no rer_id, verifies the organisation's chain of records' gives a concrete selection rule between the tool's two behaviors. It stops short of stating when an agent should prefer verify_release_record or record_release instead, so there is no exclusion guidance against alternatives.

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

remove_rail_accountRemove a connected rail accountCInspect

Keyed. Deletes a connected rail account and its stored credentials. Payments already sent stay readable in the business's own rail account.

NameRequiredDescriptionDefault
access_keyNo
connection_idYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses what is destroyed (the account and its stored credentials) and what survives (previously sent payments stay readable in the business's own rail account), which is real value. However, it omits authorization requirements implied by "Keyed," irreversibility, and whether pending or scheduled payments, mandates, or routes tied to the account are affected.

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?

Three short sentences, front-loaded with the destructive action and then the data-preservation guarantee, with no wasted wording. The one-word "Keyed." opener is efficient but too terse to be informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive mutation with no annotations, no output schema, and zero parameter documentation, so the description is the only place this information could live. It covers the core effect and one side effect but leaves authentication semantics, error behavior on unknown ids, and downstream impact on pending payments unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain both parameters, but it never mentions connection_id and only vaguely alludes to access_key via the word "Keyed." The agent learns nothing about identifier format, where to obtain the connection id, or what the access key is for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: deletes a connected rail account together with its stored credentials. That clearly separates it from siblings like connect_rail_account and list_rail_accounts. The leading fragment "Keyed." is cryptic, but the core purpose statement is unambiguous.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives or consequences to check first (e.g., active payments, mandates, or routes tied to the account). The only contextual hint is that already-sent payments remain readable, which is a consequence statement rather than usage guidance.

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

request_introductionRetired: request an introductionAInspect

Retired on 19 Oct 2026: SwapEazi collects no contact details for introductions. Calls answer RETIRED. The next step after route_intent is the chosen route's handoff_url, the provider's own sign-in or account page.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does so well: it discloses that calls answer RETIRED and that no contact details are collected, so the agent knows there are no side effects and no data returned. It does not say whether the response is an error or a normal payload, which is the only remaining ambiguity.

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

Conciseness5/5

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

Three short sentences, front-loaded with the retirement date and status, then the replacement path. No filler and nothing that could be mistaken for an instruction to call it.

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 retired, zero-parameter, no-output tool, the description supplies everything needed: status, reason, expected response, and the correct alternative flow. Nothing an agent needs in order to act correctly 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?

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to clarify. The empty schema matches the retirement status.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (introductions) and states unambiguously that the tool is retired as of 19 Oct 2026 because SwapEazi collects no contact details. The original verb is only implied, but an agent immediately knows this tool does nothing useful and returns RETIRED.

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 explicitly states the tool must not be used and names the correct next step: after route_intent, go to the chosen route's handoff_url, the provider's own sign-in or account page. That is a direct when-not/alternative pairing referencing a real sibling.

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

request_payment_approvalWhat needs a person's approvalAInspect

For a payment run: the payments awaiting approval with amount, route, assessment and approval_digest, the approver role, and the payments not ready with their lifecycle state and reason. Never approves: a named person approves with approve_payment_run.

NameRequiredDescriptionDefault
run_idYesThe payment run (pr_...), or pr_sample.
access_keyNoThe router key that made the run.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden; it does clarify the key behavioral trait that this never mutates and never approves, which is valuable. However it says nothing about authorization requirements for viewing approval queues, whether the approver role implies restricted access, or limits/size of the returned list.

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 scope and returned contents are front-loaded in a single information-dense sentence, and the exclusion clause follows. The sentence is long and list-heavy but every element conveys a distinct returned field, so little is wasted.

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?

There is no output schema, so the description correctly takes on the job of describing return values field by field (amount, route, assessment, approval_digest, approver role, lifecycle state, reason). For a two-parameter read tool this is close to sufficient, with only access/permission context and any list-size behavior left unstated.

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 coverage is 100%, with run_id documented as a payment run (pr_...) or pr_sample, so the baseline is 3. The description adds no further meaning for run_id or for access_key, which is never mentioned in the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates concretely what the tool surfaces for a payment run: payments awaiting approval with amount, route, assessment and approval_digest, the approver role, plus not-ready payments with lifecycle state and reason. That makes the read/list nature unmistakable despite the name 'request_payment_approval' suggesting a write, and it names approve_payment_run as the contrasting sibling.

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?

It scopes usage to 'for a payment run' and explicitly excludes the approval action ('Never approves: a named person approves with approve_payment_run'), which routes the agent correctly. It does not distinguish itself from adjacent read siblings such as approval_status or payment_run_status, leaving some ambiguity about which status tool to pick.

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

route_intentRoute an intentAInspect

Route one cross-border payment, given as fields or as one sentence ("USD 25,000 to a supplier in Lagos by 30 November"). From a sentence the guide reads what matters without being told: urgency or the due date sets the deadline and puts speed first, words such as cheapest put cost first, regulated or licensed keeps only providers with a licence on record, and paying drivers, staff or a supplier is noted; intent.understood says what was read, and explicit policy fields override it. Returns every route that can carry it, ordered by the payer's own policy, the route the policy selects on the strongest evidence (payments measured when they landed, then published prices; estimates only if the policy allows), the saving against the payer's own quote, and where to pay. With a due date it also routes across time: pay now, lock a forward while holding tokenised T-bills, convert and park, or hold unhedged, as what each needs today. With remember: true SwapEazi keeps the intent, reprices it daily until due and returns its intent_id. A sentence about idle money ("park $5m USDC, back within 24 hours, non-US, qualified, we have Ondo") returns treasury parking instead: tokenised T-bill funds that fit the amount, eligibility, chain and redemption need, by net yield, with what the accounts already held can do and what a new account is worth. The free verification returns the verdict with names masked; a router key (Bearer rk_...) unlocks them. SwapEazi executes nothing and takes no fee from any provider. Returns a compact view by default (each route with its release window cut to the summary and landing dates); pass detail: "full" for everything.

NameRequiredDescriptionDefault
toNo
fromNo
haveNoProviders or issuers the payer already has accounts with; the result shows what they can do and what a new account adds.
textNoThe payment in one sentence; used instead of from/to/amount.
amountNoAmount leaving, in the source currency.
detailNocompact (default): a short summary that points at the signed full document, sized for a tool result. full: the whole document, which can exceed 100 KB.
policyNo
repeatNoWith remember and due_date: the payment repeats; due_date is the first cycle. Monthly cycles keep the day of month (31st: last day of shorter months). One reminder per cycle, before the last day to release through the selected route.
deliverNoAmount to deliver on the due date, destination currency.
lock_atNoWith remember: mark the day locking the rate needs this much or less, source currency.
due_dateNoYYYY-MM-DD the money must land; adds routing across time: pay now, forward, convert and park, hold unhedged.
rememberNoKeep the intent and reprice it daily until it lands; returns remembered.intent_id.
repeat_countNoWith repeat: number of cycles, the first included.
repeat_untilNoWith repeat: YYYY-MM-DD, last date a cycle may fall on.
nudge_lead_daysNoWith repeat: banking days before the release-by date to send the reminder (default 2).
your_quote_landedNoWhat the payer's current quote would land, in the destination currency.

TDQS

A3.6/5.0
Behavior5/5

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

With no annotations at all, the description carries the full behavioral burden and largely meets it: it discloses side effects (remember: true persists the intent, reprices daily until due, returns intent_id), the read/quote semantics ("SwapEazi executes nothing and takes no fee from any provider"), auth behavior (free verification masks names; a Bearer rk_... router key unmasks), result ordering logic (payer policy, strongest evidence: landed payments then published prices, estimates only if policy allows), and the default compact output. That is well beyond what the schema communicates.

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?

The lead sentence is well front-loaded, but the body is a wall of long run-on sentences chaining clauses with commas and semicolons, and the treasury-parking sub-mode is buried mid-paragraph with no structural signal. Every sentence carries information, yet the density makes it easy to miss the mode switch and the remember/repeat semantics on a first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter tool with a nested policy object, no annotations and no output schema, the description does substantial work on the payment path and the return contents (routes, policy-selected route, saving, where to pay, time-split options, intent_id). However, the recurrence family (`repeat`, `repeat_count`, `repeat_until`, `nudge_lead_days`) is entirely absent from the description and lives only in schema strings, and the stray verification sentence adds ambiguity rather than completeness.

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?

At 81% schema coverage the baseline is a 3, and the description earns the upgrade: it gives a worked example of the `text` sentence format, explains that parsed fields are reported in intent.understood and overridden by explicit `policy` fields, describes what `due_date` unlocks (pay now / forward / convert-and-park / hold unhedged), and states that `have` shows what existing accounts can do versus what a new account adds. `lock_at` is left to the schema, but overall it adds real meaning beyond the parameter list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Route one cross-border payment") and defines two operating modes: a single payment given as fields or a sentence, and treasury parking for idle money. It is clear what the tool does, but it never distinguishes itself from the many closely overlapping siblings (recommend_payment_route, price_routes, assess_route, compare_payment_providers, compile_intent, decide_intent), so an agent cannot tell from this text alone which of these to call.

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

Usage Guidelines2/5

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

It explains internal input modes ("given as fields or as one sentence", "explicit policy fields override it") and mentions that a sentence about idle money triggers treasury parking, which is useful routing guidance. But there is no when-to-use / when-not guidance relative to alternatives, and in a sibling set this crowded that omission is significant. The stub "The free verification returns the verdict with names masked" also reads like guidance belonging to a different tool (swapeazi_verify_record) rather than this one.

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

run_paymentsRun a batch of cross-border payments: assess, assess, prepareAInspect

The Payment Run. Send the payables (payables: a JSON list; file: a payout CSV or pain.001; or xero: a Xero bills reply) with source_currency. Each payment is verified (changed bank details against previous, duplicates, missing fields), assessed (route assessment_id with Rate Receipts: who published each figure, when it was read, its evidence type) and given an instruction for the business's own bank, provider or wallet (a CSV row, or an unsigned stablecoin transaction). Each is prepared, needs_attention (with the reason) or no_evidence. Returns run_id. An agent prepares; a named person approves. Never sends or moves money. A router key runs real payables; without one, sample: true returns the synthetic sample run. Same as POST /api/v1/payment-runs.

NameRequiredDescriptionDefault
fileNoInstead of payables: a payout CSV or pain.001 text.
sortNoYour chosen order for the routes: landed cost against the official rate, stated days to land, or the measured 7-day answer rate. It is your order, stated as yours; SwapEazi does not rank routes.
policyNo{ approver_role, material_threshold: { amount, currency }, agent_may_record_approval }
sampleNotrue: the built-in sample run (synthetic, labelled), no key needed.
payablesNo[{ reference, payee: { name, iban?, bic?, account_number?, routing_number?, branch_code?, country? }, amount, currency, due_date?, rail?: bank | provider | stablecoin, via?, wallet? }]
previousNoThe previous run's payables, for changed bank details and amount jumps. Not kept.
access_keyNoA router key (rk_...), if not sent as a Bearer header.
exclude_typesNoLeave out routes of these rail types. Each route left out is listed with the reason.
include_typesNoKeep only routes of these rail types. Each route left out is listed with the reason.
min_answer_rateNoPercent, 0 to 100: leave out routes whose measured 7-day answer rate is lower, or not measured (not enough reads). Each is listed with the reason.
source_currencyNoThe currency the business pays from, e.g. ZAR.

TDQS

A4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does substantial work: it discloses the verification checks (changed bank details, duplicates, missing fields), the assessment contents (route assessment_id with Rate Receipts and evidence provenance), the three possible per-payment outcomes (prepared, needs_attention, no_evidence), and the key requirement. It stops short of covering idempotency, re-run behavior, or size/time limits on a batch.

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?

The core intent is front-loaded, but the middle is a chain of dense parenthetical asides that are hard to parse in one pass. The 'assess, assess, prepare' duplication in the title and the unexplained 'xero' branch add noise without adding callable capability.

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?

For an 11-parameter, nested-object batch tool with no output schema, the description covers the important ground: outcome states, the returned run_id, the human-approval gate, and key/sample modes. Remaining gaps are secondary — how the returned run_id is consumed and what a needs_attention result expects from the caller next.

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 explains every parameter, including previous ('Not kept'), sort, and the include/exclude type semantics; baseline 3 applies. The description adds almost nothing beyond restating the three input sources, and it actually names a 'xero' source that has no corresponding parameter in the schema, which could mislead an agent.

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 opens with a specific verb and resource ('Send the payables ... with source_currency') and names the resulting artifact ('Returns run_id'). It also draws the boundary against the approval and send steps ('An agent prepares; a named person approves. Never sends or moves money'), which separates it from siblings like approve_payment_run and submit_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?

It gives clear operating context: agent prepares, a named person approves, a router key is needed for real payables, and without one you must pass sample: true for the synthetic run. What's missing is explicit routing to named alternatives such as prepare_payment or prepare_payment_instruction when a single payment rather than a batch is wanted.

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

submit_paymentSubmit an approved payment (sandbox)AInspect

Sends ONE approved, released payment of a run through the business's own connected rail account (sandbox), with an idempotency key; without connection_id it reads the submission's status. Refused unless approved and within the connection's cap. Production execution waits on an authorised provider agreement.

NameRequiredDescriptionDefault
run_idYesThe payment run (pr_...), or pr_sample.
accountNoThe payee account the person approved, to match.
access_keyNoThe router key that made the run.
payment_idYes
connection_idNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden; it does disclose real behavior the agent could not otherwise infer: single-payment scope, sandbox-only execution, an idempotency key, cap and approval preconditions, and the upstream provider agreement gate. It does not state what a refusal looks like (error vs. partial result), what the status-read mode returns, or whether the idempotency key is generated by the caller or the server — significant for a mutating money-movement call with zero annotation coverage.

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?

Two tightly packed sentences: the core action and scope come first, then the connection_id branch, then the refusal and production caveats. No filler, but the clauses are heavily compressed ('ONE approved, released payment of a run'), which borders on dense for a first read.

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?

For a 5-parameter, no-annotation, no-output-schema mutation tool this covers the essentials: what is sent, the preconditions, sandbox vs. production, idempotency, and the alternate read mode. Missing pieces are the return shape of the status-read branch and the observable behavior on refusal, which an agent would need to handle failure correctly.

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 coverage is 60%, and payment_id and connection_id have no schema descriptions at all. The description rescues the most important gap by explaining that connection_id switches between submit and status-read behavior, which the schema does not convey. It adds nothing about payment_id, account, or access_key beyond what the schema already documents, so half the undocumented surface remains unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource ('Sends ONE approved, released payment of a run') plus the channel ('business's own connected rail account (sandbox)') and a second mode ('without connection_id it reads the submission's status'). This is far more precise than the bare tool name, though it never names the overlapping siblings (prepare_payment, confirm_payment, release_status, run_payments) that an agent must choose between.

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?

It gives clear usage context and an effective exclusion: 'Refused unless approved and within the connection's cap', and 'Production execution waits on an authorised provider agreement.' The dual-mode rule (supply connection_id to send, omit it to read status) is explicit, which is the main routing decision for this tool. It stops short of naming which sibling to use instead for the read-only path or for preparation.

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

swapeazi_beneficiary_checkAssess an IBAN, BIC, US routing number, SA branch code, SADC mobile money or address before you sendAInspect

Structural check on a payment destination: an IBAN's own checksum (ISO 7064 MOD 97-10), a US ABA routing number's own checksum, a BIC's format (ISO 9362), an EVM address's EIP-55 checksum, a South African universal branch code recognised against known major banks, or a SADC mobile-money number (South Africa, Zimbabwe, Malawi, Zambia) assessed for the right country code and length. Catches a mistyped or mis-keyed identifier, the single most common cause of a misdirected payment. A payment platform is several rails at once (SEPA, Fedwire/ACH, stablecoin); this assessments whichever identifiers you supply. UK sort codes and most domestic account numbers carry no public checksum and are not covered. This is NOT confirmation of payee or verification of payee: it does not confirm the name on the account, only that the identifier is internally consistent (or, for a branch code or phone number, plausible). Paid: configure this server with an Authorization Bearer key (https://swapeazi.io/pricing).

NameRequiredDescriptionDefault
bicNoA BIC/SWIFT code, 8 or 11 characters.
ibanNoAn IBAN, spaces allowed.
addressNoAn EVM address, '0x' followed by 40 hex characters.
mxClabeNoA Mexican CLABE (SPEI account), 18 digits; its verification digit is verified.
mobileMoneyNoA SADC mobile-money number.
saBranchCodeNoA South African universal branch code, 6 digits.
usRoutingNumberNoA US ABA routing number, 9 digits.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the check is purely structural/internal-consistency, that branch codes and phone numbers are only assessed as 'plausible', what is explicitly out of coverage, and that access is paid via an Authorization Bearer key with a pricing URL. It stops short of stating rate limits, error behavior, or what happens when zero identifiers are supplied.

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 the core purpose, then scope, then exclusions, then auth requirement — a logical order. It is a single dense paragraph of long sentences, and the 'several rails at once' sentence is somewhat expendable, but little else is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A zero-required-parameter tool with a nested object and no output schema needs both a 'supply at least one identifier' rule and some indication of what a result looks like; the description implies pass/fail detection but never describes the response shape or behavior when no identifiers are given. The omitted CLABE parameter is also a completeness gap.

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 coverage is 100%, so the schema already documents format for each field; the description adds genuine meaning by naming the specific algorithm used per identifier type and that SA branch codes are matched against known major banks rather than checksummed. However, it never mentions the mxClabe parameter at all, leaving one of seven parameters with only bare schema text despite otherwise rich narrative.

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+resource ('Structural check on a payment destination') and then enumerates the exact identifiers and algorithms covered (IBAN MOD 97-10, ABA checksum, BIC ISO 9362, EIP-55, SA branch code, SADC mobile money). An agent can distinguish this from sibling tools like confirm_payment or swapeazi_guardrail_check 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 Guidelines4/5

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

Gives a clear when-to-use framing ('before you send', 'catches a mistyped or mis-keyed identifier') plus explicit negative scope ('this is NOT confirmation of payee or verification of payee') and explicit coverage exclusions (UK sort codes and most domestic account numbers). It does not name a sibling tool as the alternative for the cases it excludes, which keeps it below a 5.

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

swapeazi_corridor_registryCorridor registry, public tierAInspect

Documented status of cross-border corridors per provider: which pairs a provider says it serves, published fees, and when each record was last verified. Public tier only. Free, no key.

NameRequiredDescriptionDefault
toNoOptional ISO 4217 destination currency, e.g. 'ZMW'.
fromNoOptional ISO 4217 source currency, e.g. 'ZAR'.
providerNoOptional provider id.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose useful traits: no authentication needed ('Free, no key'), read-only informational nature, and a self-reported caveat ('which pairs a provider says it serves') plus staleness signalling ('last verified'). It says nothing about pagination, result limits, or what happens when no record exists for a corridor.

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?

Two tight sentences, front-loaded with what the record contains. 'Public tier only' and 'Free, no key' overlap slightly on the licensing/tier point but both carry actionable information for an agent deciding whether to call it.

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?

For a three-optional-filter read-only lookup with no output schema, the description usefully sketches the record shape (pairs, fees, verification date) and the access tier. Only return-level mechanics such as pagination or empty-result behavior are absent.

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 all three optional filters (from, to, provider) are already documented with examples. The description adds only the framing that from/to are matched as a corridor pair, which is a modest gain over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (cross-border corridor registry) and enumerates what each record contains: served currency pairs per provider, published fees, and last-verified timestamps. It stops short of naming which sibling to use instead, even though the list contains obvious near-duplicates (swapeazi_coverage, coverage, get_corridor_rates, corridor_events), so the agent must still guess.

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?

'Public tier only. Free, no key.' implies the usage context — an unauthenticated/public lookup — and implicitly excludes private-tier corridor data. There is no explicit when-to-use versus swapeazi_coverage or get_corridor_rates, so the routing decision 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.

swapeazi_coverageCurrencies SwapEazi can measureAInspect

Every currency a payment can be measured in today, and the number of directional corridors between them. Call before swapeazi_landed_cost to know whether a pair is covered. Free, no key.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations present, the description has to carry behavioral disclosure. It does state useful traits, namely that the lookup is free, needs no key, and reflects coverage 'today,' implying a time-sensitive snapshot. It still does not say whether it is strictly read-only, how the corridor count is computed, or what the response looks like, beyond a loose content summary.

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

Conciseness5/5

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

Three short sentences front-load the content, then the workflow cue, then the cost/auth note. No filler, and each sentence adds distinct information.

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?

For a zero-parameter lookup with no output schema, the description covers content, freshness, access cost, and downstream usage well enough to call it correctly. A brief note on the result shape, such as whether the corridor count is aggregate or per-pair, would make it complete.

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?

The tool takes no parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description's claim about returning currency and corridor data is consistent with an empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and scope: every currency a payment can be measured in, plus the count of directional corridors between them. It is clear what data is returned, though it does not distinguish itself from similarly named siblings such as coverage, get_coverage, or swapeazi_corridor_registry.

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?

It gives an explicit precondition: call this before swapeazi_landed_cost to learn whether a currency pair is covered. That is genuine when-to-use guidance tied to a named sibling. It stops short of saying when not to use it or how it differs from the other coverage tools.

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

swapeazi_dex_costCost of an onchain FX swapBInspect

What a stablecoin swap on a DEX really cost, from its transaction hash: the sender's token out and token in, each priced as the currency it tracks (USDC, EURC, cUSD, KESm/cKES, cNGN, NGNm, ZARm, GHSm, XOFm, ZARP and others), measured against the independent reference for the day with a margin of error, and signed. Chains: ethereum, base, arbitrum, optimism, polygon, celo, robinhood. Free.

NameRequiredDescriptionDefault
txYesThe swap's transaction hash, 0x followed by 64 hex characters.
chainYesethereum, base, arbitrum, optimism, polygon, celo or robinhood.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden and does add real context: it discloses the valuation method (each token priced as the currency it tracks against an independent daily reference with a margin of error), the sign convention ('signed'), the chain coverage, and the cost model ('Free'). It does not disclose failure behavior for a non-swap or unknown hash, precision/rounding of the margin of error, or the shape of the response.

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 purpose and required input are front-loaded in the opening clause, which is the right structure. The sentence then sprawls through a long token enumeration ('USDC, EURC, cUSD, KESm/cKES, cNGN, NGNm, ZARm, GHSm, XOFm, ZARP and others') that duplicates chain/token coverage already implied by the schema, and the phrase 'with a margin of error, and signed' is terse to the point of ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description must stand in for both, and it only sketches the return conceptually (token out and token in, each valued against the reference, signed). For a read-only analytical tool with two fully documented parameters this is adequate, but an agent still cannot predict the response fields or error cases before calling.

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 both parameters are already documented, and the description's chain enumeration ('ethereum, base, arbitrum, optimism, polygon, celo, robinhood') largely repeats the schema's chain description. The only added meaning beyond the schema is that token values are priced against per-currency references, which is about output semantics rather than parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('a stablecoin swap on a DEX') and a specific verb ('what it really cost') plus the required key ('from its transaction hash'), so an agent knows exactly what is computed. It does not explicitly differentiate itself from siblings like swapeazi_landed_cost or swapeazi_corridor_registry, which likely also surface cost figures.

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?

Usage is implied by the input shape: if you hold a swap tx hash and want post-hoc cost attribution, this is the tool. There is no explicit when-to-use, when-not-to-use, or named alternative among the many cost/route sibling tools, leaving the agent to infer selection on its own.

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

swapeazi_forwardFair forward and hedge costAInspect

The estimated fair forward rate for a currency pair and tenor, by covered interest parity from an independent mid and central bank policy rates, with its margin of error, and what hedging costs or earns per year. Free. With a paid key and quotedRate, the forward a bank quoted is held to it: how much is margin.

NameRequiredDescriptionDefault
toYesISO 4217 code of the currency received, e.g. 'ZAR'.
fromYesISO 4217 code of the currency sold forward, e.g. 'USD'.
amountNoOptional notional in the from currency, to state the margin in money.
tenorDaysYesDays to settlement, 1 to 1095.
quotedRateNoOptional. The forward rate a bank quoted (units of to per from).

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does a reasonable job: it discloses the methodology (covered interest parity, independent mid, policy rates), that a margin of error accompanies the estimate, that a quoted rate is checked against the fair value to quantify bank margin, and that the free tier is limited. It does not cover error behavior for invalid pairs/tenors, rate limits, or freshness of the policy-rate inputs.

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 the core purpose and kept to three dense sentences with no filler. The style is telegraphic ('Free.' as a standalone fragment) which reads slightly choppy, but every clause conveys substantive information.

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?

There is no output schema, yet the description names the return values an agent needs: fair forward rate, margin of error, annualized hedging cost or earn, and the margin versus a quoted bank rate. Combined with 100% schema coverage on inputs, an agent has enough to call this correctly and interpret the result.

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 real meaning beyond the schema by explaining that supplying quotedRate switches the tool into a comparison mode that reports how much of the quoted forward is margin. It does not explain the role of the optional amount parameter (stating margin in money), leaving that gap to the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: the estimated fair forward rate for a currency pair and tenor, derived by covered interest parity from an independent mid plus central bank policy rates, and also reports margin of error and annualized hedge cost/earn. This is clearly distinguishable from spot/corridor rate siblings, but the description never names an alternative tool, so the differentiation is implicit rather than explicit.

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?

Usage context is implied through the tiering: it is free as-is, and the comparison-against-a-bank-quote mode is gated on having a paid key plus a quotedRate. That tells an agent how to unlock the margin-comparison path, but there is no explicit when-to-use/when-not statement and no named sibling (e.g. a corridor-rates or route-compare tool) for the spot-pricing case.

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

swapeazi_guardrail_checkPre-trade guardrail assessAInspect

Before money moves: every eligible route for a payment scored against your own limits (maximum LDI, maximum settlement time, regulated provider required), your quote measured if you pass one, beside what banks advertise, the official business-payment average and the G20 lines. Evidence against your policy, never a recommendation. Returns a signed decision record: keep it with the payment and pass it to swapeazi_guardrail_reconcile once it settles. Paid: configure this server with an Authorization Bearer key (https://swapeazi.io/pricing).

NameRequiredDescriptionDefault
quoteNoOptional. A quote you already hold, to be measured as given.
client_idNoOptional. Your own reference, echoed back.
source_amountYesAmount to send, in the origin currency.
origin_currencyYesISO 4217 code, e.g. 'GBP'.
allowed_providersNoOptional. Restrict routes to your own already-connected panel, by provider label or id. For embedding this assessment as a mandatory step inside your own already-licensed release pipeline — asking which of YOUR connected providers should carry this, not who exists in the market, the way an execution-management system asks which of its own connected brokers should fill an order. A provider outside the panel is ruled out before scoring, never silently dropped: it appears in ruled_out with reason not_in_callers_connected_panel. Omit for no restriction.
origin_jurisdictionNoOptional ISO 3166-1 alpha-2 country of the sender.
destination_currencyYesISO 4217 code, e.g. 'MZN'.
max_settlement_hoursNoOptional. Your delivery-time cap.
require_regulated_lpNoDefault true.
max_acceptable_ldi_bpsNoOptional. Your cost cap in basis points.
destination_jurisdictionNoOptional ISO 3166-1 alpha-2 country of the beneficiary.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it declares the tool advisory rather than an execution step, states the return artifact is a signed decision record with a retention instruction, and discloses that access is paid and requires an Authorization Bearer key. It does not state error behavior or whether the call has any side effects, and the panel-exclusion behavior (ruled_out / not_in_callers_connected_panel) is left to the schema.

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 structure is sensible: timing, what is scored and against what, the nature of the output, the downstream handoff, then the billing note. The first sentence is overpacked and its benchmark clause is vague, but every other sentence carries information the agent needs.

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?

For an 11-parameter tool with a nested object and no output schema, the description supplies the two things the schema cannot: what comes back (a signed decision record) and what to do with it afterward. The pricing/auth requirement is also covered. Only failure modes and the treatment of partial or ineligible routes are absent, and the latter is covered in the allowed_providers property.

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% and the nested quote object is documented in place, so the baseline is 3. The description restates the policy caps (maximum LDI, maximum settlement time, regulated provider) in prose but adds no format, default, or precedence information beyond what the property descriptions already say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: every eligible route is scored against the caller's own limits, and a signed decision record is returned. It implicitly separates itself from recommend_payment_route ('Evidence against your policy, never a recommendation') and explicitly names swapeazi_guardrail_reconcile as the downstream consumer, so the agent can place it without opening the schema. The opening clause 'beside what banks advertise, the official business-payment average and the G20 lines' is murky but does signal a benchmarking function.

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?

'Before money moves' fixes the timing of the call, and the instruction to pass the result to swapeazi_guardrail_reconcile once the payment settles fixes the sequence. There are no explicit exclusions or named alternative tools for the same assessment, which keeps it short of a 5.

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

swapeazi_guardrail_reconcileReconcile a settled paymentAInspect

After money moves: the signed decision record from swapeazi_guardrail_check plus what landed (figures, or the bank's MT103 or pacs.008 text) returns a signed reconciliation. Was the quote honoured, did the payment stay inside policy, how far the market moved between approval and value date, and which part of the cost the banks in the chain took. Only amounts, dates, rates and charges are read from a message, never the parties. Paid, included in the assessment it closes.

NameRequiredDescriptionDefault
messageNoOptional. The bank's MT103 text or pacs.008 XML for this payment.
settlementNoWhat landed, when no bank message is supplied.
attestationYesdecision.attestation from swapeazi_guardrail_check.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does add real value: it states the data-minimisation rule ('Only amounts, dates, rates and charges are read from a message, never the parties') and that the result is a signed artefact, implying cryptographic verification. It does not say whether the operation mutates state ('closes' an assessment suggests it does), what happens on a second call with the same attestation, or what failures look like when the attestation is invalid or expired.

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?

The opening clause is well front-loaded and the second sentence enumerates the outputs efficiently, so most of the text earns its place. The closing fragment 'Paid, included in the assessment it closes.' is compressed to the point of opacity and reads as internal shorthand an outside caller cannot parse. It is otherwise appropriately sized for a tool with this much behaviour to convey.

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?

No output schema and no annotations, so the description must cover returns, and it largely does by naming the four analytical results in the signed reconciliation, plus the privacy rule for message parsing. The gaps are the exact shape of the signed record, whether reconciliation is one-shot or repeatable, and what 'included in the assessment it closes' means operationally. Given a nested-object schema with full field descriptions, this is close to complete.

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 coverage is 100%, so all three parameters, including the nested settlement fields, already carry their own descriptions; the 3 baseline applies. The description adds some meaning the schema does not state explicitly, namely the either/or relationship between supplying raw bank message text and supplying landed figures, and the provenance of the attestation. It adds no detail on formats, validation or how source_amount interacts with landed_amount in the leakage calculation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb-plus-resource: it takes the signed decision record from swapeazi_guardrail_check together with what landed and returns a signed reconciliation, naming the four questions it answers (quote honoured, policy compliance, market drift, bank charges). That is far more specific than the title alone. It never names the near-identical siblings in the catalogue (reconcile_payment, reconcile_outcome, record_landed), so an agent cannot separate this from them on the description alone.

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?

'After money moves' pins the timing precisely to post-settlement, and naming swapeazi_guardrail_check as the source of the attestation establishes a prerequisite and a workflow chaining order. The settlement-versus-message alternatives are also signalled ('what landed (figures, or the bank's MT103 or pacs.008 text)'). What is missing is any exclusion: nothing tells the agent when to prefer this over reconcile_payment or record_landed.

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

swapeazi_landed_costLanded cost of a paymentAInspect

What a single cross-border payment costs, in basis points, against an independent mid-market reference: give the amount sent, the amount that landed (or a provider says will land) and the date. Returns the Landed Drag Index with its margin of error and the evidence tier. Free, no key.

NameRequiredDescriptionDefault
midSpotNoOptional. Your own mid, destination units per source unit. Omit to use SwapEazi's reference.
settledOnNoISO date the payment settled. Omit it (or pass a future date) for a quote not yet accepted: it is measured against today's reference.
inputAmountYesAmount sent, in the source currency.
netLandedFiatYesAmount that landed or will land, in the destination currency, after every deduction.
sourceCurrencyYesISO 4217 code the payment is funded in, e.g. 'GBP'.
destinationCurrencyYesISO 4217 code the payment lands in, e.g. 'EUR'.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are supplied, so the description must carry the behavioral load, and it partially does: it discloses the return payload (index, margin of error, evidence tier) and the access profile ('Free, no key'). It does not state that the call is a stateless, side-effect-free computation, nor does it describe failure modes such as an invalid mid or a currency mismatch.

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?

Two sentences, front-loaded with what is measured, followed by what to supply and what comes back. The only mild inefficiency is the parenthetical '(or a provider says will land)', which is useful but slightly detours from the core statement.

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?

For a six-parameter, annotation-free calculation tool with no output schema, the description covers the metric, the required evidence, and the shape of the response (index, error margin, evidence tier). What is missing is interpretive: how to read the evidence tier or what constitutes an acceptable index, which an agent would need in order to act on the result.

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 all six parameters including midSpot's 'omit to use SwapEazi's reference' and settledOn's quote semantics. The prose only restates the amount/landed/date triad and adds the framing of the reference rate; it contributes no format or edge-case detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific thing computed — the basis-point cost of a single cross-border payment versus an independent mid-market reference — and names its output (Landed Drag Index, margin of error, evidence tier). An agent can distinguish it from generic cost siblings like calculate_payment_cost or analyse_payment_leakage only by inference, since no sibling is named, but the resource and metric are precise.

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?

It gives input-oriented guidance ('give the amount sent, the amount that landed ... and the date') and implicitly covers the quote-vs-settled case through the settledOn parameter. However, it never states when to prefer this over the many adjacent cost/route tools in the sibling list, and offers no exclusions or preconditions beyond 'free, no key.'

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

swapeazi_route_compareBank or stablecoin: compare routesAInspect

The same payment sent two to four ways (a bank wire, a payment provider, a stablecoin route through an on-ramp and an off-ramp), each measured end to end against one independent reference: what left, what landed, each route's cost with a margin of error, and the exact gap between them. The rail does not change the method. Free within the daily allowance.

NameRequiredDescriptionDefault
toYesISO 4217 code of the currency that landed, e.g. 'KES'.
dateNoOptional payment date, YYYY-MM-DD. Defaults to today (a quote).
fromYesISO 4217 code of the currency that left, e.g. 'ZAR'.
sentNoOptional amount sent, shared by every route that does not state its own.
routesYesTwo to four routes. Each: label, landed (in the to currency), and optionally sent and fee (both in the from currency).
annualVolumeNoOptional yearly volume on this route in the from currency, to state the gap per year.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It adds useful facts such as margin of error, exact gap, and free use within the daily allowance, but it never explicitly says this is a read-only calculation or whether it can move money, nor does it describe auth or rate limits beyond the allowance.

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 description is compact and front-loads the comparison purpose. The sentence 'The rail does not change the method' is slightly opaque, but the rest of the wording earns its place.

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?

For a six-parameter comparison tool with no output schema, the description supplies the main return concepts: what left, what landed, per-route cost with margin of error, and the exact gap. It is mostly complete, though it could clarify response shape and whether the tool is purely analytical.

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 coverage is 100%, so the schema already documents from, to, date, sent, routes, and annualVolume. The description reinforces the two-to-four route limit and the output concepts, but adds little parameter-specific meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete comparison action and resource: the same payment sent two to four ways across a bank wire, a payment provider, and a stablecoin on/off-ramp route. It also states what is measured end to end, so the purpose is clear, though no sibling tool is named for differentiation.

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?

It implies the use case—compare two to four routes for the same payment—and mentions the daily allowance. However, it gives no explicit when-not guidance or named alternatives such as price_routes, compare_payment_providers, or calculate_payment_cost.

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

swapeazi_rwa_compareTokenised funds, landed in your currencyAInspect

Every tokenised Treasury and money fund SwapEazi covers (BUIDL, BENJI, OUSG, USTB, USYC, WTGXX, USDY, Spiko, CETES), landed in the investor's own currency and hedged back: after the fee, converting in and out at their size and the hedge carry, ranked, beside a local money fund, with a one-line verdict. Landed yields free; the working with a paid key.

NameRequiredDescriptionDefault
amountYesAmount to place, in the investor's currency.
horizonMonthsNoHolding period in months, default 12.
investorCurrencyYesISO 4217 code the investor holds and reports in, e.g. 'ZAR'.

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose what the computation includes: fee, in/out conversion at the investor's size, and hedge carry, plus ranking and a verdict. It also flags an access tier ('landed yields free; the working with a paid key'), which is genuine auth/capability context. It omits data freshness and rate limits, keeping it from a 5.

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?

One long, jargon-dense sentence with repeated 'landed' and an opaque phrase ('the working with a paid key'). The coverage list is front-loaded and useful, but the trailing pricing clause is cryptic and the sentence should be split into what-it-does and access-tier statements.

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?

No output schema and no annotations, yet the description explains the ranking basis, the cost components netted out, the comparison benchmark, and the free-versus-paid split, which is enough for an agent to decide and call it. Freshness, source of rates, and error behaviour are unstated, so it is not fully complete.

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 coverage is 100%, so the schema already documents amount, investorCurrency and horizonMonths, and baseline is 3. The description adds only a light hint that cost depends on trade size ('at their size') and on hedge carry, without explaining how horizonMonths affects the hedge or what happens at very large sizes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (tokenised Treasury and money-fund comparison), enumerates the covered funds (BUIDL, BENJI, OUSG, USTB, USYC, WTGXX, USDY, Spiko, CETES), and states the output shape (ranked list with a one-line verdict beside a local money fund). It does not name a sibling such as swapeazi_route_compare or swapeazi_landed_cost to draw the boundary, so it stops short of a 5.

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?

Usage is only implied: the investor is placing an amount in their own currency and wants a hedged, net-of-fee comparison against a local fund. There is no explicit when-to-use or when-not, and no routing away from the payment-oriented neighbours (swapeazi_route_compare, swapeazi_landed_cost, compare_payment_providers).

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

swapeazi_verify_recordVerify a SwapEazi recordAInspect

Verify that a decision or reconciliation record was issued by SwapEazi and has not been altered, and read what it says. Free and keyless, so an auditor, board or counterparty can verify a payer's records without an account.

NameRequiredDescriptionDefault
attestationYesThe attestation string from a decision or reconciliation.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does a fair amount of it: it discloses the zero-auth prerequisite ("free and keyless", "without an account") and exactly what the operation asserts (issued by SwapEazi, not altered). It stops short of stating what happens when verification fails or what shape the returned record takes, which matters since there is no output schema.

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

Conciseness5/5

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

Two sentences, zero padding, and the core operation is front-loaded before the audience/prerequisite remark. Every clause adds either the integrity claim or the access condition.

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?

For a one-parameter verification tool with no annotations and no output schema, the definition covers purpose, prerequisites, and audience adequately. The remaining gap is the return contract and failure behavior, which the description should sketch since no output schema compensates.

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 coverage is 100% and the single parameter is already documented as "The attestation string from a decision or reconciliation", which the description essentially echoes. No format, length, or provenance detail is added beyond the schema, so the baseline of 3 for fully covered parameters applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Verify that a decision or reconciliation record was issued by SwapEazi and has not been altered, and read what it says" gives a specific verb (verify) plus the resource and the two things checked (issuer authenticity, tamper detection). It is clear on its own, but it never distinguishes itself from the near-twin sibling verify_release_record, which an agent could easily confuse it with.

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?

Usage context is implied rather than stated: "an auditor, board or counterparty can verify a payer's records without an account" tells you who and why, and "free and keyless" signals it can be called before any setup. There is no explicit when-to-use versus verify_release_record or the reconcile_* siblings, and no when-not-to-use condition.

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

track_payment_settlementTrack a payment to settlementAInspect

Spec v1.0 name for payment_run_status: each payment's lifecycle state (CREATED, ANALYSED, QUOTED, ROUTE_SELECTED, AWAITING_APPROVAL, APPROVED, SUBMITTED, PROCESSING, SETTLED, FAILED, REJECTED, EXPIRED, CANCELLED, REQUIRES_REVIEW) with the reason. SETTLED only on the provider's own confirmation.

NameRequiredDescriptionDefault
run_idYesThe payment run (pr_...), or pr_sample.
access_keyNoThe router key that made the run.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose one genuinely useful behavioral rule — SETTLED appears only on the provider's own confirmation — and the state vocabulary implies a read-only status query. However, it says nothing about authentication needs (the access_key parameter's role), whether results are scoped to one run, or how stale the states may be.

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?

Two sentences, front-loaded with the identity/alias fact and followed by the substantive settlement-confirmation rule. The long parenthetical state list is dense but earns its place by defining the return vocabulary in the absence of an output schema.

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?

With no output schema, the description does the work of explaining return values: a lifecycle state per payment plus a reason, with the settlement precondition spelled out. For a two-parameter status lookup this is largely sufficient; only the run-level versus per-payment granularity and access_key behavior remain unstated.

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%, with run_id documented as the payment run (pr_...) or pr_sample and access_key as the router key that made the run, so the baseline is 3. The description adds no meaning beyond that — it never mentions run_id, access_key, or what happens if the key does not match the run.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as the spec v1.0 name for payment_run_status and states the resource precisely: each payment's lifecycle state with a reason. The enumerated state list (CREATED through REQUIRES_REVIEW) makes the output domain unambiguous. It stops short of a clean verb-first statement of what the call does, relying on the alias framing instead.

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?

Naming itself as the spec v1.0 alias of payment_run_status gives implicit disambiguation for an agent choosing between the two, but there is no explicit when-to-use or when-not-to-use instruction. Nothing says whether to prefer this tool over payment_run_status, or how it relates to confirm_payment or reconcile_payment when a payment is near settlement.

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

verify_release_recordVerify a release recordAInspect

Verify a SwapEazi Release Record v1, the evidence of a managed payment (or a chain of them), with no key: schema (https://swapeazi.io/schemas/release-record-v1.json), hash, chain link and Ed25519 signature against the published key. Returns valid or invalid with each test named and the first record that breaks. Nothing sent is stored. The same verification runs offline from the spec at https://swapeazi.io/standard.

NameRequiredDescriptionDefault
chainNoOptional. The records around it, in any order; links are verified in seq order.
recordNoOne release record, as returned by record_release, release_status or GET /api/v1/releases/{id}.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that no key is required on the caller side, that four distinct tests run, that results are reported per-test with the first failing record surfaced, and that 'nothing sent is stored'. The remaining gap is that it never states trust prerequisites (how the published key is obtained/pinned) or size limits when submitting a whole chain.

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 the core action and the checks performed, then result shape, then the no-storage guarantee. Mostly dense and purposeful, though the two embedded URLs make the final sentences heavier than they need to be for an agent already supplied with the schema link.

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?

For a tool with nested object payloads, zero annotations and no output schema, the description compensates well by describing the return semantics (valid/invalid, each test named, first breaking record) and the no-persistence guarantee. What is missing is guidance on chain completeness and on how the trusted key is established, which matters for a verification tool.

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 coverage is 100%, so the schema already documents both 'record' and 'chain' including their provenance and ordering behavior. The description adds no parameter-level meaning beyond that — it does not say what happens if 'chain' omits the links needed to validate 'record', or whether an empty chain is acceptable (both params are optional).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Verify a SwapEazi Release Record v1') and enumerates exactly what is checked (schema, hash, chain link, Ed25519 signature) against a published key. An agent knows precisely what the tool does. It does not, however, distinguish itself from the close sibling 'swapeazi_verify_record', leaving ambiguity about which of the two to call.

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?

Usage is implied by the subject matter: use it to check evidence of a managed payment or a chain of them, and the note that verification can be run offline from the published spec hints at the trust model. There is no explicit when-to-use/when-not statement and no routing to 'swapeazi_verify_record' or the other verification-adjacent siblings, so the agent must infer the choice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 66 tool updates
    • First observedanalyse_payment_leakage
    • First observedapproval_status
    • First observedapprove_payment_run
    • First observedassess_route
    • First observedcalculate_payment_cost
    • First observedcheck_constraints
    • First observedcheck_payment_against_mandate
    • First observedcheck_provider_liquidity
    • First observedcompare_payment_providers
    • First observedcompile_intent
    • First observedconfirm_payment
    • First observedconnect_rail_account
    • First observedcorridor_events
    • First observedcoverage
    • First observedcreate_mandate
    • First observeddecide_intent
    • First observeddiscover_payment
    • First observedevidence_passport
    • First observedget_corridor_rates
    • First observedget_coverage
    • First observedget_mandate
    • First observedget_rate_receipt
    • First observedintent_status
    • First observedjoin_network
    • First observedliquidity_map
    • First observedlist_rail_accounts
    • First observedmap_options
    • First observedonchain_liquidity
    • First observedparallel_signal
    • First observedpayment_controls
    • First observedpayment_intent
    • First observedpayment_run_status
    • First observedpayout_preflight
    • First observedpayout_rules
    • First observedprepare_payment
    • First observedprepare_payment_instruction
    • First observedprice_routes
    • First observedprivate_payment_status
    • First observedrail_handoff
    • First observedrail_position
    • First observedrate_deal_history
    • First observedrecommend_payment_route
    • First observedreconcile_outcome
    • First observedreconcile_payment
    • First observedrecord_landed
    • First observedrecord_release
    • First observedrelease_status
    • First observedremove_rail_account
    • First observedrequest_introduction
    • First observedrequest_payment_approval
    • First observedroute_intent
    • First observedrun_payments
    • First observedsubmit_payment
    • First observedswapeazi_beneficiary_check
    • First observedswapeazi_corridor_registry
    • First observedswapeazi_coverage
    • First observedswapeazi_dex_cost
    • First observedswapeazi_forward
    • First observedswapeazi_guardrail_check
    • First observedswapeazi_guardrail_reconcile
    • First observedswapeazi_landed_cost
    • First observedswapeazi_route_compare
    • First observedswapeazi_rwa_compare
    • First observedswapeazi_verify_record
    • First observedtrack_payment_settlement
    • First observedverify_release_record

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to compare rates across 100+ blockchains and 15+ liquidity providers, create non-custodial cross-chain swaps, and track transaction status without any API key. It exposes tools for listing currencies, quoting swaps with AI-ranked routing tags, generating deposit addresses, and monitoring exchanges to completion.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Banking infrastructure for AI agents: open accounts, issue cards, send SEPA/SWIFT payments, run mass payouts, and pay invoices via natural language.
    2
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI agents to perform financial transactions such as direct payments, escrows, and bounty management using natural language with zero code integration. It provides a comprehensive suite of tools for fund streaming, subscriptions, and reputation tracking to facilitate secure agent-to-agent commerce.
    29 npm
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to perform gasless cross-chain transactions by paying with supported tokens on one chain and executing on another, all without exposing private keys.
    19
    27 npm
    1
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources