Propose a target allocation change (user approves)
set_target_allocationPropose a change to the user's target allocation - the plan they mean to hold. This REPLACES the whole plan: send every target you want to keep, not just the ones you are changing, because any subject you omit is deleted. Send an empty rows to delete the plan entirely. dim must be "asset" (subjects are tickers) or "sector" (subjects are our sector names - call get_target_allocation first if you are unsure which axis their plan uses). This does NOT take effect when you call it: it returns a link the user has to open and approve themselves, so tell them to open it. Read get_target_allocation first so you are editing their real plan rather than guessing at it.
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": {
"dim": "<dim>",
"rows": "<rows>"
},
"name": "set_target_allocation"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dim | Yes | Which axis the plan is on. Every subject must belong to this axis. | |
| rows | Yes | The COMPLETE plan. Anything omitted is removed. | |
| profile | No | Which portfolio to read, for accounts with more than one: its id, or its name (exact, case-insensitive, e.g. "Trading"). Omit to read this connection's default portfolio; every answer names the portfolio it read in `profile`. An unknown or shared name returns profile_not_found or profile_ambiguous listing the real ones, and list_profiles shows them up front. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | Present ONLY when the call was refused instead of answered: upgrade_required (Pro plan needed), not_found, profile_not_found, profile_ambiguous, invalid_arguments, write_not_permitted. No data fields come with it; read `message` to the user rather than retrying the same call. | |
| title | No | What the change does. | |
| status | No | Always this: nothing has been applied yet. | |
| message | No | Plain-language explanation that accompanies `error`, `data_status` or a proposed change. Read it to the user. | |
| preview | No | Courtesy diff; the authoritative one is on the confirm page. | |
| profile | No | The portfolio these figures belong to (absent on list_profiles). | |
| next_step | No | What the user should do about data_status. | |
| expires_at | No | When the link stops working, epoch ms. | |
| source_url | No | Link to the page in the WhereItGoes app that shows this data. | |
| confirm_url | No | The link the user must open and approve; tell them to open it. | |
| data_status | No | Present only when the portfolio has no data yet. nothing_connected: no exchange and no wallet is connected, so empty lists and zeros mean "no data", NOT a $0 portfolio, and no data fields come with it (except on get_connections, get_alerts, get_target_allocation and list_profiles, which also answer). Send the user to next_step. syncing: a source is connected but its first sync is still running, so figures are partial and not final. | |
| upgrade_url | No | Where the user can upgrade, on an upgrade_required refusal. | |
| stock_assets | No | Present when the answer mentions Binance Stocks shares (EQ_<ticker>): they are US stocks, not crypto. |