---
name: oracle-action-arming
description: Use when arming Oracle actions via oracle_control_arm.
---

> Oracle native tools: `oracle_cli` (read/prepare), `vault_status`, `signer_status`, `signer_execute` (needs human confirmationNonce), `skill_load`. No generic shell. No fleet SSH.


# Oracle action arming

Two-step control-plane workflow for armed execution actions. Complements
`oracle-action-semantics` (vocabulary) and `oracle-grants` (authorization bounds).

## Two-step flow

1. **Arm** — `oracle_control_arm` creates an action in `pending_confirmation`.
2. **Confirm** — `oracle_control_confirm(id, intentHash)` activates it.

Until confirmed, the action is inert. After confirmation: `state: "active"`,
`actionMode: "execute"`.

## Schema gotchas

- `trigger.type` MUST be a non-empty string. Fails with `trigger.type must be a non-empty string` otherwise.
- `policy.caps` MUST be a decimal number (e.g. `0.1`), NOT an object. Fails with `policy.caps must be a decimal` otherwise.
- `intent` is an open object — include `action`, `token`, `chainId`, `amountEth`/`amount`, `slippageBps`, `router`, `recipient`, `symbol`.

## Common trigger shapes

### Liquidity trigger ("buy when it's live")
```json
{
  "type": "liquidity",
  "chainId": 4663,
  "token": "0x...",
  "kind": "liquidity",
  "condition": "any_pool_with_liquidity"
}
```

### Price trigger ("buy when it hits X")
```json
{
  "type": "price",
  "chainId": 8453,
  "token": "0x...",
  "direction": "above",
  "threshold": 0.05,
  "metric": "px"
}
```

## Full example: armed liquidity snipe

```
oracle_control_arm({
  trigger: {
    type: "liquidity",
    chainId: 4663,
    token: "0xc72F232a6869e6CF34dC06129AfFD07F8a2a246A",
    kind: "liquidity",
    condition: "any_pool_with_liquidity"
  },
  intent: {
    action: "buy",
    symbol: "MANCER",
    token: "0xc72F232a6869e6CF34dC06129AfFD07F8a2a246A",
    chainId: 4663,
    amountEth: 0.1,
    slippageBps: 100,
    router: "uniswap",
    recipient: "0xYOUR_WALLET"
  },
  policy: {
    caps: 0.1,
    maxSpendEth: 0.1,
    maxGasGwei: 500,
    priorityFeeGwei: 50
  },
  maxExecutions: 1,
  expiresAt: "2026-08-07T23:59:59Z"
})
→ oracle_control_confirm(id, intentHash)
```

## Pre-arm checklist

1. Resolve exact chain + token (multi-chain scan if unknown).
2. Verify executor health for target chain.
3. Require exact amount, slip, recipient, expiry from user.
4. Present compact confirmation card before confirming.
5. One-shot default; recurring needs explicit user request.

## Post-arm

- Action fires when trigger condition met, up to `maxExecutions` times, until `expiresAt`.
- Every execution re-quotes + re-checks grant at sign time and broadcast time.
- Use `oracle_action_list` / `oracle_action_status` to inspect.
- Use `oracle_action_cancel` to cancel.