upload-budget-entries
Insert or update budget entries (monthly values) for a plan. Exactly one of category, account, or knw_row_number must be set per entry. An account entry may name one sub-account as part of the account, e.g. "8400/130" (slash, as shown in the app) — there is no separate sub_account parameter. The main account is sub-account 000: "8400" and "8400/000" mean the same and are compared against the actuals of the main account ONLY (not the sum of the sub-accounts; main-account and sub-account entries never overlap). If the account has no main account but exactly ONE sub-account, that one is used; if it has SEVERAL, the entry is rejected (BUDGET_ACCOUNT_AMBIGUOUS, the sub-accounts are listed) — name one ("8500/130"). A sub-account that does not exist for the tenant is rejected (BUDGET_ACCOUNT_UNKNOWN). An account unknown to the tenant is still accepted. Amounts are signed (expenses negative); plans created from a file upload that store expenses as positive magnitudes are rejected. For a forecast plan (type=forecast) the entries must cover the ACTUAL values of the closed months plus the forecast of the remaining months — read the closed months e.g. via get_periodic_summaries (category_totals) and include them as category entries; a forecast without the closed months makes the year/YTD comparison wrong. A category name that matches no P&L label is rejected with the list of valid category names and nothing is written.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"plan_id": "<plan_id>",
"entries": "<entries>"
},
"name": "upload-budget-entries"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | Budget entries to upsert | |
| plan_id | Yes | UUID of the target budget plan |