Build on Savi Finance. Connect AI assistants with the Savi MCP server or call the Savi JSON-RPC API.
Export this page as Markdown or bundle it with a task for your agent.
Preview the prompt that will be copied
https://api-v2.financesavi.com/rpc.Quickstart: MCP
Add https://mcp.financesavi.com/mcp as a remote MCP server in any client that supports the Model Context Protocol. The client discovers the authorization server, registers itself, and sends you to Savi to sign in with an emailed code. No token to copy. Pick your client:
claude mcp add --transport http savi https://mcp.financesavi.com/mcpMore in the MCP guide.
Quickstart: API
- Check connectivity.
pingis public, so it needs no token. Press Send live request to call the live API, or copy the snippet.
https://api-v2.financesavi.com/rpcPubliccurl -sS --max-time 30 -X POST 'https://api-v2.financesavi.com/rpc' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"ping","params":{},"id":1}'Captured response
$ POST https://api-v2.financesavi.com/rpc (ping)
HTTP 200
{
"jsonrpc": "2.0",
"result": {
"reply": "pong"
},
"id": 1
}Observed from the production API. This preview does not send a request.
- Get a token. Two calls: request an emailed code, then exchange it. Follow Get an API token.
- Call an authenticated method. With a token saved in this tab, this panel lists your most recent transactions:
https://api-v2.financesavi.com/rpcRequires tokencurl -sS --max-time 30 -X POST 'https://api-v2.financesavi.com/rpc' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $SAVI_TOKEN" \
-d '{"jsonrpc":"2.0","method":"listTransactions","params":{"pagination":{"limit":10,"skip":0}},"id":1}'The snippets read your token from the SAVI_TOKEN environment variable, so it is never pasted into code. Run export SAVI_TOKEN=<your token> first.
No token yet? Get one in two calls. The token stays in this tab and is only sent to api-v2.financesavi.com. Using it sends a read-only getCurrentUser request to find your user id.
Captured response
$ POST https://api-v2.financesavi.com/rpc (listTransactions)
HTTP 200
{
"jsonrpc": "2.0",
"result": {
"transactions": [
{
"id": "tx_9bLm4Rt7Yc",
"accountId": "account_5kQe2Xv9Lm",
"name": "Coffee Shop",
"amount": -450,
"currency": "CAD",
"source": "MANUAL",
"category": "FOOD",
"type": "EXPENSE",
"categoryId": "cat_3nTq8Wd2Zs",
"categoryDecision": {
"source": "USER",
"locked": true,
"decidedAt": "2026-10-01T15:48:50.481Z",
"lockedAt": "2026-10-01T15:48:50.481Z"
},
"transactedAt": "2026-10-01T09:30:00Z",
"createdAt": "2026-10-01T15:48:50.481Z",
"updatedAt": "2026-10-01T15:48:50.481Z",
"fileIds": [],
"isApproved": true,
"tagIds": [],
"lineItems": [],
"activityLog": [],
"oneOffSplitParticipants": [],
"netAmount": -450,
"refundStatus": "NONE"
}
],
"numItems": 1
},
"id": 1
}Captured from the local sf1/api service and scrubbed. This preview does not send a request.