Lifecycle
Financial Action = Intent + wallet_order
Intent is the user goal; wallet_order is what Torque commits.
Lifecycle Stages
| Stage | Summary | Constraint |
|---|---|---|
| READ | State + intelligence | Read-only. No wallet_order produced. |
| DECIDE | Intent → executable plan | No settlement. Outputs draft wallet_order only. |
| EXECUTE | Final settlement | Commits wallet_order. Financial Action completes. |
- READ: Portfolio and market context → Intent
- DECIDE: Assistant → functionResults (draft wallet_order)
- EXECUTE: Actions settlement (on_chain or merchant)
Intent Types
Intent is the user goal. DECIDE resolves it; EXECUTE commits the matching wallet_order through Actions. The wallet_order channel selects on_chain vs merchant, not a separate product API.
| Intent | Description | DECIDE | EXECUTE Channel |
|---|---|---|---|
| swap | Exchange one asset for another | trade (functionResults may show swap_tokens) | on_chain |
| transfer | Send assets to a wallet or address (peer) | transfer (functionResults may show transfer_tokens) | on_chain |
| lend | Supply assets for yield | lend (functionResults may show lend_tokens) | on_chain |
| borrow | Borrow against collateral | borrow (functionResults may show borrow_tokens) | on_chain |
| pay | Settle a merchant order (buyer → merchant) | torque-checkout SDK (merchant server) | merchant |
transfer → on_chain (wallet JWT); pay → merchant (business key). Same move-value, different auth.
Wallet Order
Draft in DECIDE (functionResults); committed in EXECUTE via Actions (on_chain or merchant).
| Field | Description |
|---|---|
| intentType | swap | transfer | lend | borrow | pay |
| status | draft (DECIDE) → committed (EXECUTE) |
| channel | on_chain → POST /execute/**; merchant → torque-checkout SDK + order webhooks |
| requiresConfirmation | true for value-moving drafts from Assistant |
| transaction | Prepared tx body (on_chain channel) or checkout session (merchant) |
| chainId | Target chain for on_chain orders |
// DECIDE output (draft wallet_order, on_chain)
{
"toolName": "transfer_tokens",
"result": {
"success": true,
"requiresConfirmation": true,
"intentType": "transfer",
"status": "draft",
"channel": "on_chain",
"chainId": 8453,
"transaction": { ... }
}
}
// pay: merchant channel; DECIDE via Checkout SDK (not Assistant)
{
"intentType": "pay",
"status": "draft",
"channel": "merchant",
"checkoutSession": { ... }
}Execution Tiers
draft
DECIDE
wallet_order in functionResults; plan only, no settlement
committed
EXECUTE
wallet_order submitted; value moves or state changes
Actions Channels
EXECUTE is one surface (Actions) with two channels. Both finalize a wallet_order. Intent pay always uses merchant; swap / transfer / lend / borrow use on_chain.
| Surface | Channel | Routes | Auth |
|---|---|---|---|
| Actions | on_chain | POST /api/v1/execute/** (alias /actions/**) | Smart Wallet JWT |
| Actions | merchant | torque-checkout SDK, POST /api/webhooks/order-update | sk_live_… + Business ID |
| Tool Name | EXECUTE Route | Channel |
|---|---|---|
| trade (alias swap_tokens) | POST /api/v1/execute/trades | on_chain |
| trade / swap_tokens (Solana) | POST /api/v1/execute/trades/solana | on_chain |
| transfer (alias transfer_tokens) | POST /api/v1/execute/transfers/evm | on_chain |
| transfer (alias transfer_tokens, Solana) | POST /api/v1/execute/transfers/solana | on_chain |
| lend (alias lend_tokens) | POST /api/v1/execute/lends/evm | on_chain |
| borrow (alias borrow_tokens) | POST /api/v1/execute/borrows/evm | on_chain |
| torque-checkout SDK (pay) | Checkout session + POST /api/webhooks/order-update | merchant |
READ: Portfolio
Portfolio state is READ-only: the unified ledger exposed to integrators. It informs Intent but does not produce a wallet_order. See How It Works for how balances aggregate behind this surface.
GET /api/v1/wallet/me: Smart Wallet JWTwalletAddressin Assistantcontext: business key
Also see Intelligence for feed, dataset, and market READ profiles.
Boundary Rules
If it does not produce or contribute to a wallet_order, it is not part of EXECUTE.
| Category | Examples | Why |
|---|---|---|
| READ-only responses | GET /intelligence/feed, GET /data/*, GET /wallet/me | Context only; no wallet_order |
| Assistant text-only replies | content without functionResults | Intent answered; no draft wallet_order |
| System metadata | GET /health, GET /capabilities, GET /openapi | Discovery, not execution |
| Rate tiles without commit | Opportunities GET without downstream EXECUTE | READ context, not a wallet_order |