MCP tool reference
The SorenPay MCP server has five tools. All of them are read-only. This
page matches what the server lists in its tools/list response.
What every tool returns
A successful tools/call returns a result with two content blocks:
{ "type": "text", "text": "…" }: a short human-readable summary.{ "type": "json", "data": … }: the full data the summary came from.
Inputs are checked before the tool runs. Unknown fields, wrong types or
out-of-range numbers return invalid_arguments (code -32602) with the list
of problems in error.data.issues. A key without the tool's scope gets
missing_scope:<scope> (code -32001).
The second block uses type: "json", which isn't one of the content types
in the MCP spec. Most assistants read the text summary; clients that strictly
validate tool results may report an error instead. Moving the data to a
spec-standard block is planned.
get_treasury
read:treasury
How much the workspace can spend right now, plus money on its way in, money on hold, and card spend this month. Use it for "how much do we have?".
Inputs: none. Pass {}.
Output
- Text: spendable USD balance (with the time it was last confirmed), incoming, held, the stablecoin ledger balance (marked unverified and not spendable), and month-to-date card spend.
- JSON
data.snapshot:fiatUsdCents(spendable),stablecoinUsdCents,totalUsdCents(equals the spendable USD figure; stablecoins are never added in),monthSpendUsdCents. All amounts are US cents. - JSON
data.balances: one entry for the USD account and one for the stablecoin ledger, each withavailable(cents,asOf, andclampedwhen an open reconciliation check is limiting the figure),incomingandheld.
{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "get_treasury", "arguments": {} }
}{
"jsonrpc": "2.0", "id": 1,
"result": {
"content": [
{ "type": "text", "text": "Treasury for ws_…\n … available (spendable): $12,480.50 …" },
{ "type": "json", "data": {
"snapshot": {
"fiatUsdCents": 1248050,
"stablecoinUsdCents": 0,
"totalUsdCents": 1248050,
"monthSpendUsdCents": 231400
},
"balances": [ … ]
} }
]
}
}get_recent_activity
read:treasury
The latest money movements on the workspace's accounts: card settlements, deposits, fees, withdrawals and USDC conversions. Use it to reconcile or to answer "what did we spend on?".
Inputs
| Field | Type | Required | Notes |
|---|---|---|---|
limit | integer | no | 1 to 200. Default 25. |
Output: text Last N ledger entries. and a JSON array, newest first.
Each entry has id, source (which account), direction (credit or
debit), amountCents, reference, cardId (when a card was involved),
postedAt, createdAt, plus state and kind of the transfer it belongs to.
{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": { "name": "get_recent_activity", "arguments": { "limit": 10 } }
}list_cards
read:cards
The workspace's virtual and physical cards, newest first. Use it for "which cards are frozen?" or "what's the limit on the travel card?".
Inputs
| Field | Type | Required | Notes |
|---|---|---|---|
state | string | no | active, frozen, shipping or terminated |
limit | integer | no | 1 to 100. Default 25. |
limit is applied first, then state: you get the matching cards among the
newest limit cards.
Output: text Found N cards. and a JSON array of cards with id,
type (virtual or physical), holderKind (agent or human),
holderLabel, last4, state, mode, perTxnLimitCents,
monthlyLimitCents, allowedMccs, allowedMerchants and createdAt. Full
card numbers are never included.
{
"jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": { "name": "list_cards", "arguments": { "state": "frozen" } }
}list_agents
read:agents
The agents registered in the workspace. Use it for "which agents can spend for us?".
Inputs: none. Pass {}.
Output: text N registered agents. and a JSON array, newest first, with
id, agentName, status (active, frozen or terminated), protocols
(TAP, MPP, ACP), keyFingerprint (the agent's public key ID; private
keys are never stored) and createdAt.
[
{
"id": "agt_…",
"agentName": "travel-booker",
"status": "active",
"protocols": ["TAP", "MPP", "ACP"],
"keyFingerprint": "9f2c41…",
"createdAt": "2026-09-30T14:02:11.000Z"
}
]list_checkout_sessions
read:checkout
Checkout sessions, newest first. Use it for "which customer payments are still open?".
Inputs
| Field | Type | Required | Notes |
|---|---|---|---|
status | string | no | pending, awaiting_payment, confirming, completed, expired, underpaid or failed |
limit | integer | no | 1 to 100. Default 25. |
As with list_cards, limit is applied before the status filter.
Output: text Found N checkout sessions. and a JSON array of sessions
with id, merchantReference, amountUsdCents, status, expiresAt,
description, the accepted and selected assets, and payment confirmation
details once paid.
{
"jsonrpc": "2.0", "id": 5, "method": "tools/call",
"params": { "name": "list_checkout_sessions", "arguments": { "status": "awaiting_payment", "limit": 10 } }
}Planned
These don't exist yet. They'll ask you to confirm before they run.
| Tool | Would need | What it would do |
|---|---|---|
mint_card | write:cards | Issue a card with limits |
submit_intent | write:agents | Submit a signed agent payment |
create_checkout_session | write:checkout | Open a checkout for a customer |
originate_intl_payment | write:treasury | Send an international payment |