Skip to content

SwapEazi

io.github.MsingathiM/swapeaziMsingathiMstreamable-httpv2.4.1Scanned

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

66 tools: 1 can delete or cancel things, 29 do something that can't be undone, 21 change things and 15 only read.

Tools: 1 delete, 29 irreversible, 21 write, 15 read.
  • Reads private data · 0
  • Reads text others write · 0
  • Can send data out · 17
  • 4 findings

Anlyon alternative

51 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

66 tools

Deletes or cancels 1Claude Code: deny
  • remove_rail_accountKeyed.1 finding

    Why it is in this group

    • The name "remove_rail_account" says "remove": a word for removing or ending something.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...a connected rail account and its stored credentials. Payments already sent stay readable in..."

      What this check looks for
    Description, as the server wrote it
    Keyed. Deletes a connected rail account and its stored credentials. Payments already sent stay readable in the business's own rail account.
Can't be undone 29Claude Code: ask
  • approve_payment_runRecords 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…No findings

    Why it is in this group

    • The name "approve_payment_run" says "approve": a word for a change.
    • The name "approve_payment_run" also says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • assess_routeBefore a business commits to a cross-border payment, assess the corridor on SwapEazi's independent data.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • calculate_payment_costWhat 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, …No findings

    Why it is in this group

    • The name "calculate_payment_cost" says "payment": a word that usually means money moves, which cannot be taken back.
    • The input carries an amount (input.amount) and a currency, so it moves money.
    Description, as the server wrote it
    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.
  • check_payment_against_mandateVerify one payment against a mandate before it is prepared.Can send data outNo findings

    Why it is in this group

    • The name "check_payment_against_mandate" says "payment": a word that usually means money moves, which cannot be taken back.
    • The input carries an amount (input.amount) and a currency, so it moves money.
    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • check_provider_liquiditySpec 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 …Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • compile_intentTurn 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…Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • confirm_paymentAfter your wallet has sent a payment prepared by prepare_payment, give its prepare_id and transaction hash.No findings

    Why it is in this group

    • The name "confirm_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • coverageHow 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 candida…Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • discover_paymentCall this before initiating any cross-border or cross-currency payment.No findings

    Why it is in this group

    • The name "discover_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • join_networkKeyed.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • liquidity_mapFor a currency pair (e.g.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • payment_controlsRead 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 f…No findings

    Why it is in this group

    • The name "payment_controls" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • payment_intentKeyed.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • payment_run_statusRead 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 lande…No findings

    Why it is in this group

    • The name "payment_run_status" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • payout_preflightPre-release check on a whole payout file before it goes to the company's own bank or PSP.No findings

    Why it is in this group

    • The name "payout_preflight" says "payout": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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).
  • payout_rulesWhich 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, depend…Can send data outNo findings

    Why it is in this group

    • The name "payout_rules" says "payout": a word that usually means money moves, which cannot be taken back.
    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • prepare_paymentPrepare 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..…Can send data outNo findings

    Why it is in this group

    • The name "prepare_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • prepare_payment_instructionSpec v1.0 name for run_payments: prepares each payment (payee validation, route assessment, instruction, approval digest) and returns each payment's lifecycle state.No findings

    Why it is in this group

    • The name "prepare_payment_instruction" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • rail_positionKeyed.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • rate_deal_historyKeyed.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • recommend_payment_routeHard 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,…No findings

    Why it is in this group

    • The name "recommend_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
    • The input carries an amount (input.amount) and a currency, so it moves money.
    Description, as the server wrote it
    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.
  • reconcile_paymentRecord 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 perc…No findings

    Why it is in this group

    • The name "reconcile_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • request_payment_approvalFor 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 r…No findings

    Why it is in this group

    • The name "request_payment_approval" says "request": a word for a change.
    • The name "request_payment_approval" also says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • route_intentRoute one cross-border payment, given as fields or as one sentence ("USD 25,000 to a supplier in Lagos by 30 November").Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • run_paymentsThe Payment Run.No findings

    Why it is in this group

    • The name "run_payments" says "run": a word for a change.
    • The name "run_payments" also says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • submit_paymentSends 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 …No findings

    Why it is in this group

    • The name "submit_payment" says "submit": a word for a change.
    • The name "submit_payment" also says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
  • swapeazi_corridor_registryDocumented status of cross-border corridors per provider: which pairs a provider says it serves, published fees, and when each record was last verified.Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • swapeazi_forwardThe 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 …Can send data outNo findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.

    What it can reach

    • outboundThe input takes a destination (input.to): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • track_payment_settlementSpec v1.0 name for payment_run_status: each payment's lifecycle state (CREATED, ANALYSED, QUOTED, ROUTE_SELECTED, AWAITING_APPROVAL, APPROVED, SUBMITTED, PROCESSING, SETTLED, FAILE…No findings

    Why it is in this group

    • The name "track_payment_settlement" says "payment": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    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.
Changes things 21Claude Code: ask
  • check_constraintsRe-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 x…2 findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...n (intent) mandate, a Verifiable Intent credential, or x402 payment requirements (accepts[..."

      What this check looks for
    • Info

      The input schema at properties.verifiable_intent.description mentions "credential".

      Matched text

      inputSchema.properties.verifiable_intent.description: "A Verifiable Intent credential: the serialised SD-JWT, or decoded mand..."

      What this check looks for
    Description, as the server wrote it
    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.
  • connect_rail_accountKeyed.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...ret and a required cap per payment. The credentials are proven with a read (no payment is s..."

      What this check looks for
    Description, as the server wrote it
    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.
  • corridor_eventsDated 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, lim…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • create_mandateCreate 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, th…No findings

    Why it is in this group

    • The name "create_mandate" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • decide_intentKeyed.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • map_optionsThe 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, econo…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • onchain_liquidityWhere 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, Arbitru…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • parallel_signalA dated series per currency of the gap between a public-advert median and the official rate.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • rail_handoffKeyed.Can send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • outboundThe input takes a destination (input.channel_id): what the tool writes goes there.
    Description, as the server wrote it
    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.
  • reconcile_outcomeAfter the money moved: post what was sent and what landed (or the all-in cost) against the map it was chosen from.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • record_landedClose 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,…No findings

    Why it is in this group

    • The description's first verb is "close": a word for a change.
    Description, as the server wrote it
    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.
  • record_releaseAt 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 re…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • request_introductionRetired on 19 Oct 2026: SwapEazi collects no contact details for introductions.No findings

    Why it is in this group

    • The name "request_introduction" says "request": a word for a change.
    Description, as the server wrote it
    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.
  • swapeazi_beneficiary_checkStructural 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 c…Can send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • outboundThe input takes a destination (input.mobileMoney.phone): what the tool writes goes there.
    Description, as the server wrote it
    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).
  • swapeazi_coverageEvery currency a payment can be measured in today, and the number of directional corridors between them.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • swapeazi_dex_costWhat 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, cNG…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • swapeazi_guardrail_checkBefore 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 yo…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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).
  • swapeazi_guardrail_reconcileAfter 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.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • swapeazi_landed_costWhat 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) …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • swapeazi_verify_recordVerify that a decision or reconciliation record was issued by SwapEazi and has not been altered, and read what it says.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • verify_release_recordVerify 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 l…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
Only reads 15Show 15 read-only tools
  • analyse_payment_leakageWhere 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 recommend…No findings

    Why it is in this group

    • The name "analyse_payment_leakage" says "analyse": a word for reading.
    Description, as the server wrote it
    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.
  • approval_statusRead 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 w…No findings

    Why it is in this group

    • The name "approval_status" says "status": a word for reading.
    Description, as the server wrote it
    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.
  • compare_payment_providersYour 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 a…No findings

    Why it is in this group

    • The name "compare_payment_providers" says "compare": a word for reading.
    Description, as the server wrote it
    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.
  • evidence_passportRead 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 depend…No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    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.
  • get_corridor_ratesSpec 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 requi…No findings

    Why it is in this group

    • The name "get_corridor_rates" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_coverageList 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.No findings

    Why it is in this group

    • The name "get_coverage" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_mandateRead a mandate by id (man_...) for the organisation of the router key.No findings

    Why it is in this group

    • The name "get_mandate" says "get": a word for reading.
    Description, as the server wrote it
    Read a mandate by id (man_...) for the organisation of the router key. A router key is required.
  • get_rate_receiptReturn a stored Rate Receipt by id (rr_...).No findings

    Why it is in this group

    • The name "get_rate_receipt" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • intent_statusA 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…No findings

    Why it is in this group

    • The name "intent_status" says "status": a word for reading.
    Description, as the server wrote it
    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.
  • list_rail_accountsKeyed.No findings

    Why it is in this group

    • The name "list_rail_accounts" says "list": a word for reading.
    Description, as the server wrote it
    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.
  • price_routesRead public prices for a corridor at a payment size: on-chain pools, public order books and public adverts, with no partner key.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    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.
  • private_payment_statusFor a payment prepared with private: true, give the deposit_address from its quote_proof.No findings

    Why it is in this group

    • The name "private_payment_status" says "status": a word for reading.
    Description, as the server wrote it
    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.
  • release_statusRead 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).No findings

    Why it is in this group

    • The name "release_status" says "status": a word for reading.
    Description, as the server wrote it
    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.
  • swapeazi_route_compareThe 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 re…No findings

    Why it is in this group

    • The name "swapeazi_route_compare" says "compare": a word for reading.
    Description, as the server wrote it
    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.
  • swapeazi_rwa_compareEvery 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 th…No findings

    Why it is in this group

    • The name "swapeazi_rwa_compare" says "compare": a word for reading.
    Description, as the server wrote it
    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.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write0
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out17
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

4 info

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 2.4.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http swapeazi https://swapeazi.io/api/mcp
claude mcp add --transport http swapeazi https://swapeazi.io/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__swapeazi__swapeazi_route_compare",
      "mcp__swapeazi__swapeazi_rwa_compare",
      "mcp__swapeazi__intent_status",
      "mcp__swapeazi__release_status",
      "mcp__swapeazi__private_payment_status",
      "mcp__swapeazi__evidence_passport",
      "mcp__swapeazi__approval_status",
      "mcp__swapeazi__price_routes",
      "mcp__swapeazi__get_rate_receipt",
      "mcp__swapeazi__get_coverage",
      "mcp__swapeazi__get_mandate",
      "mcp__swapeazi__list_rail_accounts",
      "mcp__swapeazi__get_corridor_rates",
      "mcp__swapeazi__compare_payment_providers",
      "mcp__swapeazi__analyse_payment_leakage"
    ],
    "ask": [
      "mcp__swapeazi__swapeazi_landed_cost",
      "mcp__swapeazi__swapeazi_coverage",
      "mcp__swapeazi__swapeazi_corridor_registry",
      "mcp__swapeazi__swapeazi_guardrail_check",
      "mcp__swapeazi__swapeazi_guardrail_reconcile",
      "mcp__swapeazi__swapeazi_verify_record",
      "mcp__swapeazi__verify_release_record",
      "mcp__swapeazi__swapeazi_beneficiary_check",
      "mcp__swapeazi__payout_preflight",
      "mcp__swapeazi__swapeazi_dex_cost",
      "mcp__swapeazi__swapeazi_forward",
      "mcp__swapeazi__compile_intent",
      "mcp__swapeazi__map_options",
      "mcp__swapeazi__check_constraints",
      "mcp__swapeazi__reconcile_outcome",
      "mcp__swapeazi__coverage",
      "mcp__swapeazi__payout_rules",
      "mcp__swapeazi__route_intent",
      "mcp__swapeazi__record_landed",
      "mcp__swapeazi__record_release",
      "mcp__swapeazi__prepare_payment",
      "mcp__swapeazi__confirm_payment",
      "mcp__swapeazi__payment_controls",
      "mcp__swapeazi__discover_payment",
      "mcp__swapeazi__request_introduction",
      "mcp__swapeazi__corridor_events",
      "mcp__swapeazi__assess_route",
      "mcp__swapeazi__run_payments",
      "mcp__swapeazi__payment_run_status",
      "mcp__swapeazi__approve_payment_run",
      "mcp__swapeazi__reconcile_payment",
      "mcp__swapeazi__create_mandate",
      "mcp__swapeazi__check_payment_against_mandate",
      "mcp__swapeazi__payment_intent",
      "mcp__swapeazi__decide_intent",
      "mcp__swapeazi__rail_handoff",
      "mcp__swapeazi__connect_rail_account",
      "mcp__swapeazi__join_network",
      "mcp__swapeazi__rail_position",
      "mcp__swapeazi__rate_deal_history",
      "mcp__swapeazi__liquidity_map",
      "mcp__swapeazi__onchain_liquidity",
      "mcp__swapeazi__parallel_signal",
      "mcp__swapeazi__calculate_payment_cost",
      "mcp__swapeazi__recommend_payment_route",
      "mcp__swapeazi__check_provider_liquidity",
      "mcp__swapeazi__prepare_payment_instruction",
      "mcp__swapeazi__request_payment_approval",
      "mcp__swapeazi__submit_payment",
      "mcp__swapeazi__track_payment_settlement"
    ],
    "deny": [
      "mcp__swapeazi__remove_rail_account"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as swapeazi. Review it before you use it.

Capability tags behind 17 rules
  • mcp__swapeazi__swapeazi_corridor_registry outbound
  • mcp__swapeazi__swapeazi_beneficiary_check outbound
  • mcp__swapeazi__swapeazi_forward outbound
  • mcp__swapeazi__compile_intent outbound
  • mcp__swapeazi__coverage outbound
  • mcp__swapeazi__payout_rules outbound
  • mcp__swapeazi__route_intent outbound
  • mcp__swapeazi__prepare_payment outbound
  • mcp__swapeazi__assess_route outbound
  • mcp__swapeazi__check_payment_against_mandate outbound
  • mcp__swapeazi__payment_intent outbound
  • mcp__swapeazi__rail_handoff outbound
  • mcp__swapeazi__join_network outbound
  • mcp__swapeazi__rail_position outbound
  • mcp__swapeazi__rate_deal_history outbound
  • mcp__swapeazi__liquidity_map outbound
  • mcp__swapeazi__check_provider_liquidity outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.MsingathiM/swapeazi/verify?hash=ce76ccf6921162250cbe239c9b92b1c8e3f30cf784245daa2c2e2f7fdd9671ab" | jq -e '.changed == false'

Pinned hash ce76ccf69211, from Nov 5, 2026, 05:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.MsingathiM/swapeazi/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.MsingathiM/swapeazi
[![anlyon.dev](https://anlyon.dev/badge/io.github.MsingathiM/swapeazi.svg)](https://anlyon.dev/servers/io.github.MsingathiM/swapeazi)

Source: MCP Registry · repository. Synced Nov 5, 2026, 05:17 UTC.