set_portfolio_charter
Write a new version of the wallet's portfolio charter (free control-plane write).
Creates a new active version -- the prior version stays in history,
never deleted (versioned mandate, not an in-place overwrite).
risk_band is one of conservative|balanced|aggressive. banned_tokens
merge into AgentWallet.evaluate_trade as an ADDITIONAL deny source
alongside WalletPolicy.banned_tokens -- an active WalletPolicy always
wins when it is the stricter rule; a charter can never loosen an
existing policy, and a conflict comes back in the response's
warnings (logged server-side, never silently dropped).
target_allocations is {token: percent}, must sum to <=100.
objectives/cadence are free-form parameters -- never phrase them as
return promises (hard rules 5-8).
Setting an escalation_webhook mints a platform-generated escalation_webhook_secret used to HMAC-SHA256-sign every escalation POST (X-Crank-Signature over "{timestamp}.{body}"). The RAW secret is returned exactly once -- in this write's response -- so the receiver can be configured; every later read returns it masked. It is carried forward unchanged when the URL is unchanged, rotated automatically when the URL changes, and rotated on demand with rotate_escalation_secret=true. It is a receiver-authentication credential, never wallet key or seed material (hard rule 1).
Workflow: ORIENT step 0 -- set once at the start of a relationship with an agent/wallet; strategies read it on every execute_strategy tick (see get_trading_workflow).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cadence | No | ||
| caller_id | No | ||
| risk_band | No | ||
| objectives | No | ||
| banned_tokens | No | ||
| body_markdown | No | ||
| wallet_address | Yes | ||
| max_position_pct | No | ||
| escalation_webhook | No | ||
| target_allocations | No | ||
| rotate_escalation_secret | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||