Money actions
18 actions. Each action calls the same API route with the same scopes on every surface.
money_accounts
Section titled “money_accounts”List accounts.
| Route | GET /api/v1/money/budgets/{budget_id}/accounts |
| Tool name | calternal_api_money_accounts |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | read only |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes |
calternal action run money_accounts --input '{"path":{"budget_id":"<budget_id>"}}' --jsonmoney_assign
Section titled “money_assign”Set a Category Assignment. Body fields: amount..
| Route | PUT /api/v1/money/budgets/{budget_id}/months/{month}/categories/{category_id}/assigned |
| Tool name | calternal_api_money_assign |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes | |
category_id |
string |
yes | |
month |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
amount |
integer, int64 |
yes | Minor units; may be negative. |
calternal action run money_assign --input '{"path":{"budget_id":"<budget_id>","month":"<month>","category_id":"<category_id>"}}' --confirm --jsonmoney_create_account
Section titled “money_create_account”Create an account. Body fields: kind, name, opening_balance, opening_date..
| Route | POST /api/v1/money/budgets/{budget_id}/accounts |
| Tool name | calternal_api_money_create_account |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
kind |
string |
yes | cash, card or tracking. |
name |
string |
yes | Display name. |
opening_balance |
integer | null, int64 |
no | Opening balance in minor units (a Card account’s debt is negative). |
opening_date |
string | null |
no | Date of the opening balance YYYY-MM-DD (required with a balance). |
calternal action run money_create_account --input '{"path":{"budget_id":"<budget_id>"}}' --confirm --jsonmoney_create_budget
Section titled “money_create_budget”Create a budget. Body fields: currency, name..
| Route | POST /api/v1/money/budgets |
| Tool name | calternal_api_money_create_budget |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
body
| Field | Type | Required | Description |
|---|---|---|---|
currency |
string |
yes | Budget currency, ISO 4217 (for example EUR). |
name |
string |
yes | Budget name; also the folder name. |
calternal action run money_create_budget --input '{}' --confirm --jsonmoney_create_category
Section titled “money_create_category”Create a Category. Body fields: group, name..
| Route | POST /api/v1/money/budgets/{budget_id}/categories |
| Tool name | calternal_api_money_create_category |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
group |
string |
yes | Group name. |
name |
string |
yes | Category name. |
calternal action run money_create_category --input '{"path":{"budget_id":"<budget_id>"}}' --confirm --jsonmoney_create_transaction
Section titled “money_create_transaction”Create a transaction. Body fields: account_id, amount, category_id, cleared, date, notes, payee..
| Route | POST /api/v1/money/budgets/{budget_id}/transactions |
| Tool name | calternal_api_money_create_transaction |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
account_id |
string |
yes | Account ID (in the budget currency). |
amount |
integer, int64 |
yes | Minor units: outflow negative, inflow positive. |
category_id |
string |
yes | Expense, income or opening-balance category ID. |
cleared |
boolean | null |
no | Cleared flag (#cleared); defaults to false. |
date |
string |
yes | Date YYYY-MM-DD. |
notes |
string | null |
no | Separate notes; omitted on an edit to preserve existing notes (#1130). |
payee |
string |
yes | Payee text; transaction Notes use their own field (#1130). |
calternal action run money_create_transaction --input '{"path":{"budget_id":"<budget_id>"}}' --confirm --jsonmoney_delete_transaction
Section titled “money_delete_transaction”Delete a transaction.
| Route | DELETE /api/v1/money/budgets/{budget_id}/transactions/{transaction_id} |
| Tool name | calternal_api_money_delete_transaction |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes | |
transaction_id |
string |
yes |
calternal action run money_delete_transaction --input '{"path":{"budget_id":"<budget_id>","transaction_id":"<transaction_id>"}}' --confirm --jsonmoney_import_cancel
Section titled “money_import_cancel”Discard one prepared import and release its owner-bound pending slot (#462)..
| Route | DELETE /api/v1/money/imports/{import_id} |
| Tool name | calternal_api_money_import_cancel |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
import_id |
string |
yes |
calternal action run money_import_cancel --input '{"path":{"import_id":"<import_id>"}}' --confirm --jsonmoney_import_confirm
Section titled “money_import_confirm”Consume the owner’s preview and publish its files through calternal-fs. A request from another User must not consume or modify the preview; expiry is checked only after ownership is established (#462, DESIGN §48).. Body fields: confirm_inferred_opening_balances..
| Route | POST /api/v1/money/imports/{import_id}/confirm |
| Tool name | calternal_api_money_import_confirm |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
import_id |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
confirm_inferred_opening_balances |
boolean |
yes |
calternal action run money_import_confirm --input '{"path":{"import_id":"<import_id>"}}' --confirm --jsonmoney_import_job_cancel
Section titled “money_import_job_cancel”Cancel an in-flight import. The parser stops at its next bounded checkpoint..
| Route | DELETE /api/v1/money/imports/jobs/{job_id} |
| Tool name | calternal_api_money_import_job_cancel |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
string |
yes |
calternal action run money_import_job_cancel --input '{"path":{"job_id":"<job_id>"}}' --confirm --jsonmoney_import_preview
Section titled “money_import_preview”Read an export form and retain verified Markdown under an owner-bound token. Source mismatches must not reach confirmation: a successful codec round trip alone does not prove that the source totals were preserved (#462, DESIGN §48)..
| Route | POST /api/v1/money/imports/preview |
| Tool name | calternal_api_money_import_preview |
| Surfaces | none (browser flow only) |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request base64, response json |
query
| Field | Type | Required | Description |
|---|---|---|---|
progress_id |
string |
no |
body: string. Base64 encoded bytes; send large uploads in chunks
money_import_progress
Section titled “money_import_progress”Read one in-flight import’s safe progress without exposing its source data..
| Route | GET /api/v1/money/imports/jobs/{job_id} |
| Tool name | calternal_api_money_import_progress |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | read only |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
job_id |
string |
yes |
calternal action run money_import_progress --input '{"path":{"job_id":"<job_id>"}}' --jsonmoney_list_budgets
Section titled “money_list_budgets”List budgets.
| Route | GET /api/v1/money/budgets |
| Tool name | calternal_api_money_list_budgets |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | read only |
| Encoding | request none, response json |
calternal action run money_list_budgets --input '{}' --jsonmoney_month
Section titled “money_month”Read a budget month.
| Route | GET /api/v1/money/budgets/{budget_id}/months/{month} |
| Tool name | calternal_api_money_month |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | read only |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes | |
month |
string |
yes |
calternal action run money_month --input '{"path":{"budget_id":"<budget_id>","month":"<month>"}}' --jsonmoney_move
Section titled “money_move”Move an Assignment between Categories. Body fields: amount, from_category_id, to_category_id..
| Route | POST /api/v1/money/budgets/{budget_id}/months/{month}/moves |
| Tool name | calternal_api_money_move |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes | |
month |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
amount |
integer, int64 |
yes | Minor units, greater than zero. |
from_category_id |
string |
yes | Category that gives the money. |
to_category_id |
string |
yes | Category that receives it. |
calternal action run money_move --input '{"path":{"budget_id":"<budget_id>","month":"<month>"}}' --confirm --jsonmoney_set_cleared
Section titled “money_set_cleared”Set a transaction cleared state. Body fields: account_id, cleared..
| Route | PUT /api/v1/money/budgets/{budget_id}/transactions/{transaction_id}/cleared |
| Tool name | calternal_api_money_set_cleared |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes | |
transaction_id |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
account_id |
string | null |
no | Select a transfer leg; absent means the primary Account (#1130). |
cleared |
boolean |
yes | New cleared state. |
calternal action run money_set_cleared --input '{"path":{"budget_id":"<budget_id>","transaction_id":"<transaction_id>"}}' --confirm --jsonmoney_transactions
Section titled “money_transactions”List transactions.
| Route | GET /api/v1/money/budgets/{budget_id}/transactions |
| Tool name | calternal_api_money_transactions |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | read only |
| Encoding | request none, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes |
query
| Field | Type | Required | Description |
|---|---|---|---|
account_id |
string |
no | |
month |
string |
no |
calternal action run money_transactions --input '{"path":{"budget_id":"<budget_id>"}}' --jsonmoney_update_transaction
Section titled “money_update_transaction”Update a transaction. Body fields: account_id, amount, category_id, cleared, date, notes, payee..
| Route | PUT /api/v1/money/budgets/{budget_id}/transactions/{transaction_id} |
| Tool name | calternal_api_money_update_transaction |
| Surfaces | cli, mcp, webmcp |
| Scopes | data |
| Effect | destructive, needs --confirm |
| Encoding | request json, response json |
path
| Field | Type | Required | Description |
|---|---|---|---|
budget_id |
string |
yes | |
transaction_id |
string |
yes |
body
| Field | Type | Required | Description |
|---|---|---|---|
account_id |
string |
yes | Account ID (in the budget currency). |
amount |
integer, int64 |
yes | Minor units: outflow negative, inflow positive. |
category_id |
string |
yes | Expense, income or opening-balance category ID. |
cleared |
boolean | null |
no | Cleared flag (#cleared); defaults to false. |
date |
string |
yes | Date YYYY-MM-DD. |
notes |
string | null |
no | Separate notes; omitted on an edit to preserve existing notes (#1130). |
payee |
string |
yes | Payee text; transaction Notes use their own field (#1130). |
calternal action run money_update_transaction --input '{"path":{"budget_id":"<budget_id>","transaction_id":"<transaction_id>"}}' --confirm --json