1. Sokin MCP
Sokin Embedded API
  • Getting Started
    • Sokin Definitions
    • Guides
      • Authentication
      • Receiving Payments
      • FX Payments
      • Payments
      • Unfunded Payments
      • Unfunded FX Payments
      • Webhooks
      • Corporate Onboarding
        • Data Requirements
        • Step 1: Create a corporate profile
        • Step 2: Add associates
        • Step 3: Add a parent entity (if applicable)
        • Step 4: Upload company documents
        • Step 5: Upload associate documents
        • Real-time Status Updates via Webhook
        • Conditional Step: Upload Parent Entity documents (if applicable)
        • Step 6: Finalise onboarding submission
        • Uploading supporting documents using Pre-signed URLs
        • Onboarding Reference Data
        • Onboarding Models
          • Data-Only model
          • Supported Jurisdictions & National ID Requirements
      • Sokin MCP
        • Sokin MCP - Setup and Usage Guide
        • Sokin MCP - Tool Guide
        • Sokin MCP - Technical Docs
  • Authentication
    • Get Token
      POST
    • Schemas
      • TokenResponse
  • Corporates
    • v2025-12-01
      • Create a new Corporate
      • Add a parent entity (corporate associate) to an onboarding request
      • Add an associate to a corporate onboarding request
      • Request pre-signed URLs for onboarding document uploads
      • Request pre-signed URLs for parent entity document uploads
      • Request pre-signed URLs for associate document uploads
      • Finalise corporate onboarding submission
    • Schemas
      • CreateCorporateRequest
      • UboDetails
      • OwnershipType
      • AssociateDocumentPresignedUrlResponse
      • AddOnboardingDocumentsRequest
      • MessageResponse
      • AssociateDocumentPresignedUrlResponseItem
      • ErrorDetail
      • CorporateAssociateType
      • ErrorResponse
      • PresignedUrlResponse
      • AddressTypeEnum
      • FinaliseSubmissionRequest
      • AddParentEntityRequest
      • CreateCorporateResponse
      • AssociateIdentityType
      • ApiResponse[AddOnboardingDocumentsResponse]
      • CorporateCategories
      • AddOnboardingDocumentsResponse
      • ApiResponse[CorporateDetailResponse]
      • ApiResponse[AddAssociateDocumentsResponse]
      • AddParentEntityDocumentsRequest
      • AddAssociateDocumentsResponse
      • AddParentEntityResponse
      • AddIndividualAssociateRequest
      • ApiResponse[CreateCorporateResponse]
      • AddIndividualAssociateResponse
      • CorporateDetailResponse
      • AssociateType
      • ApiResponse[AddParentEntityResponse]
      • NumericRange
      • ApiResponse[AddIndividualAssociateResponse]
      • MoneyRange
      • AddAssociateDocumentsRequest
      • FinaliseSubmissionResponse
      • AssociateIdentityType
  • Corporate Currency Accounts
    • v2025-12-01
      • Get Corporate Currency Accounts
      • Get Cca Ledger Items
      • Get Corporate Currency Account By Reference
    • Schemas
      • GetCCAByReferenceResponse
      • GetCCAsResponseItem
      • PaginatedApiResponse[GetCCALedgerItemsResponseItem]
      • ErrorDetail
      • PageInfo
      • SearchCCALedgersResponseItem
      • PaginationInfo
      • GetCCAUnifiedBalanceResponse
      • PaginatedApiResponse[SearchCCALedgersResponseItem]
      • ErrorResponse
      • ApiResponse[GetCCAUnifiedBalanceResponse]
      • SearchCCALedgersRequest
      • PaginatedApiResponse[GetCCAsResponseItem]
      • ApiResponse[GetCCAByReferenceResponse]
      • PaginationInfo
      • SearchCCALedgersPagination
      • GetCCAByReferenceResponsePayInDetail
      • CurrencyCode
      • GetCCALedgerItemsResponseItem
      • PaginationInfo
  • Beneficiaries
    • v2025-12-01
      • Get Beneficiary Schema
      • Create Beneficiary
      • Get Beneficiary List
      • Get Beneficiary Details
      • Delete Beneficiary
      • Validate Beneficiary
      • Validate Beneficiaries
      • List Financial Institutions
      • List Financial Institution Branches
    • Schemas
      • ProviderBankIdentifierRequest
      • ErrorDetail
      • FinancialInstitutionReferenceResponse
      • PaymentRail
      • ApiResponse[list[FinancialInstitutionReferenceResponse]]
      • DeleteBeneficiaryData
      • AddressResponse
      • BeneficiarySchemaFieldCondition
      • ApiResponse[list[BankCountryCurrencyResponse]]
      • PageInfo
      • CurrencyCode
      • BeneficiarySchemaField
      • BeneficiaryValidationResultResponse
      • StateOrProvince
      • ApiResponse[BeneficiaryResponse]
      • BeneficiaryField
      • BeneficiaryStatus
      • DestinationResponse
      • ValidationStatus
      • BeneficiaryType
      • PaymentMethodType
      • PaginatedApiResponse[FinancialInstitutionBranchReferenceResponse]
      • ValidateBeneficiariesRequest
      • ApiResponse[ValidateBatchBeneficiariesResponse]
      • CompanyDetailsResponse
      • SchemaFieldVisibility
      • FieldErrorResponse
      • StateOrProvince
      • ValidateBeneficiaryRequest
      • ErrorResponse
      • FieldType
      • VirtualAccountDestinationRequest
      • ApiResponse[DeleteBeneficiaryData]
      • SokinInternalDestinationRequest
      • GetBeneficiaryFieldsResponse
      • BeneficiaryResponse
      • ApiResponse[ValidateBeneficiaryResponse]
      • FinancialInstitutionBranchReferenceResponse
      • IdentifierType
      • CreateBeneficiaryRequest
      • IndividualDetailsRequest
      • SchemaFieldType
      • TransactionTypeEnum
      • CryptoDestinationRequest
      • AccountType
      • BeneficiaryValidationPayload
      • ApiResponse[GetBeneficiaryFieldsResponse]
      • AccountNumberType
      • BankAccountCategory
      • ApiResponse[GetBeneficiarySchemaResponse]
      • PaginatedApiResponse[BeneficiaryResponse]
      • ApiResponse[list[BankCountryResponse]]
      • AddressRequest
      • PaginationInfo
      • RegionalHints
      • BankCountryCurrencyResponse
      • PaginationInfo
      • ValidateBatchBeneficiariesResponse
      • CreateExternalBeneficiaryData
      • FinancialInstitutionRequest
      • ApiResponse[CreateExternalBeneficiaryData]
      • CompanyDetailsRequest
      • BankCountryResponse
      • CreateExternalBeneficiaryRequest
      • BankAccountDestinationRequest
      • IndividualDetailsResponse
      • BeneficiarySchemaCondition
      • BeneficiaryDestinationValidationResult
      • BeneficiaryEntityType
      • GetBeneficiarySchemaResponse
      • ETransferDestinationRequest
      • ValidateBeneficiaryResponse
      • RoutingCodeRequest
      • ApiResponse[BeneficiaryDetails]
      • BeneficiaryListItem
      • PaginatedApiResponse[BeneficiaryListItem]
      • StateOrProvince
      • PaginationInfo
      • PaginatedBeneficiaryFieldsResponse
      • BeneficiaryDetails
      • RoutingScheme
      • ApiResponse[ListFinancialInstitutionsResponse]
      • ListFinancialInstitutionsResponse
  • Instruction Requests
    • v2025-12-01
      • Create Payment Instruction Request
      • Create Fx Instruction Request
      • Create Fx Payment Instruction Request
      • Create Unfunded Payment Instruction Request
      • Create Unfunded Fx Payment Instruction Request
      • Get Instruction Request By Reference
    • Schemas
      • ApiResponse[GetInstructionRequestResponse]
      • ValidateInstructionCreationRequest
      • ErrorDetail
      • InstructionType
      • CreateInstructionRequestResponse
      • ApiResponse[CreateInstructionRequestResponse]
      • ValidateInstructionCreationResponse
      • CreateFxPaymentInstructionRequest
      • FeeBreakdownResponse
      • ErrorResponse
      • CreateUnfundedPaymentInstructionRequest
      • CreateUnfundedFxPaymentInstructionRequest
      • ApiResponse[list[str]]
      • GetInstructionRequestResponse
      • PaymentPurpose
      • CreatePaymentInstructionRequest
      • CreateFXInstructionRequest
      • ApiResponse[ValidateInstructionCreationResponse]
      • CreateSokinDirectInstructionRequest
  • Instructions
    • v2025-12-01
      • Get Instruction By Reference
    • Schemas
      • GetInstructionResponse
      • PaginatedApiResponse[InstructionListResponseItem]
      • ApiResponse[GetInstructionResponse]
      • PaginationInfo
      • ErrorResponse
      • ErrorDetail
      • PageInfo
      • InstructionListResponseItem
      • PaginationInfo
  • Foreign Exchange
    • v2025-12-01
      • Get Fx Rate
    • v2026-08-01
      • Request FX Quote
    • Schemas
      • ApiResponse[FxRateData]
      • CurrencyCode
      • FixedSide
      • FxRateRequest
      • FXValidityPeriod
      • FxRateData
      • ErrorResponse
      • ErrorDetail
      • FXTenorType
      • RequestFxQuoteRequest
      • CreateQuoteResponse
      • ApiResponse[CreateQuoteResponse]
  • Webhooks
    • v2025-12-01
      • Create Subscription
      • Update Subscription
      • Get Subscription By Id
      • Delete Subscription
      • Update Subscription Status
      • List Notification Logs
      • Retry Notification
    • Schemas
      • ApiResponse[UpdateSubscriptionResponse]
      • PaginationInfo
      • SubscriptionCreateOrUpdate
      • NotificationStatus
      • NotificationAttemptResponse
      • SubscribableWebhookEventType
      • SubscriptionStatusUpdate
      • ApiResponse[CreateSubscriptionResponse]
      • UpdateSubscriptionResponse
      • PaginatedApiResponse[NotificationLogResponse]
      • PaginationInfo
      • ErrorResponse
      • ErrorDetail
      • PageInfo
      • CreateSubscriptionResponse
      • NotificationLogResponse
      • WebhookSubscription
  • Payment Acceptance
    • Payment Acceptance
  1. Sokin MCP

Sokin MCP - Setup and Usage Guide

Sokin MCP — Setup and Usage Guide#

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.
An MCP connector lets an AI client — Claude, ChatGPT, Replit's Agent — call
Sokin tools in plain English: list your accounts, check balances, get an FX
quote. You ask in a chat; the client does the API work.
This page connects one of them to Sokin, signs you in, and gets you to a
first working call. It covers all three, plus what to do if you are writing
your own client.
You do not need to write any code to use this. Read top to bottom and you
will reach a working call without navigating anywhere else. Everything here
describes the UAT (test) environment.
UAT only — never sign in with production credentials.
Every step here points at https://mcp.uat.sokin.com/mcp. Sign in with a
Sokin UAT test account only. If you sign in with a production account,
your client's tool calls reach the production platform and can move real
money. Two tools do exactly that — sending a payment, and converting between
accounts — and your client asks you to confirm before either one runs.
Tool Guide names them.

Jump to#

Set up your client — pick one; each takes about five minutes.
Claude
Replit
ChatGPT
Your own MCP client
Then
Authenticate
Make your first call
If something goes wrong

What you need#

The MCP server URLhttps://mcp.uat.sokin.com/mcp — copy it exactly, including the trailing /mcp
An accountA Sokin UAT test account, linked to at least one UAT corporate
A clientClaude, Replit, ChatGPT, or your own MCP client
NetworkThe connector reaches Sokin over the public internet. A VPN or a locked-down corporate network can block the sign-in step — turn the VPN off for that step if the connection fails
You do not need an API key, a client ID, or a client secret. The server
supports Dynamic Client Registration, so your client registers itself during
the first sign-in.

1. Connect a client#

Pick your client. Each path ends at the same place: a connector showing
Connected, with the Sokin tools available in a chat.

Claude (web)#

The Sokin MCP is not in Claude's connector directory, so you add it as a
custom connector. This works on Free, Pro, Max, Team, and Enterprise —
Free is limited to one custom connector.
Individual account (Free, Pro, Max)
1.
Open Claude and go to Settings (profile menu, bottom-left).
The Claude profile menu, bottom-left, with Settings highlighted
2.
Open Connectors.
3.
Click Add, then Add custom connector.
Claude's Connectors settings with the Add menu open, showing Add custom connector
4.
Fill in the dialog:
Name: Sokin (UAT) — any label works
Remote MCP server URL: https://mcp.uat.sokin.com/mcp
Leave Advanced settings (OAuth Client ID / Secret) empty
The custom connector dialog, name and MCP server URL filled in, Advanced settings left empty
5.
Click Continue, leaving the remaining defaults as they are.
The connector's permissions step with its defaults unchanged, Continue at the bottom
6.
Scroll down and click Connect. The Sokin sign-in page opens; sign in
with your UAT test account. The connector then shows Connected.
The Sokin (UAT) connector page with the Connect button before sign-in
7.
Claude still needs permission to run the tools. Open the Needs
approval
dropdowns and set them to Always allow — but leave the
money-moving tools on approval-per-call
: submit_payment_instruction,
settle_fx_quote and create_fx_quote. That prompt is the last thing
standing between an assistant and a real transaction, and for payments it
is not backed up by any server-side check. Read-only tools are safe to
allow once and forget.
The connector's tool list with its Needs approval dropdowns, each of which can be set to Always allow per tool
Team or Enterprise
Only an Owner can add a custom connector, and it is added once for the whole
organisation:
1.
Organization settings → Connectors → Add, hover Custom, choose
Web.
2.
Enter https://mcp.uat.sokin.com/mcp, leave Advanced settings empty, and
click Add.
Every member then goes to Settings → Connectors, finds Sokin (UAT),
clicks Connect, and signs in with their own UAT test account.
Claude Desktop uses the same connector — set it up once on the web as
above and it appears in the desktop app too.
Claude Code is one command instead:
Then run /mcp in Claude Code to sign in. Registration is automatic here
too; there is nothing to paste beyond the URL.

Replit#

1.
Open the Replit website, go to Settings → Integrations → Your
integrations
.
Replit's Integrations settings, on the Your integrations tab
2.
Click + Add MCP server.
3.
Fill in:
Display name: Sokin (UAT) — the Agent uses this label in its chat
logs
Endpoint / server URL: https://mcp.uat.sokin.com/mcp
Replit's Add MCP server form with the display name and endpoint filled in
4.
Click Test & save. Replit prompts you to authorise.
5.
Click Authorize Sokin MCP Server and complete the sign-in.
Replit's authorisation prompt for the Sokin MCP Server
The server then shows Connected under MCP Servers, and the Agent
fetches the tools automatically across your projects.
Replit's MCP Servers list showing Sokin (UAT) as Connected

ChatGPT#

ChatGPT needs Developer mode enabled first, and the flow differs enough
from Claude's to be worth spelling out. Requires Plus, Pro, Business,
Enterprise, or Edu on the web — there is no Free tier for this.
1.
Settings → Security and login → turn on Developer mode. On
Business or Enterprise, if the toggle is missing, an admin must enable it
under Workspace Settings → Permissions & Roles → Connected Data →
Developer mode / Create custom MCP connectors
.
2.
In a chat, click + and open the Developer mode apps area (or
Settings → Connectors → Advanced / Developer mode).
3.
Choose Create, for a developer-mode app backed by a remote MCP server.
4.
Fill in:
Name: Sokin (UAT)
MCP Server URL: https://mcp.uat.sokin.com/mcp — include the
/mcp
Transport: leave the default (Streaming HTTP / SSE)
Authentication: OAuth
5.
Click Create, then sign in with your UAT test account and approve.
6.
Open the app's details page and make sure the tools are toggled on. If
the list is empty or stale, click Refresh to re-pull the tool list.
7.
To use it in a chat: + → Developer mode → Sokin (UAT). The app is
selected per conversation, so re-select it in each new chat.
ChatGPT flags Developer mode as elevated-risk, because it grants full read
and write MCP access. Check any write action before approving it. The
stakes are low on UAT, but the habit matters before anyone points a client
at production.
ChatGPT is also the least reliable of the three today: tool selection is
inconsistent, and it does not render Sokin's interactive cards — the small
panels some tools show inside the chat instead of plain text, including the one
carrying the Approve button that sends a payment. See
How the three clients differ. If you have a
choice, use Claude.

How the three clients differ#

ClaudeReplitChatGPT
What it's calledA custom connectorAn MCP server integrationAn app, created in Developer mode
Extra gateNoneNoneMust enable Developer mode first
PlansFree (1 connector) and upAnyPlus / Pro / Business / Enterprise / Edu — no Free
ScopePer user, or org-wide by an OwnerPer user, across all projectsPer user, selected per conversation
Interactive cardsRenderedNot rendered todayNot rendered today
That last row decides which tools you can use, so it is worth explaining.
An interactive card is a small panel a tool draws inside the chat instead
of answering with plain text — something you can look at and click, rather
than read. Sokin uses them for three things: a payment review card with
Approve and Cancel, an exchange-rate card with a live countdown and a
Settle button, and charts or diagrams.
They are not decoration, but they matter in different ways depending on what
you are doing:
Converting between your own accounts needs a card. The server refuses
those tools outright on a client that cannot draw one — do it in the Sokin
portal instead.
Paying a beneficiary works either way. With a card you approve on the
card; without one, the figures and references come back as text and you
approve in the chat. Both are supported paths.
If you are writing your own client, read the Tool Guide's note on this:
for payments the server enforces no card requirement at all, so your client's
own confirmation prompt before a money-moving tool is doing real work — as are
the company's approval rules in the Sokin portal.
Everything else — balances, transactions, payees, exchange rates — works on
every client. Tool Guide spells out which tool needs what.

Your own MCP client#

Point it at https://mcp.uat.sokin.com/mcp over Streamable HTTP and let
it discover the rest:
FieldValue
TransportStreamable HTTP
ProtocolJSON-RPC 2.0 (MCP)
AuthenticationOAuth 2.1 + PKCE, with Dynamic Client Registration
Tools23
Session modelStateless — every request is independent
Three transport details that catch people out:
Your Accept header must include both content types. Send
Accept: application/json, text/event-stream. Omitting the second value is
the most common reason a client fails to parse a perfectly valid response.
Responses arrive as SSE. Even a single non-streaming call comes back as
a text/event-stream with the result in a data: event, not as a plain
JSON body.
No handshake is required. The server is stateless, so a tools/call
works without an initialize round trip first. Send one anyway if your
client renders interactive cards — that is where support for them is
declared.

2. Authenticate#

In Claude, Replit, and ChatGPT this is just the sign-in page that opened when
you clicked Connect. Sign in with your UAT test account and approve. If
sign-in fails, it is almost always one of three things: a production account
used by mistake, a VPN blocking the callback, or a test account not yet
linked to a UAT corporate — the last one shows up later as "no accessible
corporates".
There is no refresh token yet, so a session lasts as long as the access
token and then you re-authenticate. That is a re-click of Connect, not a
re-setup.

If you are building your own client#

The MCP server is itself the OAuth Authorization Server your client talks to.
It brokers to Auth0 underneath, and that indirection is the point: requesting
the Sokin B2B API audience needs a parameter an MCP client has no way to set,
so the server sets it for you.
Discovery uses the standard well-known paths, served from whichever
environment's host you are using — the server advertises its own public base
URL, so this works identically in UAT and production with nothing hardcoded:
EndpointPurpose
/.well-known/oauth-authorization-serverAdvertises the issuer, plus the authorize and register endpoints
/.well-known/oauth-protected-resourcePoints back at that same server as the authorization server for this resource
Dynamic Client Registration is enabled at /register, so clients
self-register instead of needing credentials issued by hand.
PKCE is required.
Scopes are openid, profile, email.
No offline_access, so there is no refresh token.
You cannot set the API audience yourself, and you do not need to.
Requests to /mcp are additionally gated by Host-header checks
(DNS-rebinding protection). A request addressed to a host other than the
advertised public one is rejected with 421, not 401 — if you see a
421, check the Host header before you start debugging your token.

3. Make your first call#

The confirmation prompt is the same in every client:
Show me the balances across all my Sokin accounts.
Behind the scenes the client runs two tools: list_corporates, which returns
the companies your login can act for, and then list_accounts, which returns
that company's currency accounts and their balances. You get the answer:
CurrencyBalanceAvailable
GBP48,200.0047,150.00
EUR15,400.0015,400.00
USD12,000.0011,750.00
The figures above are illustrative. What yours look like depends on the UAT
test account you were given — the point is that real account data comes back
at all, not the numbers themselves.
In Claude:
Claude answering the confirmation prompt, having run the Sokin tools and started rendering an account-balances card
And the same prompt answered by the Replit Agent:
The Replit Agent answering the confirmation prompt with a summary of the Sokin accounts, amounts redacted
The same thing on the wire:
If that returns corporates, you are connected. Take a corporateReference
from the result and pass it to list_accounts — nearly every other tool
needs one, and list_corporates is where one comes from.

Disconnecting#

Worth knowing before you start, and worth doing when you are finished with a
test account.
Claude: Settings → Connectors → Sokin (UAT) → disconnect or remove.
On Team or Enterprise, removing it for the whole organisation is an Owner
action; disconnecting your own access is not.
Replit: Settings → Integrations → Your integrations → remove the
Sokin (UAT) MCP server.
ChatGPT: the app's details page → delete it. It also stops being
available in a chat as soon as you deselect it.
Claude Code: claude mcp remove sokin.
Removing the connector stops that client calling Sokin. It does not undo
anything already submitted — a payment or conversion that has gone through has
gone through.

If something goes wrong#

SymptomFix
URL rejected when adding the connectorInclude the full URL with the trailing /mcp, and choose OAuth where the client asks
Sign-in failsUse your Sokin UAT test account. If you are on a VPN, turn it off for the sign-in step
No tools listedOpen the connector's details page, refresh the tool list, and make sure the tools are toggled on
"No accessible corporates", or an empty resultYour test account is not linked to a UAT corporate — ask QA or the AI pod
ChatGPT: no Developer mode toggleYou are on Free, or an admin has not enabled it for your workspace
ChatGPT: the app is missing in a chatRe-select it via + → Developer mode; it is chosen per conversation
421 instead of 401A Host-header mismatch, not a token problem. Check the Host header your client sends
A response your client cannot parseYour Accept header is missing text/event-stream
The last two only apply if you are writing your own client.

Next: what you can ask for#

You are connected, and the balances prompt proved it. Tool Guide
is the companion page: all 19 tools, what each one is for, what it needs, and
an example of what comes back. It also lists a few starter project ideas
sized for an afternoon.
If you are writing code against these tools and want the exact response
schemas field by field, every enumerated value, and the error and pagination
contracts, that is the third page — Sokin MCP — Technical Docs.
Modified at 2026-09-16 11:05:17
Previous
Sokin MCP
Next
Sokin MCP - Tool Guide
Built with