IBKR Evaluate Order
Evaluate and validate a single-leg order without placing it. Produces a constraint-adjusted order preview with portfolio impact, concentration change, and profile compliance.
When to Use
- User says "buy X shares of Y" or "sell Y" and you need to validate before execution
- Comparing multiple order scenarios before committing
- Use after
ibkr-portfolio-snapshot for context
- Follow up with
ibkr-place-order once the user approves
Workflow
Phase 1 — Trading Status Check
- Call
ibkr_get_trading_status — read dryRun, ordersEnabled, tradingMode, blockReason
- If
dryRun=true or tradingMode=paper, note it in the output (the user may want to change it before evaluating)
- If
ordersEnabled=false, stop here and report the block to the user
blockReason alone is informational and does NOT block evaluation when ordersEnabled=true and dryRun=false
- A safety-lock blockReason (e.g., "Safety lock engaged after environment switch") is cleared automatically when the user intentionally unlocks via
ibkr_admin_update_trading_control
Phase 2 — Instrument Qualification
- Call
ibkr_resolve_contract to fully qualify the instrument (symbol + securityType + exchange + currency)
Phase 3 — Pre-Trade Validation
- Call
ibkr_preview_order with the full OrderSpec — get estimated price, notional, commission, warnings
- Call
ibkr_assess_order_impact — get concentration change, buying-power usage, margin impact
- Call
ibkr_validate_against_profile — confirm the order is within profile limits
Phase 4 — Constraint Presentation
- Present the evaluated order with a clear summary table:
Instrument: <symbol> | <securityType> | <exchange> / <currency>
Side: <BUY|SELL> | Qty: <qty> | Order Type: <orderType>
Est. Price: <price> | Est. Notional: <notional>
Portfolio Impact:
| Metric |
Value |
| Concentration before |
<pct>% |
| Concentration after |
<pct>% |
| Buying power used |
<pct>% |
| Margin utilisation |
<pct>% |
Profile Check: <passed|failed> | Violations: <list or "None">
Warnings: <list or "None">
If the qty needed adjustment to satisfy profile limits or the minimum remaining position constraint, note the adjusted qty and why.
Call question to confirm: "Ready to submit for Telegram approval?" with options "Yes, submit" and "No, cancel" (only proceed if they confirm)
Guardrails
- This skill is read-only with respect to execution. Do not call
ibkr_place_order, ibkr_request_trade_approval, or any execution tool inside this skill.
- Use a unique
clientOrderId for every evaluation (e.g. {symbol}-{side}-{timestamp}).
- If
ordersEnabled=false or blockReason is set, stop and report the block reason — do not proceed to evaluation.
- If
dryRun=true or tradingMode=paper, note it but still run the full validation (the user may choose to enable live trading before execution).
OrderSpec Reference
{
"instrument": { "symbol": "<SYMBOL>", "securityType": "STK", "exchange": "SMART", "currency": "USD" },
"side": "BUY" | "SELL",
"quantity": <positive number>,
"orderType": "MKT" | "LMT" | "STP" | "STP_LMT",
"limitPrice": <number, required for LMT/STP_LMT>,
"tif": "DAY" | "GTC" | "IOC",
"outsideRth": false,
"clientOrderId": "<unique-id>",
"transmit": true
}
Resources
ibkr_get_trading_status
ibkr_resolve_contract
ibkr_preview_order
ibkr_assess_order_impact
ibkr_validate_against_profile
1---2name: ibkr-evaluate-order3description: Evaluate a proposed single-leg order through full pre-trade validation. Use when the user requests to buy or sell a specific instrument and you need to assess portfolio impact, concentration, and profile compliance before any approval or execution. Call ibkr-place-order after this skill to execute an approved order.4---5
6# IBKR Evaluate Order
7
8Evaluate and validate a single-leg order without placing it. Produces a constraint-adjusted order preview with portfolio impact, concentration change, and profile compliance.
9
10## When to Use
11
12- User says "buy X shares of Y" or "sell Y" and you need to validate before execution
13- Comparing multiple order scenarios before committing
14- Use after `ibkr-portfolio-snapshot` for context
15- Follow up with `ibkr-place-order` once the user approves
16
17## Workflow
18
19### Phase 1 — Trading Status Check
20
211. Call `ibkr_get_trading_status` — read `dryRun`, `ordersEnabled`, `tradingMode`, `blockReason`
222. If `dryRun=true` or `tradingMode=paper`, note it in the output (the user may want to change it before evaluating)
233. If `ordersEnabled=false`, stop here and report the block to the user
24 - `blockReason` alone is informational and does NOT block evaluation when `ordersEnabled=true` and `dryRun=false`
25 - A safety-lock blockReason (e.g., "Safety lock engaged after environment switch") is cleared automatically when the user intentionally unlocks via `ibkr_admin_update_trading_control`
26
27### Phase 2 — Instrument Qualification
28
294. Call `ibkr_resolve_contract` to fully qualify the instrument (symbol + securityType + exchange + currency)
30
31### Phase 3 — Pre-Trade Validation
32
335. Call `ibkr_preview_order` with the full `OrderSpec` — get estimated price, notional, commission, warnings
346. Call `ibkr_assess_order_impact` — get concentration change, buying-power usage, margin impact
357. Call `ibkr_validate_against_profile` — confirm the order is within profile limits
36
37### Phase 4 — Constraint Presentation
38
398. Present the evaluated order with a clear summary table:
40
41**Instrument:** `<symbol>` | `<securityType>` | `<exchange>` / `<currency>`
42**Side:** `<BUY|SELL>` | **Qty:** `<qty>` | **Order Type:** `<orderType>`
43**Est. Price:** `<price>` | **Est. Notional:** `<notional>`
44
45**Portfolio Impact:**
46| Metric | Value |
47|--------|-------|
48| Concentration before | `<pct>%` |
49| Concentration after | `<pct>%` |
50| Buying power used | `<pct>%` |
51| Margin utilisation | `<pct>%` |
52
53**Profile Check:** `<passed|failed>` | Violations: `<list or "None">`
54**Warnings:** `<list or "None">`
55
569. If the qty needed adjustment to satisfy profile limits or the minimum remaining position constraint, note the adjusted qty and why.
57
5810. Call `question` to confirm: "Ready to submit for Telegram approval?" with options "Yes, submit" and "No, cancel" (only proceed if they confirm)
59
60## Guardrails
61
62- **This skill is read-only with respect to execution.** Do not call `ibkr_place_order`, `ibkr_request_trade_approval`, or any execution tool inside this skill.
63- Use a unique `clientOrderId` for every evaluation (e.g. `{symbol}-{side}-{timestamp}`).
64- If `ordersEnabled=false` or `blockReason` is set, stop and report the block reason — do not proceed to evaluation.
65- If `dryRun=true` or `tradingMode=paper`, note it but still run the full validation (the user may choose to enable live trading before execution).
66
67## OrderSpec Reference
68
69```
70{
71 "instrument": { "symbol": "<SYMBOL>", "securityType": "STK", "exchange": "SMART", "currency": "USD" },
72 "side": "BUY" | "SELL",
73 "quantity": <positive number>,
74 "orderType": "MKT" | "LMT" | "STP" | "STP_LMT",
75 "limitPrice": <number, required for LMT/STP_LMT>,
76 "tif": "DAY" | "GTC" | "IOC",
77 "outsideRth": false,
78 "clientOrderId": "<unique-id>",
79 "transmit": true
80}
81```
82
83## Resources
84
85- `ibkr_get_trading_status`
86- `ibkr_resolve_contract`
87- `ibkr_preview_order`
88- `ibkr_assess_order_impact`
89- `ibkr_validate_against_profile`