The MCP server can now create and change cards, with an mcp:write key
createUserCards and updateUserCard — the first writes
The MCP server used to be read-only. Two tools now change something, and both
need the new mcp:write scope, checked on every call. Existing keys are
unaffected: without the scope a key connects exactly as before, and is refused
only when a write is attempted.Scopes are fixed when a key is created and can’t be added to an existing one.
To start writing, create a new key at
Settings → API keys
with MCP + Write selected, then revoke the old one.createUserCards
Creates one card, or queues a batch of up to 30. A single card comes back
immediately; a batch doesn’t, since issuing thirty cards outlives the request.
You get a batchId instead, and call the same tool with that id to read the
batch’s progress (cardsCreated, cardsFailed, cardIds). Nothing is created
when batchId is set.Retrying is safe without an idempotency key: a batch already running with the
same recipe and size is returned (alreadyRunning: true) rather than queued a
second time.Name a batch with nicknamePrefix (plus optional nicknameStartAt and
nicknamePadding) — nickname would repeat the same label on all 30 cards.Bulk is a business-account feature. Without it, a quantity above 1 creates
one card and the response says so — created, requested and
bulkUnavailable: true, alongside the card.updateUserCard
Changes one card per call: status, nickname, spendingLimit,
spendingInterval. It returns the card’s state after the change, so you don’t
have to list cards again to see the result.canceled is permanent. To stop a card temporarily, use inactive or
locked — both reversible with active.One less id to pass
You no longer need to send acardIssuerUserId: if your account has a single
card-issuer account it’s filled in for you. If it holds more than one, the tool
lists the ids you can choose from.getCashbackSummary: cashback, with pending broken out
getCashbackSummary — your LootRush Rewards cashback
Cashback was visible on the site but nowhere in the API. The new
getCashbackSummary returns it across every enrolled card-issuer
account, and it also comes back as a cashback section on
getAccountBalance and getUserCards — the same treatment cardBalance gets.Four cashback balances, not one “pending”
Cashback isn’t a single balance with a pending amount. It has four states, and only one of them is money the cardholder can use today:total is the headline (available + redeeming), taken as-is from the same
source the site shows, so it can’t drift from it.Also returned: expiring (the soonest slice about to lapse), and
monthProgress — this month’s spend buckets with their rate ladder, which is
what answers “what rate am I on”.enrolled: false is not “zero”
An account with no cashback-active card issuer gets zeros and
enrolled: false. Those zeros mean cashback is not switched on, which is a
different answer from earned nothing. Read the flag before quoting the
number.No card ids
The tool takes nocardId or cardIssuerUserId — enrollment is resolved from
your identity server-side. The only parameter is an optional month
(YYYY-MM) for the rate ladder.Currencies are never added together
If your accounts disagree about currency, the headline fields stay zero and abyCurrency array carries the real per-currency split.aggregate: totals without paging
aggregate — totals over your whole slice, in one call
The listing tools return rows, so answering “how much did I spend last month”
meant paging every one of them and adding up client-side — slow, and wrong the
moment a page is missed. The new aggregate tool returns the number
instead, computed over the whole filtered set.- Ops:
sum,count,avg,min,max,median. - Break it down by a column (
groupBy) or by time (timeBucket:day,week,month). - Sources:
cardTransactionsandaccountHistory.
Listing responses now carry a datasetId
getUserCardTransactions and getAccountHistory return a datasetId
alongside their rows, plus aggregatable, groupable and ops describing
what you can ask of them.Pass that handle to aggregate and the total covers exactly the slice you just
listed — the handle stores that call’s filters, never its rows, and expires
after 15 minutes. You can also skip the listing entirely and pass source +
filters straight to aggregate.Three things to know about the numbers
- A partial result says so. If the slice exceeded the row cap the response
carries
complete: falsewith the coverage it does have. Check it before quoting the number. - Currencies are never merged. Amounts in different currencies come back as separate entries.
- Declined card attempts don’t count as spend. Money columns on
cardTransactionsare split bystatusunless you pin one — onlysettled(andon_hold, still authorising) is money that left the account.
MCP card tools + card balance
New card tools on the MCP server
Three new read-only tools give your AI assistant a full view of your card balance and its history — the data the LootRush app shows, now available over MCP.getUserCardBalanceMovements— your card balance (collateral) ledger. Each entry carries its running balance and previous balance — the statement-style running total that card transactions don’t include. Results are grouped per card issuer so each running-balance series stays coherent. OptionalcardIssuerUserId,page/pageSize,startDate/endDate.getUserCardSummary— a point-in-time snapshot of your cards: per-card balance, status, and limits as of any instant (asOf, defaults to now).getUserCardBalanceAutomation— your spending-limit auto-refill history: each automatic balance top-up (amount, status, retries, on-chain tx hash, and when it ran).
Card balance now in getAccountBalance and getUserCards
Both tools now return a normalized cardBalance block —
{ total, pendingDeposit, pendingWithdraw } — the card collateral shared
across your cards. In getAccountBalance it is reported as its own bucket
and is not added into totalUsdValue (which stays crypto + tokenized +
available wallet stablecoins).The getAccountBalance reference now also covers the availableStableUsdValue
and stableCoins fields (your live on-chain wallet stablecoins), and
getUserCards returns the raw balances payload alongside cardBalance when
you need the licensed / non-licensed split.See the MCP Server reference for the full field
and parameter tables.