This connects to your live Sokin account. Every step here points at https://mcp.sokin.com/mcp, and you sign in with
your own Sokin login — the one you use for the Sokin portal. Your client's
tool calls reach your real accounts, and some of them can move real money:
sending a payment, and converting between accounts. Your client asks you to
confirm before either one runs (keep that switched on), and by default Sokin
then holds it until it is approved in the Sokin portal — see
Before you move money.
Tool Guide names the tools.
| The MCP server URL | https://mcp.sokin.com/mcp — copy it exactly, including the trailing /mcp |
| An account | Your Sokin login — the one you use for the Sokin portal — linked to at least one corporate |
| A client | Claude, Replit, ChatGPT, or your own MCP client |
| Network | The 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 |
Sokin — any label workshttps://mcp.sokin.com/mcpsubmit_payment_instruction and submit_fx_payment_instructionsettle_fx_quote (converts real money), andupdate_beneficiary, which moves no money itself but replaces a payee'screate_fx_quote andcreate_fx_payment_instruction each create a real exchange-rate quote,create_beneficiary adds a payee, and validate_beneficiary saves a freshhttps://mcp.sokin.com/mcp, leave the sign-in options Claude--scope user makes Sokin available in every project; without it, Claude/mcp in Claude Code toSokin MCP Server — the Agent uses this label in itshttps://mcp.sokin.com/mcpSokin MCP — any label works, but this is the one the rest ofhttps://mcp.sokin.com/mcp — include the /mcphttps://chatgpt.com/oauth/client.json as the CIMD client metadata URL.ChatGPT flags Developer mode as elevated-risk, because it grants full read
and write MCP access. Check any write action before approving it: an
approved write acts on your real Sokin accounts.
sokin, then click + next to Sokin MCP.| Claude | Replit | ChatGPT | |
|---|---|---|---|
| What it's called | A custom connector | An MCP server integration | A plugin, or a Developer mode app if you create it yourself |
| Extra gate | None | None | Developer mode, but only to create the connector — not to use a plugin your organisation already has |
| Plans | Free (1 connector) and up | Any | Plus / Pro / Business / Enterprise / Edu — no Free |
| Scope | Per user, or org-wide by an Owner | Per user, across all projects | Per user, selected per conversation |
| Interactive cards | Rendered | Not rendered | Not rendered |
https://mcp.sokin.com/mcp over Streamable HTTP and let| Field | Value |
|---|---|
| Transport | Streamable HTTP |
| Protocol | JSON-RPC 2.0 (MCP) |
| Authentication | OAuth 2.1 + PKCE; the client identifies itself with a Client ID Metadata Document (CIMD) |
| Tools | 26 |
| Session model | Stateless — no session to keep open. Your client's support for interactive cards is remembered for 24 hours after each initialize |
Accept header must include both content types. SendAccept: application/json, text/event-stream. Leave out the second value406 Not Acceptable.text/event-stream with the result in a data: event, not as a plaininitialize first. Most calls work without it, but initializecreate_fx_quote and settle_fx_quote| Endpoint | Purpose |
|---|---|
https://mcp.sokin.com/.well-known/oauth-protected-resource/mcp | Names this server's resource identifier, https://mcp.sokin.com/mcp, and the authorization server that issues its tokens, https://auth.sokin.com/ |
https://auth.sokin.com/.well-known/oauth-authorization-server | The authorization server's own metadata: its authorize and token endpoints, and its support for Client ID Metadata Documents |
/mcp without a valid token is answered 401, with aWWW-Authenticate header pointing at the first of those documents.registration_endpoint, but registration there is switched off.S256).resource parameter as https://mcp.sokin.com/mcp. Tokens areoffline_access to receive a refresh/mcp are additionally gated by Host-header checks421, not401 — if you see a 421, check the Host header before you start debuggingShow me the balances across all my Sokin accounts.
list_corporates, which returnslist_accounts, which returns| Currency | Balance | Available |
|---|---|---|
| GBP | 48,200.00 | 47,150.00 |
| EUR | 15,400.00 | 15,400.00 |
| USD | 12,000.00 | 11,750.00 |
corporateReferencelist_accounts — many other tools need one,list_corporates is where one comes from.get_instruction, or watch the card, which keeps tracking it until it isclaude mcp remove sokin.| Symptom | Fix |
|---|---|
| URL rejected when adding the connector | Include the full URL with the trailing /mcp, and choose OAuth where the client asks |
| Sign-in fails | Use your Sokin login, the one you use for the Sokin portal. If you are on a VPN, turn it off for the sign-in step |
| ChatGPT: sign-in fails right after creating the app | Check the app's Registration method is CIMD, not DCR — Sokin does not offer DCR |
| No tools listed | Open the connector's details page, refresh the tool list, and make sure the tools are toggled on |
| "No accessible corporates", or an empty result | Your login is not linked to a corporate — ask your Sokin contact |
| ChatGPT: no Developer mode toggle | You are on Free, or an admin has not enabled it for your workspace |
| ChatGPT: the app is missing in a chat | Re-select it from the chat's + menu (under Developer mode if you created it yourself); it is chosen per conversation |
| A payment card says the payment may already have gone out | A submission with the same details is still running, or Sokin did not confirm the result. Do not send it again. Wait a few minutes, press Check again, or ask your assistant to look it up with list_instructions |
| A payment card says it couldn't check the payment's status | Press Try again. If it keeps failing, ask your assistant to look for the payment with list_instructions before preparing it again: it may already have been sent |
421 instead of 401 | A Host-header mismatch, not a token problem. Check the Host header your client sends |
406 Not Acceptable | Your Accept header is missing text/event-stream. If the request succeeds but your client cannot read the answer, it is not handling SSE: the result is in a data: event |