Disclaimer: The MCP functionality described on this page is currently
available only in Sokin's UAT environment and is not yet available to all
customers across all live regions. This is a temporary limitation, and Sokin
plans to make these capabilities available to all customers across its live
regions in the near future. Please contact Sokin for further information
regarding availability and access.
| Tool | What it is for |
|---|---|
list_corporates | Which companies your login can act for |
list_accounts | A company's currency accounts and balances |
get_account | One account in full, including pay-in details |
get_account_ledger | Transaction history for an account |
list_beneficiaries | Who a company can pay |
get_beneficiary | One payee in full, with account details and verification |
get_beneficiary_schema | What details a new payee needs |
list_financial_institutions | Banks available when setting up a payee |
list_financial_institution_branches | A bank's branches and routing numbers |
list_instructions | Payments and conversions, listed |
get_instruction | One payment or conversion in full |
get_instruction_request | How a submitted payment actually turned out |
validate_payment_instruction | Check a payment without sending it |
create_payment_instruction | Prepare a payment for review. Sends nothing |
submit_payment_instruction | Sends a real payment |
create_fx_payment_instruction | Prepare a pay-in-another-currency payment. Sends nothing |
submit_fx_payment_instruction | Sends a real payment, converting as it goes |
get_fx_quote | Ask what an exchange rate is |
create_fx_quote | Create a real, short-lived rate. Moves no money |
settle_fx_quote | Converts real money between your own accounts |
visualize | Draw a diagram or chart in the chat |
get_documentation_links | Where Sokin's documentation lives |
play_cheetah_dash | An arcade game, in the chat |
| If you want to | The tools behind it |
|---|---|
| See which companies you can act for | list_corporates |
| See balances across accounts | list_accounts, get_account |
| See transaction history | get_account_ledger |
| Look up who you can pay | list_beneficiaries |
| Look up a bank or branch | list_financial_institutions, list_financial_institution_branches |
| Check on payments already made | list_instructions, get_instruction, get_instruction_request |
| Check a payment before sending it | validate_payment_instruction |
| Send a payment | create_payment_instruction, then submit_payment_instruction |
| Get an exchange rate | get_fx_quote |
| Convert between your own accounts | create_fx_quote, then settle_fx_quote |
| Draw a chart or diagram of a result | visualize |
| Find Sokin's documentation | get_documentation_links |
get_account_ledger,list_instructions, list_beneficiaries andlist_financial_institution_branches. When there is more, the result says so| Client with cards | Client without | |
|---|---|---|
| All the read-only tools | Work | Work |
get_fx_quote | Interactive quote card | A real rate, plus a link to the Sokin portal to trade |
create_fx_quote, settle_fx_quote | Driven by the card's buttons | Not available |
| Paying a beneficiary | Review card with Approve | Works — the figures and key come back as text, and you confirm in the chat |
visualize, play_cheetah_dash | Render | Return their content as text |
get_fx_quote asvalidate_payment_instruction, which is asettle_fx_quote checks the session's declared card support before anythingcreate_fx_quote does the same. Send those users to theprepare → confirm → submit flow is the supported path on those clients, notcreate_fx_quote and settle_fx_quote are absent| Tool | What it does |
|---|---|
create_fx_quote | Creates a real, short-lived exchange rate. Moves no money |
settle_fx_quote | Converts real money between two of your own accounts |
submit_payment_instruction | Sends a real payment to a beneficiary |
submit_fx_payment_instruction | Sends a real payment, converting as it goes |
| You want to | Pair |
|---|---|
| Pay someone in a currency you hold | create_payment_instruction → submit_payment_instruction |
| Pay someone in a currency you do not hold | create_fx_payment_instruction → submit_fx_payment_instruction |
| Convert between two of your own accounts | get_fx_quote card → create_fx_quote → settle_fx_quote |
get_instruction_request tells you howlist_corporates{"name": "list_corporates", "arguments": {}}2 corporates: CORP-8842 — Northwind Trading Ltd (direct assignment); CORP-9110 — Northwind Logistics BV (inherited access).{
"data": {
"items": [
{"corporateReference": "CORP-8842", "corporateName": "Northwind Trading Ltd", "assignmentType": "direct"},
{"corporateReference": "CORP-9110", "corporateName": "Northwind Logistics BV", "assignmentType": "inherited"}
]
}
}assignmentType is direct if you were given access to that company, orinherited if it comes via a parent.list_accounts| Takes | Required | What it is |
|---|---|---|
corporate_reference | yes | From list_corporates |
{"name": "list_accounts", "arguments": {"corporate_reference": "CORP-8842"}}2 accounts for CORP-8842: CCA-1001 (GBP) — balance 48200.00, of which 47150.00 available; CCA-1002 (USD) — balance 12000.00, available balance not computable.{
"message": "Success.",
"data": [
{
"corporateReference": "CORP-8842",
"corporateCurrencyAccountReference": "CCA-1001",
"currencyCode": "GBP",
"balance": "48200.00",
"availableBalance": "47150.00"
},
{
"corporateReference": "CORP-8842",
"corporateCurrencyAccountReference": "CCA-1002",
"currencyCode": "USD",
"balance": "12000.00",
"availableBalance": null
}
],
"pagination": {"nextToken": null, "previousToken": null, "totalItems": 2, "hasMore": false}
}null.get_account| Takes | Required | What it is |
|---|---|---|
account_reference | yes | An account reference from list_accounts |
{"name": "get_account", "arguments": {"account_reference": "CCA-1001"}}Account CCA-1001 (GBP): balance 48200.00, of which 47150.00 available. Local funding: active — ready to receive payments — pay into Northwind Trading Ltd, account 12345678, SortCode 04-00-75, at Modulr FS Limited (London branch), GB. International funding: not yet set up.{
"message": "Success.",
"data": {
"externalReference": "CCA-1001",
"currency": "GBP",
"currentBalance": "48200.00",
"availableBalance": "47150.00",
"localAccountStatus": "ACTIVE",
"internationalAccountStatus": "NOT_PROVISIONED",
"localPaymentDetails": {
"accountName": "Northwind Trading Ltd",
"accountNumber": "12345678",
"routingCodeType": "SortCode",
"routingCode": "04-00-75",
"bankName": "Modulr FS Limited",
"bankBranch": "London",
"bankCountry": "GB"
},
"internationalPaymentDetails": []
}
}get_account_ledger| Takes | Required | What it is |
|---|---|---|
account_reference | yes | The account to look at |
from_date | no | Only entries from this date (YYYY-MM-DD) |
to_date | no | Only entries up to this date |
limit | no | Entries per page (default 25, max 100) |
next_token | no | Ask for the next page, using the token from the last one |
{
"name": "get_account_ledger",
"arguments": {"account_reference": "CCA-1001", "from_date": "2026-08-01", "limit": 25}
}| Date | Type | Amount | Counterparty | Description |
|---|---|---|---|---|
| 2026-08-14 | deposit | +5000.00 | Contoso Ltd | Invoice 4471 |
| 2026-08-15 | withdrawal | -1250.00 | Fabrikam GmbH | Supplier payment |
| 2026-08-16 | FX Trade | -800.00 | GBP to EUR conversion |
{
"message": "Success.",
"data": [
{
"amount": "5000.00",
"direction": "credit",
"type": "deposit",
"effectiveDate": "2026-08-14",
"sourceReference": "Contoso Ltd",
"beneficiary": null,
"description": "Invoice 4471",
"transactionReference": "TXN-77120"
},
{
"amount": "1250.00",
"direction": "debit",
"type": "withdrawal",
"effectiveDate": "2026-08-15",
"sourceReference": null,
"beneficiary": "Fabrikam GmbH",
"description": "Supplier payment",
"transactionReference": "TXN-77121"
},
{
"amount": "800.00",
"direction": "debit",
"type": "FX Trade",
"effectiveDate": "2026-08-16",
"sourceReference": null,
"beneficiary": null,
"description": "GBP to EUR conversion",
"transactionReference": "TXN-77122"
}
],
"pagination": {"nextToken": "eyJrIjoi...", "previousToken": null, "totalItems": 3, "hasMore": true}
}direction says which it is. The +/- in the table above is added forsourceReference for money in andbeneficiary for money out.type covers deposits, withdrawals, FX trades and more, and not every valuelist_beneficiariesget_beneficiary_schema| Takes | Required | What it is |
|---|---|---|
corporate_reference | no, but effectively yes | The company whose payees you want |
search | no | Match against the name. Leave out to list everyone |
search_mode | no | "contains" (default) or "starts_with" |
limit | no | Per page |
next_token | no | Token from the previous page |
{
"name": "list_beneficiaries",
"arguments": {"corporate_reference": "CORP-8842", "search": "fab", "search_mode": "contains"}
}| Reference | Name | Type | Country | Currencies (rails) | Status |
|---|---|---|---|---|---|
| BEN-3301 | Fabrikam GmbH | company | DE | EUR (sepa/swift) | active |
| BEN-3302 | Jane Okafor | individual | GB | GBP (faster_payments) | active |
{
"data": [
{
"externalReference": "BEN-3301",
"displayName": "Fabrikam GmbH",
"entityType": "company",
"countryCode": "DE",
"destinations": [
{"currencyCode": "EUR", "paymentRail": "sepa"},
{"currencyCode": "EUR", "paymentRail": "swift"}
],
"status": "active"
},
{
"externalReference": "BEN-3302",
"displayName": "Jane Okafor",
"entityType": "individual",
"countryCode": "GB",
"destinations": [{"currencyCode": "GBP", "paymentRail": "faster_payments"}],
"status": "active"
}
],
"pagination": {"nextToken": null, "previousToken": null, "totalItems": 2, "hasMore": false}
}page and offset, purely so it can tell you clearlylimit and next_token.get_beneficiarylist_beneficiaries collapses a payee| Takes | Required | What it is |
|---|---|---|
beneficiary_id | yes | The payee's reference from list_beneficiaries |
corporate_reference | no, but effectively yes | The company the payee belongs to |
{"name": "get_beneficiary", "arguments": {"beneficiary_id": "BEN-3301", "corporate_reference": "CORP-8842"}}| Currency | Rail | Validation | Account |
|---|---|---|---|
| EUR | sepa | matched | DE89370400440532013000 |
| EUR | swift | not_validated | DE89370400440532013000 |
{
"data": {
"externalReference": "BEN-3301",
"displayName": "Fabrikam GmbH",
"entityType": "company",
"countryCode": "DE",
"status": "active",
"isInternal": false,
"destinations": [
{
"currencyCode": "EUR",
"paymentRail": "sepa",
"validationStatus": "matched",
"account_number": "DE89370400440532013000",
"institution": "Commerzbank AG"
},
{
"currencyCode": "EUR",
"paymentRail": "swift",
"validationStatus": "not_validated",
"account_number": "DE89370400440532013000",
"institution": "Commerzbank AG"
}
],
"company": {"registeredName": "Fabrikam GmbH"},
"address": {"city": "Berlin", "countryCode": "DE"},
"createdAt": "2026-02-11T09:20:00Z"
}
}matched means the account details were checked against the account holder'snot_validated means they were not. It is per destination, so the samedeleted gets an explicit closing line saying itget_beneficiary_schema| Method | Rails |
|---|---|
bank_account | faster_payments, sepa, swift, ach, eft, and the rest |
e_transfer | e_transfer |
virtual_account | pix |
sokin_internal | internal |
crypto | base, tron, ethereum, polygon, solana |
| Takes | Required | What it is |
|---|---|---|
payment_method | yes | One of the five above. crypto is always refused — the upstream endpoint cannot describe crypto payees yet |
currency_code | unless sokin_internal | Currency the payee is paid in |
country_code | unless sokin_internal | Country of the payee's account |
entity_type | unless sokin_internal | individual or company |
autodeposit_enrolled | no | e-Transfer only: "true", "false" or "unknown". Pass "unknown" rather than omitting it when you have not checked — omitting behaves like "true" and leaves the security question optional |
corporate_reference | no, but effectively yes | The company the payee will belong to |
{
"name": "get_beneficiary_schema",
"arguments": {
"payment_method": "bank_account",
"currency_code": "GBP",
"country_code": "GB",
"entity_type": "company",
"corporate_reference": "CORP-8842"
}
}| Field | Type | Required | Notes |
|---|---|---|---|
| displayName | string | yes | length 1-100 |
| bankAccount.accountNumber | string | only for faster_payments | |
| bankAccount.sortCode | string | yes | |
| entityType | enum | yes | one of: individual, company |
{
"data": {
"condition": {
"currencyCode": "GBP",
"entityType": "company",
"countryCode": "GB",
"paymentMethod": "bank_account"
},
"fields": [
{"name": "displayName", "fieldType": "string", "isRequired": true, "min": 1, "max": 100},
{
"name": "bankAccount.accountNumber",
"fieldType": "string",
"isRequired": true,
"requiredForPaymentRails": ["faster_payments"]
},
{"name": "bankAccount.sortCode", "fieldType": "string", "isRequired": true},
{
"name": "entityType",
"fieldType": "enum",
"isRequired": true,
"allowedValues": ["individual", "company"]
}
]
}
}address.city andbankAccount.accountNumber tell you where each answer belongs. "Only forAPI error (400): No payment rails for GBP+US and bank_account.list_financial_institutions{"name": "list_financial_institutions", "arguments": {}}| Id | Name | Bank Number |
|---|---|---|
| 1 | Royal Bank of Canada | 003 |
| 2 | Toronto-Dominion Bank | 004 |
{
"message": "Success.",
"data": [
{"id": 1, "name": "Royal Bank of Canada", "bankNumber": "003"},
{"id": 2, "name": "Toronto-Dominion Bank", "bankNumber": "004"}
]
}list_financial_institution_branches| Takes | Required | What it is |
|---|---|---|
financial_institution_id | yes | The id from list_financial_institutions |
limit | no | Per page |
next_token | no | Token from the previous page |
{"name": "list_financial_institution_branches", "arguments": {"financial_institution_id": 1}}| Id | Description | Routing Number | Address | City | State | Postal Code |
|---|---|---|---|---|---|---|
| 4412 | Main Branch | 000312345 | 200 Bay Street, Suite 400 | Toronto | ON | M5J2J2 |
{
"data": [
{
"id": 4412,
"description": "Main Branch",
"routingNumber": "000312345",
"addressLineOne": "200 Bay Street, Suite 400",
"addressLineTwo": null,
"city": "Toronto",
"state": "ON",
"postalCode": "M5J2J2"
}
],
"pagination": {"nextToken": null, "previousToken": null, "totalItems": 1, "hasMore": false}
}list_financial_institutions.list_instructions| Takes | Required | What it is |
|---|---|---|
corporate_reference | one of these two | List for a whole company |
cca_reference | one of these two | List for a single account |
completed | no | true for finished, false for still in progress |
limit | no | Per page (default 20, max 100) |
next_token | no | Token from the previous page |
{"name": "list_instructions", "arguments": {"corporate_reference": "CORP-8842", "limit": 20}}| Reference | Account | Type | Amount | Currency | Status | Created |
|---|---|---|---|---|---|---|
| INS-5512 | CCA-1001 | Payment | 1250.00 | GBP | Processed | 2026-08-15T09:12:44Z |
| INS-5513 | CCA-1002 | FXPayment | 800.00 | USD | Pending Settlement | 2026-08-16T11:03:02Z |
{
"message": "Success.",
"data": [
{
"instructionReference": "INS-5512",
"corporateReference": "CORP-8842",
"ccaReference": "CCA-1001",
"instructionType": "Payment",
"amount": "1250.00",
"currency": "GBP",
"displayStatus": "Processed",
"createdAt": "2026-08-15T09:12:44Z",
"updatedAt": "2026-08-15T09:14:02Z"
},
{
"instructionReference": "INS-5513",
"corporateReference": "CORP-8842",
"ccaReference": "CCA-1002",
"instructionType": "FXPayment",
"amount": "800.00",
"currency": "USD",
"displayStatus": "Pending Settlement",
"createdAt": "2026-08-16T11:03:02Z",
"updatedAt": "2026-08-16T11:04:18Z"
}
],
"pagination": {"nextToken": null, "previousToken": null, "totalItems": 2, "hasMore": false}
}get_instruction| Takes | Required | What it is |
|---|---|---|
instruction_reference | yes | The instruction to look up |
{"name": "get_instruction", "arguments": {"instruction_reference": "INS-5513"}}Instruction INS-5513 (FXPayment) for corporate CORP-8842, account CCA-1002: 800.00 USD -> 742.10 EUR, status Pending Settlement. Beneficiary: BEN-3301. Sender reference (shown to the recipient): INV-4471. Purpose: SUPPLIER_PAYMENT. Fees: 4.20 FX, 1.50 transaction, 0.00 reseller. Created 2026-08-16T11:03:02Z, updated 2026-08-16T11:04:18Z.{
"message": "Success.",
"data": {
"externalReference": "INS-5513",
"displayStatus": "Pending Settlement",
"instructionType": "FXPayment",
"corporateReference": "CORP-8842",
"corporateCurrencyAccount": "CCA-1002",
"amount": "800.00",
"destinationAmount": "742.10",
"sourceCurrency": "USD",
"destinationCurrency": "EUR",
"beneficiaryReference": "BEN-3301",
"senderReference": "INV-4471",
"paymentPurpose": "SUPPLIER_PAYMENT",
"sokinFxFee": "4.20",
"sokinTransactionFee": "1.50",
"resellerTransactionFee": "0.00",
"failureReason": null,
"instructionRequestReference": "IR-Payment-5513",
"createdAt": "2026-08-16T11:03:02Z",
"updatedAt": "2026-08-16T11:04:18Z"
}
}get_instruction_request| Takes | Required | What it is |
|---|---|---|
instruction_request_reference | yes | The receipt reference from submitting. Not an instruction reference — those go to get_instruction |
{"name": "get_instruction_request", "arguments": {"instruction_request_reference": "IR-Payment-77"}}Instruction request IR-Payment-77 was accepted: instruction INS-9 was created. Use get_instruction for its full detail.{
"message": "Success.",
"data": {
"externalReference": "IR-Payment-77",
"status": "Accepted",
"createdInstructionReference": "INS-9",
"failureReason": null,
"errorCategory": null
}
}| Status | What it actually means |
|---|---|
Created | Still being processed. Not a success |
Accepted | Succeeded |
Rejected | Failed, and the reason is in the result |
Instruction request IR-Payment-77 is still being processed -- no outcome yet. Check again shortly.Instruction request IR-Payment-77 was rejected: Insufficient balance (category: amount). No instruction was created.validate_payment_instruction| Takes | Required | What it is |
|---|---|---|
corporate_currency_account | yes | The account to pay from |
beneficiary_reference | yes | Who to pay, from list_beneficiaries |
amount | yes | Plain decimal, up to 2 places, above zero (e.g. "125.50") |
reseller_fee | no | Same format, zero or more |
sender_reference | no | Text the recipient sees, max 18 characters |
payment_purpose | no | A purpose code, e.g. ACCOUNTS_PAYABLE |
amount_is_fees_inclusive | no | true takes fees out of the amount; default adds them on top |
{
"name": "validate_payment_instruction",
"arguments": {
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"amount": "1250.00",
"reseller_fee": "1.50",
"sender_reference": "INV-4471"
}
}Validation passed: this payment would clear the creation checks. Total debit 1256.70 (5.20 Sokin fee, 1.50 reseller fee); beneficiary would receive 1250.00. Nothing was created and no money moved.{
"data": {
"success": true,
"failureReason": null,
"errorCategory": null,
"feeBreakdown": {
"amount": "1256.70",
"destinationAmount": "1250.00",
"sokinFee": "5.20",
"resellerFee": "1.50",
"feeRateCardReference": "RC-14"
}
}
}Validation failed: insufficient available balance on the source account (category: amount). The engine still computed amounts: total debit 1256.70 (5.20 Sokin fee, 1.50 reseller fee). Nothing was created and no money moved."125.50". Shorthand such as 1e3create_payment_instructionvalidate_payment_instruction first and fix anything it flags. Thisvalidate_payment_instruction.{
"name": "create_payment_instruction",
"arguments": {
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"amount": "1250.00",
"reseller_fee": "1.50",
"sender_reference": "INV-4471"
}
}Payment prepared and validated -- awaiting the user's confirmation in the review widget. Nothing has been submitted; do not report this payment as made, and do not call submit_payment_instruction yourself.{
"draft": {
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"amount": "1250.00",
"reseller_fee": "1.50",
"sender_reference": "INV-4471",
"payment_purpose": null,
"amount_is_fees_inclusive": false
},
"currency": "GBP",
"validation": {
"success": true,
"failureReason": null,
"errorCategory": null,
"feeBreakdown": {
"amount": "1256.70",
"destinationAmount": "1250.00",
"sokinFee": "5.20",
"resellerFee": "1.50",
"feeRateCardReference": "RC-14"
}
},
"idempotencyKey": "a5f1c8e0-7d3b-4f2a-9c61-0b8e4d2f1a77"
}submit_payment_instruction| Takes | Required | What it is |
|---|---|---|
idempotency_key | yes | The key from create_payment_instruction |
| everything else | — | Must match the payment you reviewed, exactly |
{
"name": "submit_payment_instruction",
"arguments": {
"idempotency_key": "a5f1c8e0-7d3b-4f2a-9c61-0b8e4d2f1a77",
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"amount": "1250.00",
"reseller_fee": "1.50",
"sender_reference": "INV-4471"
}
}Payment submitted: instruction request IR-Payment-77 for 1250.00 from CCA-1001 to BEN-3301. This is an instruction-request reference, not a completed payment -- check the outcome via get_instruction_request.{"data": {"externalReference": "IR-Payment-77"}}get_instruction_request for the real outcome.create_fx_payment_instructioncreate_payment_instruction| Takes | Required | What it is |
|---|---|---|
corporate_currency_account | yes | The account to pay from |
beneficiary_reference | yes | Who to pay, from list_beneficiaries |
buy_currency | yes | What the beneficiary receives, e.g. "USD" |
sell_currency | yes | What you are spending, e.g. "GBP" |
amount | yes | The amount of whichever side fixed_side names |
fixed_side | no | "BUY" or "SELL". Default "SELL" |
corporate_reference | no, but effectively yes | The company to quote for. Used only to mint the quote |
reseller_fee | no | Plain decimal, zero or more |
sender_reference | no | Text the recipient sees, max 18 characters |
payment_purpose | no | A purpose code, e.g. ACCOUNTS_PAYABLE |
{
"name": "create_fx_payment_instruction",
"arguments": {
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"buy_currency": "USD",
"sell_currency": "GBP",
"amount": "100.00",
"fixed_side": "SELL",
"corporate_reference": "CORP-8842",
"sender_reference": "INV-4471"
}
}FX payment prepared and validated -- awaiting the user's confirmation in the review widget. Nothing has been submitted; do not report this payment as made, and do not call submit_fx_payment_instruction yourself.FX payment prepared and validated -- nothing has been submitted yet. Total debit 100.00 (0.50 Sokin fee, 0.00 reseller fee); beneficiary would receive 125.00 (GBP debited, beneficiary receives USD). idempotency key: 9c21ab4f-... . quote_id: FXQ-1a2b3c... . Read these figures back to the user and get their explicit approval. Only after they approve, call submit_fx_payment_instruction with this idempotency_key, this quote_id, and the same corporate_currency_account, beneficiary_reference, reseller_fee, sender_reference, and payment_purpose you used here -- it does not take buy_currency, sell_currency, amount, fixed_side, or corporate_reference; those only mint the quote. Never submit without that approval, and never tell the user the payment was made until submit_fx_payment_instruction succeeds -- it may still need approval in the Sokin portal afterward.{
"draft": {
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"quote_id": "FXQ-1a2b3c",
"reseller_fee": null,
"sender_reference": "INV-4471",
"payment_purpose": null
},
"currency": "GBP",
"buyCurrency": "USD",
"quoteCreatedAt": "2026-09-16T10:02:00+00:00",
"quoteExpiresAt": "2026-09-16T10:12:00+00:00",
"idempotencyKey": "9c21ab4f-7c4e-4a2b-9f31-6d0e2a5b8c14"
}quote_id and no amounts: the amounts come from thequote_id through unchanged.Rejected with aquoteExpiresAt is what the cardsubmit_fx_payment_instructioncreate_fx_payment_instruction minted, with arguments matching the draft that| Takes | Required | What it is |
|---|---|---|
idempotency_key | yes | The key from create_fx_payment_instruction |
corporate_currency_account | yes | Must match the reviewed draft |
beneficiary_reference | yes | Must match the reviewed draft |
quote_id | yes | From the draft's quote_id — the quote the prepare step minted, not one you choose |
reseller_fee | no | Must match the reviewed draft |
sender_reference | no | Must match the reviewed draft |
payment_purpose | no | Must match the reviewed draft |
{
"name": "submit_fx_payment_instruction",
"arguments": {
"idempotency_key": "9c21ab4f-7c4e-4a2b-9f31-6d0e2a5b8c14",
"corporate_currency_account": "CCA-1001",
"beneficiary_reference": "BEN-3301",
"quote_id": "FXQ-1a2b3c",
"sender_reference": "INV-4471"
}
}FX payment submitted: instruction request IR-FXPayment-77 from CCA-1 to BEN-1. This is an instruction-request reference, not a completed payment -- depending on the corporate's approval rules it may now be awaiting a human approval in the Sokin portal before it is processed. Check the outcome via get_instruction_request.{"data": {"externalReference": "IR-FXPayment-77"}}get_instruction_request isget_instruction_request's shape rather than the single-field one above. Codeget_fx_quote| Takes | Required | What it is |
|---|---|---|
buy_currency | yes | What you are buying, e.g. "USD" |
sell_currency | yes | What you are selling, e.g. "GBP" |
amount | yes | The amount of whichever side fixed_side names |
fixed_side | no | "BUY" or "SELL". Default "SELL" |
corporate_reference | no, but effectively yes | Which company to quote for |
corporate_currency_account | no | The account a later conversion would come from |
{
"name": "get_fx_quote",
"arguments": {
"buy_currency": "USD",
"sell_currency": "GBP",
"amount": "1000.00",
"fixed_side": "SELL",
"corporate_reference": "CORP-8842",
"corporate_currency_account": "CCA-1001"
}
}Ready to quote GBP -> USD, 1000.00 on the sell side. No quote has been created yet -- the card's Get Quote button mints one.{
"buyCurrency": "USD",
"sellCurrency": "GBP",
"amount": "1000.00",
"fixedSide": "SELL",
"corporateReference": "CORP-8842",
"corporateCurrencyAccount": "CCA-1001"
}FX quote QT-88213: 1000.00 GBP -> 1187.40 USD at rate 1.18740 (GBPUSD). Fees: 2.50 FX. Valid until 2026-08-27T14:32:10+00:00. Cut-off time: 2026-08-27T16:00:00+00:00. This rate is indicative and short-lived (see the expiry above) -- go to https://portal.uat.sokin.com/v2/transfer/currency-exchange to actually execute this trade; it cannot be settled through this assistant.{
"quoteId": "QT-88213",
"currencyPair": "GBPUSD",
"fxRate": "1.18740",
"fixedSide": "SELL",
"buyAmount": "1187.40",
"buyCurrency": "USD",
"sellAmount": "1000.00",
"sellCurrency": "GBP",
"fxFees": "2.50",
"transactionFees": null,
"currentTime": "2026-08-27T14:30:10+00:00",
"expiryTime": "2026-08-27T14:32:10+00:00",
"cutOffTime": "2026-08-27T16:00:00+00:00",
"holidays": null
}create_fx_quoteget_fx_quote. Only available on a client with interactive cards.expiresAt in the result. Never assume aget_fx_quote, plus optionalreseller_fee and beneficiary_external_reference. If you leave the account{
"name": "create_fx_quote",
"arguments": {
"buy_currency": "USD",
"sell_currency": "GBP",
"amount": "1000.00",
"fixed_side": "SELL",
"corporate_reference": "CORP-8842",
"corporate_currency_account": "CCA-1001"
}
}Quote QT-88213 created: 1000.00 GBP -> 1187.40 USD at rate 1.18740. Expires at 2026-08-27T14:34:00+00:00 -- settle it before then, or ask for a fresh quote once it expires.{
"quoteId": "QT-88213",
"idempotencyKey": "7c2e9b41-5a08-4d6f-b3c2-91ef0a4d8b52",
"currencyPair": "GBP/USD",
"fxRate": "1.18740",
"fixedSide": "SELL",
"buyAmount": "1187.40",
"buyCurrency": "USD",
"sellAmount": "1000.00",
"sellCurrency": "GBP",
"fxFees": "2.50",
"createdAt": "2026-08-27T14:32:00+00:00",
"expiresAt": "2026-08-27T14:34:00+00:00",
"corporateCurrencyAccount": "CCA-1001",
"resellerFee": null
}settle_fx_quoteError: this session has not declared MCP UI support, so real-money FX settlement is refused here. Direct the user to the Sokin dashboard to execute this trade instead.| Takes | Required | What it is |
|---|---|---|
idempotency_key | yes | The key from create_fx_quote |
corporate_currency_account | yes | Must match the quote you saw |
quote_id | yes | Must match the quote you saw |
reseller_fee | no | Must match the quote you saw |
{
"name": "settle_fx_quote",
"arguments": {
"idempotency_key": "7c2e9b41-5a08-4d6f-b3c2-91ef0a4d8b52",
"corporate_currency_account": "CCA-1001",
"quote_id": "QT-88213"
}
}FX conversion submitted: instruction request IR-FX-9911 for account CCA-1001. This is a submission receipt, not confirmation the conversion completed -- check get_instruction_request for its actual outcome.{"data": {"externalReference": "IR-FX-9911", "status": "Created"}}Created means still processing. Useget_instruction_request for the outcome — it is a read, and it answersvisualize| Takes | Required | What it is |
|---|---|---|
markdown | yes | Markdown to render. Code blocks tagged mermaid become diagrams |
title | no | The card's heading |
{
"name": "visualize",
"arguments": {
"title": "Balances by currency",
"markdown": "```mermaid\npie title Balances\n \"GBP\" : 48200\n \"USD\" : 12000\n```"
}
}{"title": "Balances by currency", "markdown": "```mermaid\npie title Balances\n \"GBP\" : 48200\n \"USD\" : 12000\n```"}get_documentation_links| Takes | Required | What it is |
|---|---|---|
topic | no | "b2b_api", "mcp_server", or "all". Default "all" |
{"name": "get_documentation_links", "arguments": {"topic": "all"}}| Documentation | URL | What's there |
|---|---|---|
| Sokin B2B API reference | https://docs.sokin.com/llms.txt | The Sokin B2B REST API this MCP server calls: every endpoint, authentication, API versions, and request/response schemas |
| Sokin MCP server reference | (none available) | No published reference yet -- every tool on this server is self-describing, so read the tool list and tool descriptions you already have from this connection |
{
"mcpServerUrl": "https://mcp.uat.sokin.com",
"documentation": [
{
"topic": "b2b_api",
"title": "Sokin B2B API reference",
"url": "https://docs.sokin.com/llms.txt",
"alternateUrl": "https://docs.sokin.com",
"summary": "The Sokin B2B REST API this MCP server calls: every endpoint, authentication, API versions, and request/response schemas"
},
{
"topic": "mcp_server",
"title": "Sokin MCP server reference",
"url": null,
"alternateUrl": null,
"summary": "No published reference yet -- every tool on this server is self-describing, so read the tool list and tool descriptions you already have from this connection"
}
]
}play_cheetah_dash{"name": "play_cheetah_dash", "arguments": {}}Cheetah Dash is ready -- use Space or tap to jump, again mid-air to double jump.| Idea | Tools | Prompt to try |
|---|---|---|
| Multi-currency balance dashboard | list_corporates, list_accounts | "Build a dashboard of all my Sokin balances by currency, with a bar chart of the biggest five." |
| FX quote checker | get_fx_quote | "Make a page where I enter an amount and from/to currency and it shows the current Sokin FX quote." |
| Transaction history explorer | get_account_ledger | "Build a screen to pick an account and list its recent transactions, newest first, with a date filter." |
| Beneficiary directory | list_beneficiaries | "Create a searchable directory of my saved beneficiaries with currency and country." |
| Payment pre-flight checker | validate_payment_instruction | "Let me paste payment details and flag any problems, without submitting anything." |
validate_payment_instruction saves nothing and moves no money.https://docs.sokin.com, orhttps://docs.sokin.com/llms.txt for the machine-readable index.get_documentation_links will return the ones for the environment you are