UETR tracking and SWIFT payment tracking for AI apps. Read transfer status and manage monitoring.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add a transfer to the account by its UETR, with the amount, currency and date it was sent. The account's plan decides how it is monitored, as for an add on the website. Adding a UETR the account already holds returns that transfer and uses no more of the plan; an archived one is returned archived. Returns the transfer and the outcome.
The transfer's UETR.
The amount sent and its currency. The currency is a three-letter code in any letter case, one of USD, EUR, GBP, JPY, CHF, CAD, AUD, AED, BDT, BRL, CNY, HKD, IDR, ILS, INR, JOD, MAD, MXN, MYR, NZD, PHP, PKR, PLN, QAR, SAR, SGD, SZL, THB, TRY, TWD, TZS, XAF, XOF, ZAR. The value can have at most 2 decimal places, or none for JPY, XAF and XOF.
The date the payment was sent. It can be no earlier than 2000-01-01 and no later than the next calendar day in UTC.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http uetr-ai https://uetr.ai/mcp
Add a transfer to the account by its UETR, with the amount, currency and date it was sent. The account's plan decides how it is monitored, as for an add on the website. Adding a UETR the account already holds returns that transfer and uses no more of the plan; an archived one is returned archived. Returns the transfer and the outcome.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
| amount* | object | The amount sent and its currency. The currency is a three-letter code in any letter case, one of USD, EUR, GBP, JPY, CHF, CAD, AUD, AED, BDT, BRL, CNY, HKD, IDR, ILS, INR, JOD, MAD, MXN, MYR, NZD, PHP, PKR, PLN, QAR, SAR, SGD, SZL, THB, TRY, TWD, TZS, XAF, XOF, ZAR. The value can have at most 2 decimal places, or none for JPY, XAF and XOF. |
| payment_date* | string | The date the payment was sent. It can be no earlier than 2000-01-01 and no later than the next calendar day in UTC. |
{
"type": "object",
"required": [
"uetr",
"amount",
"payment_date"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
},
"amount": {
"type": "object",
"required": [
"value",
"currency"
],
"properties": {
"value": {
"type": "number",
"description": "The amount in the supplied currency's major units, not minor units. For example, 129600 USD means USD 129,600.00.",
"exclusiveMinimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"description": "The amount sent and its currency. The currency is a three-letter code in any letter case, one of USD, EUR, GBP, JPY, CHF, CAD, AUD, AED, BDT, BRL, CNY, HKD, IDR, ILS, INR, JOD, MAD, MXN, MYR, NZD, PHP, PKR, PLN, QAR, SAR, SGD, SZL, THB, TRY, TWD, TZS, XAF, XOF, ZAR. The value can have at most 2 decimal places, or none for JPY, XAF and XOF.",
"additionalProperties": false
},
"payment_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The date the payment was sent. It can be no earlier than 2000-01-01 and no later than the next calendar day in UTC."
}
},
"additionalProperties": false
}Archive a transfer: its checks stop, and it and its timeline stay in the account. Archived transfers use no active transfer place. Restoring needs an active subscription and a free active transfer place, so on a free or lapsed account archiving ends the transfer's checks: it cannot be restored unless the account subscribes. Archiving an archived transfer changes nothing. Returns the transfer.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Send a webhook endpoint's events to a new HTTPS address, for example after the receiver moved. The endpoint keeps its id, events and signing secret, and returns to pending: until the account owner confirms the new address on the website it receives only test events, and the owner is normally notified by email. Deliveries still waiting for the old address are dropped, and a request still waiting on the old address is closed as withdrawn. If the owner declines, or nobody confirms within 7 days, the endpoint is removed. Sending the address an endpoint is already waiting on answers with its waiting request again. A change counts toward the hourly limit on adding endpoints. Only the account owner's API keys and connected apps can change webhooks.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
| url* | string | The full HTTPS address. It must use a domain name and the standard port. |
{
"type": "object",
"required": [
"id",
"url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "The full HTTPS address. It must use a domain name and the standard port."
}
},
"additionalProperties": false
}Ask to send the account's transfer events to an HTTPS address: your own receiver, or a Slack or Microsoft Teams incoming webhook, which gets a readable message. The endpoint starts pending: it receives only test events, on a sample transfer, until the account owner confirms it on the website, and the owner is normally notified by email. The signing secret is returned once, here; deliveries carry Standard Webhooks headers signed with it. Only the account owner's API keys and connected apps can add endpoints.
| Argument | Type | Description |
|---|---|---|
| url* | string | The full HTTPS address. It must use a domain name and the standard port. |
| events | array | The events to send. Defaults to all of them. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "The full HTTPS address. It must use a domain name and the standard port."
},
"events": {
"type": "array",
"items": {
"enum": [
"status_changed",
"final_state",
"checks_ended"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"description": "The events to send. Defaults to all of them."
}
},
"additionalProperties": false
}Decline an invitation addressed to the user behind this key or connection, using the token from their invitation link. Releases that pending seat without joining the team. It cannot decline another person's invitation or remove an active membership. Available on every plan.
| Argument | Type | Description |
|---|---|---|
| token* | string | The token from the recipient's invitation link. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"maxLength": 128,
"minLength": 24,
"description": "The token from the recipient's invitation link."
}
},
"additionalProperties": false
}Permanently delete a transfer from the account, archived or not, with its timeline. It cannot be undone; archiving keeps the transfer instead. Adding the UETR again later starts a new transfer.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Delete a webhook endpoint. Nothing more is sent to it, its delivery log is removed, and a confirmation still waiting for the account owner is closed as withdrawn. This cannot be undone. Only the account owner's API keys and connected apps can delete webhooks.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
}
},
"additionalProperties": false
}Export every transfer in the account, archived ones included, with the bank reports its records hold: the same records the account's export download contains, named the API's way. A page holds up to 50 UETRs in UETR order, each exported once as one transfer however many times the account added it; pass next_cursor as cursor for the next page. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| cursor | string | The next_cursor of the previous page: the last UETR on that page. The page holds the UETRs after it, in UETR order. |
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The next_cursor of the previous page: the last UETR on that page. The page holds the UETRs after it, in UETR order."
}
},
"additionalProperties": false
}Get the account this API key or connected app acts on: its id, this user's role, the plan, and any scheduled deletion date. Check it to notice when that account changes or is ending. Reading changes nothing.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Get the address of the account's billing page on the website, where the account owner, signed in, manages the plan, payment details and invoices. Only the account owner can open it, so a teammate's key is refused. Reading changes nothing.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Read a payment record from its link: the bank reports on a paid transfer, shared by its owner with whoever holds the link. Any key can read a record it has the link to, from any account. A link the owner replaced, or one that never existed, is not found. Reading changes nothing and is not counted as a visit to the record.
| Argument | Type | Description |
|---|---|---|
| record_token* | string | The token at the end of a payment record link (/p/...), or the whole link. |
{
"type": "object",
"required": [
"record_token"
],
"properties": {
"record_token": {
"type": "string",
"maxLength": 64,
"minLength": 8,
"description": "The token at the end of a payment record link (/p/...), or the whole link."
}
},
"additionalProperties": false
}Get the account's plan and how many of its active transfers are in use. Free accounts have no active-transfer cap; lookup and request rate limits still apply. On a paid plan, a finished transfer keeps its place until it archives itself a week after its last check, and can be archived sooner to free the place. Archived transfers stay in the account and never count. On a custom package, also how many transfers were added in the current billing period against the package's volume, and when it resets. Reading changes nothing.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Get the link to a transfer's public status page, the page the website shares. Anyone with the link can open the page and, while the transfer is still being checked, sign up for its email alerts. The link stays the same for the life of the transfer, so share it only with people who should follow it. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Get one transfer in this account by its UETR, with every bank report in the full view, or the free tracker's view for a free transfer. When a bank last reported: in the free view, free.last_report_at is the newest bank report time, a time a bank gave (null when no report gives one), while free.last_update_at is only when the newest report was first received; in the full view, each event's reported_at is the bank's own time. free.amount_bank_number and free.value_date_bank_number name which numbered bank (as in free.reports) reported the amount and the value date: they are bank numbers, not counts, and free.reporting_banks is the count. The number of people who follow the transfer's updates comes from get_watcher_count. The demo transfer 00000000-0000-4000-8000-000000000000 works for every key. Each hour (UTC) it is searching, with no bank reports, for its first 10 minutes, then gains a bank report every 10 minutes until it is credited at 50 minutes past the hour. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Count how many people follow a transfer's updates by email: those who receive its email alerts through its share link or payment record link, from sign-ups they confirmed and have not stopped, each address once. An archived transfer sends no alerts, so it counts none. It never returns their addresses, and alert sign-ups are made and stopped only by each person. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Read one webhook endpoint: its masked address, status and events. The signing secret is never returned. Only the account owner's API keys and connected apps can read webhooks. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
}
},
"additionalProperties": false
}Ask to invite someone to the team. The account owner must confirm the invitation on the website before anything happens: until then no invitation is sent and no seat is used. The owner sees the request on the website and is normally notified by email. Asking again for the same address returns the open request. Only the account owner's API keys and connected apps can ask, while the plan includes team seats.
| Argument | Type | Description |
|---|---|---|
| email* | string | The address to invite. |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 255,
"description": "The address to invite."
}
},
"additionalProperties": false
}List the team invitations, payment record shares and webhook endpoints that API keys and connected apps asked for on this account, newest first, with whether the account owner confirmed, declined or has not answered yet, and whether a request expired or the API key or connected app that asked withdrew it. A confirmed record share carries the record link while it still works. Only the account owner's API keys and connected apps can list them. Reading changes nothing.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List the people who share this account: the owner, each teammate and each pending invitation, with the seats the plan includes. Only the account owner's API keys and connected apps can list the team, while the plan includes team seats. Reading changes nothing.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List the transfers in this account with their current status, newest first (the dashboard's default order), one page at a time. Paid transfers come in the full view and the rest in the free view, as the dashboard shows them. Archived transfers are left out unless asked for. Pass next_cursor as cursor until it is null. The list holds no bank report times: last_checked_at is when the transfer was last checked, not when a bank last reported; get_transfer gives the newest bank report time. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Transfers per page, 1 to 100. Default 50. |
| cursor | string | The next_cursor of the previous page. |
| archived | string | exclude (default): active transfers. include: all. only: archived transfers. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Transfers per page, 1 to 100. Default 50."
},
"cursor": {
"type": "string",
"maxLength": 200,
"description": "The next_cursor of the previous page."
},
"archived": {
"enum": [
"exclude",
"include",
"only"
],
"type": "string",
"default": "exclude",
"description": "exclude (default): active transfers. include: all. only: archived transfers."
}
},
"additionalProperties": false
}List the most recent deliveries to a webhook endpoint, newest first, with each attempt count and the receiver's last HTTP status code. Deliveries are kept for 30 days and payloads are never returned. Only the account owner's API keys and connected apps can read webhooks. Reading changes nothing.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
}
},
"additionalProperties": false
}List the account's webhook endpoints with their status and events, oldest first. Addresses show only their host and a masked path, and signing secrets are never returned. Only the account owner's API keys and connected apps can read webhooks. Reading changes nothing.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Check the banks' trackers for this transfer now, then return it with any new reports. Available for transfers in the full view while monitoring runs and checks have not ended. A transfer can be re-checked once a minute and 20 times a day, and an account 20 times a minute and 500 times a day, counted together for the website and the API. Only the account owner's API keys and connected apps can re-check.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Remove a teammate from the account, or cancel a pending invitation, and free the seat. A removed teammate loses access to the account at once, and the API keys and connected apps they set up for it stop working. Transfers they added stay in the account. Only the account owner's API keys and connected apps can remove, while the plan includes team seats.
| Argument | Type | Description |
|---|---|---|
| member_id* | string | The teammate's seat id, from list_team_members. |
{
"type": "object",
"required": [
"member_id"
],
"properties": {
"member_id": {
"type": "string",
"format": "uuid",
"description": "The teammate's seat id, from list_team_members."
}
},
"additionalProperties": false
}Set or clear a transfer's label, at most 64 characters; an empty label clears it, as does one of only spaces or invisible characters. A label cannot contain tabs, line breaks or other control characters, or characters that override the direction of the text (U+202A to U+202E, U+2066 to U+2069). The direction marks U+200E, U+200F and U+061C are accepted, as right-to-left text uses them. A label can be set once the transfer has been found. Only the account owner's API keys and connected apps can rename a transfer. Returns the transfer.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
| label* | any | The new label, or null to clear it. |
{
"type": "object",
"required": [
"uetr",
"label"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"description": "The new label, or null to clear it."
}
},
"additionalProperties": false
}Send a pending team invitation again when its delivery was not confirmed. An invitation already queued for delivery is refused, and invitations to one address are limited each hour. No seat changes. Only the account owner's API keys and connected apps can resend, while the plan includes team seats.
| Argument | Type | Description |
|---|---|---|
| member_id* | string | The teammate's seat id, from list_team_members. |
{
"type": "object",
"required": [
"member_id"
],
"properties": {
"member_id": {
"type": "string",
"format": "uuid",
"description": "The teammate's seat id, from list_team_members."
}
},
"additionalProperties": false
}Restore an archived transfer so its monitoring resumes. Restoring needs an active subscription and a free active transfer place. A restored transfer is monitored until the plan's current period ends: the end of the subscription's billing period, the end date of a courtesy grant, or 30 days from the restore for a courtesy grant with no end date. Its checks run every 5 minutes, which set_check_frequency can change. Restoring an active transfer changes nothing. Returns the transfer.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
}
},
"additionalProperties": false
}Replace a webhook endpoint's signing secret, for example after it was exposed. The new secret is returned once, here. For the next 24 hours every delivery carries two signatures, one with the new secret and one with the previous secret, so the receiver keeps accepting requests while it is updated; after that only the new secret signs. Rotating again within those 24 hours ends the oldest secret at once: only the secret in use at that moment keeps signing beside the new one. The address, events and status do not change. Only the account owner's API keys and connected apps can rotate a secret.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
}
},
"additionalProperties": false
}Queue one test event to a webhook endpoint, about a sample transfer and never one of the account's own. It is sent within about a minute; read the endpoint's deliveries to see the receiver's answer. Pending endpoints can receive test events. Only the account owner's API keys and connected apps can send tests.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
}
},
"additionalProperties": false
}Set how often this transfer's own checks run, in minutes: one of 5, 15, 30, 60, 180, 360, 720, 1440. Only a paid transfer whose monitoring runs and whose checks have not ended has a frequency to set; a free, finished or lapsed transfer keeps its schedule. Only the account owner's API keys and connected apps can change it. Returns the transfer.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
| minutes* | integer | Minutes between checks: one of 5, 15, 30, 60, 180, 360, 720, 1440. |
{
"type": "object",
"required": [
"uetr",
"minutes"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
},
"minutes": {
"enum": [
5,
15,
30,
60,
180,
360,
720,
1440
],
"type": "integer",
"description": "Minutes between checks: one of 5, 15, 30, 60, 180, 360, 720, 1440."
}
},
"additionalProperties": false
}Ask for the payment record link of a paid transfer, to share its bank reports. The account owner must confirm the request on the website before the link is shared: until then the caller does not receive it. The owner sees the request on the website and is normally notified by email. Once confirmed, list_pending_access returns the link. Asking again for the same transfer with the same settings returns the open request; with different settings, the new request replaces it. Only the account owner's API keys and connected apps can ask.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
| show_fees | boolean | Show bank fees on the record. Leave out to keep the current setting. |
| show_commentary | boolean | Show uetr.ai's plain-language explanations on the record. Leave out to keep the current setting. |
{
"type": "object",
"required": [
"uetr"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
},
"show_fees": {
"type": "boolean",
"description": "Show bank fees on the record. Leave out to keep the current setting."
},
"show_commentary": {
"type": "boolean",
"description": "Show uetr.ai's plain-language explanations on the record. Leave out to keep the current setting."
}
},
"additionalProperties": false
}Corrects the amount, currency or payment date entered for a transfer. Bank-reported figures never change. After a bank has reported, the owner can make up to 3 corrections. The owner's corrections on the website count toward the same limit. Give all three details as they should stand; a correction replaces them together, as the website's form does. After a bank has reported, sending the details every copy of this transfer in the account already holds changes nothing and uses no correction; if an older copy holds other details, the save aligns it and counts as one correction. Before a report, every save checks the transfer again. The UETR cannot be changed: it identifies the payment. A correction is refused once the transfer is archived, or when its checks ended before any bank reported on it. Only the account owner's API keys and connected apps can correct details. Returns the transfer, the outcome and the corrections left.
| Argument | Type | Description |
|---|---|---|
| uetr* | string | The transfer's UETR. |
| amount* | object | The amount sent and its currency. The currency is a three-letter code in any letter case, one of USD, EUR, GBP, JPY, CHF, CAD, AUD, AED, BDT, BRL, CNY, HKD, IDR, ILS, INR, JOD, MAD, MXN, MYR, NZD, PHP, PKR, PLN, QAR, SAR, SGD, SZL, THB, TRY, TWD, TZS, XAF, XOF, ZAR. The value can have at most 2 decimal places, or none for JPY, XAF and XOF. |
| payment_date* | string | The date the payment was sent. A changed date can be no earlier than 2000-01-01 and no later than the next calendar day in UTC. |
{
"type": "object",
"required": [
"uetr",
"amount",
"payment_date"
],
"properties": {
"uetr": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "The transfer's UETR."
},
"amount": {
"type": "object",
"required": [
"value",
"currency"
],
"properties": {
"value": {
"type": "number",
"description": "The amount in the supplied currency's major units, not minor units. For example, 129600 USD means USD 129,600.00.",
"exclusiveMinimum": 0
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
}
},
"description": "The amount sent and its currency. The currency is a three-letter code in any letter case, one of USD, EUR, GBP, JPY, CHF, CAD, AUD, AED, BDT, BRL, CNY, HKD, IDR, ILS, INR, JOD, MAD, MXN, MYR, NZD, PHP, PKR, PLN, QAR, SAR, SGD, SZL, THB, TRY, TWD, TZS, XAF, XOF, ZAR. The value can have at most 2 decimal places, or none for JPY, XAF and XOF.",
"additionalProperties": false
},
"payment_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The date the payment was sent. A changed date can be no earlier than 2000-01-01 and no later than the next calendar day in UTC."
}
},
"additionalProperties": false
}Choose which events a webhook endpoint receives. The address is changed with change_webhook_endpoint_url instead, and the account owner confirms the new one. Only the account owner's API keys and connected apps can change webhooks.
| Argument | Type | Description |
|---|---|---|
| id* | string | The webhook endpoint's id. |
| events* | array | status_changed: a transfer's status changed. final_state: a transfer reached a final state, such as credited or returned. checks_ended: automatic checks on a transfer ended before a final state, including when it was archived. A delivered event's type is the name with transfer. in front, for example transfer.status_changed. |
{
"type": "object",
"required": [
"id",
"events"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "The webhook endpoint's id."
},
"events": {
"type": "array",
"items": {
"enum": [
"status_changed",
"final_state",
"checks_ended"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"description": "status_changed: a transfer's status changed. final_state: a transfer reached a final state, such as credited or returned. checks_ended: automatic checks on a transfer ended before a final state, including when it was archived. A delivered event's type is the name with transfer. in front, for example transfer.status_changed."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.