Capital markets
Capital Intent.
The capital-markets analog of an AP2 Intent Mandate. A signed, expiring authorization that says "acquire / exit / rebalance / hedge / yield this basket, subject to these regulatory constraints, KYA, and ceilings." Solvers bid; an assigner picks one; the intent runs Open → Quote → Assign → Execute → Verify → Settle (with Compensate on dispute).
- STATUS
- Testnet
- CRATE
- tenzro-types::capital_intent
- STABILITY
- Stable
- TYPE
- Component
01
Objective shapes
Acquire { basket: Vec<AssetWeight> }
Exit { basket: Vec<AssetWeight> }
Rebalance { target: Vec<AssetWeight> }
Hedge { basket: Vec<AssetWeight> }
Yield { basket: Vec<AssetWeight> }02
Lifecycle
Open → Quoted → Assigned → Executing → Verifying (or Compensating) → Settled.
03
RPCs
tenzro_capitalIntentOpen
tenzro_capitalIntentQuote
tenzro_capitalIntentAssign
tenzro_capitalIntentExecute
tenzro_capitalIntentVerify
tenzro_capitalIntentCompensate
tenzro_capitalIntentSettle
tenzro_getCapitalIntent04
Reserve attestation
Tokenized assets backed 1:1 by off-chain reserves. Attesters submit reserve attestations; mints are gated by a fresh attestation.
tenzro_submitReserveAttestation { attestation }
tenzro_getReserve { asset_id }
tenzro_attestedMint { token_id, to, amount, caller }05
CLI
tenzro capital open --intent @intent.json
tenzro capital quote <intent_id> <solver_did> --plan "..." --price 1000 --eta-secs 60
tenzro capital assign <intent_id> --auto --payer 0x... --payee 0x...
tenzro capital execute <intent_id> @leg.json
tenzro capital verify <intent_id>
tenzro capital settle <intent_id> --payee 0x...
tenzro capital reserve submit @attestation.json
tenzro capital mint <token_id> <to> <amount> <caller>06
SDK
// Rust
let opened = client.capital().open(intent_json).await?;
client.capital().assign(intent_id, None, true, Some(payer), Some(payee)).await?;
client.capital().execute(intent_id, leg_json).await?;
client.capital().settle(intent_id, None).await?;
// TypeScript
const opened = await client.capital.open(intent);
await client.capital.assign(opened.intent_id, { auto: true, payer, payee });
await client.capital.execute(opened.intent_id, leg);
await client.capital.settle(opened.intent_id);Related