Place a GTT (dry run by default)
place_gtt_orderPlaces single or two-leg GTT (good-till-triggered) orders on Kite, previewing trigger prices, order details, and margin with a dry run before live submission.
Instructions
Place a GTT (good till triggered): Kite watches the price and places a LIMIT order when a trigger value is reached. DRY RUN BY DEFAULT: with dry_run=true (the default) nothing is sent; the answer shows the exact request, the value of each order, Kite's margin calculation, every safety check and, when live trading is enabled and the checks pass, a confirmation_token. To create it, repeat the identical call with dry_run=false and that token.
type=single: one trigger value (not equal to last_price) and one order. type=two-leg is an OCO (one cancels other): two trigger values, lower first, with last_price between them, and two orders; orders[i] is placed when trigger_values[i] is reached and the other is dropped (typically a stop-loss below and a target above). last_price is the current price in INR from get_ltp, get_quotes or get_holdings: never guess it. Only LIMIT orders are supported; prices must sit on the tick size.
Safety: a GTT uses one slot of the daily order count. Every order is checked against the per-order cap and the allow-lists; for an OCO only one order can execute, so the day's value grows by the larger order, not the sum. MCX, CDS and BCD GTTs cannot be valued and so cannot be sent live. Returns the trigger_id when sent.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"type": "<type>",
"exchange": "<exchange>",
"tradingsymbol": "<tradingsymbol>",
"trigger_values": "<trigger_values>",
"last_price": "<last_price>",
"orders": "<orders>"
},
"name": "place_gtt_order"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | single: one trigger, one order. two-leg: OCO, two triggers, two orders | |
| orders | Yes | the order(s) to place: one for single, two for two-leg | |
| dry_run | No | true (default): validate and preview only, nothing is sent. false: send it live, which needs live trading enabled on the server and the confirmation_token from a dry run | |
| exchange | Yes | exchange of the instrument: NSE, BSE (equity), NFO, BFO (F&O), CDS, BCD, MCX | |
| last_price | Yes | the instrument's CURRENT price in INR (get_ltp / get_quotes / get_holdings). Kite uses it to decide which way each trigger fires, so it must be fresh | |
| tradingsymbol | Yes | tradingsymbol, e.g. INFY | |
| trigger_values | Yes | trigger prices in INR, on the tick size: ONE value for single; TWO for two-leg, the lower first (trigger_values[i] fires orders[i]) | |
| confirmation_token | No | the confirmation_token returned by a dry run of this exact call (single use) |