Purpose
Translate a user query in plain English into one exact zerodha CLI command.
Do not invent commands or flags. Use only commands defined here.
Bootstrap: CLI Installation
If the user asks to install/setup the CLI, or reports zerodha: command not found, route to an installer command first.
This is the only exception to "commands must start with zerodha".
Install commands:
- Linux/macOS (
curl): curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh
- Linux/macOS (
wget): wget -qO- https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh
- Windows PowerShell:
irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex
- Windows CMD:
powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex"
Post-install verification command:
Global Rules
- Always start commands with
zerodha (except install/bootstrap commands in "Bootstrap: CLI Installation").
- Prefer
--json when the user asks for machine-readable output.
- Respect global flags when provided:
--profile <name>
--config <path>
--json
--debug
- Profile selection:
- Most commands require an active profile (or explicit
--profile).
- If no profile is selected, use:
zerodha config profile use <name>
- Auth/session:
- API data/order commands require an access token.
- If missing, run
zerodha auth login ....
- CLI auto-refreshes access token when refresh token exists.
- Never guess missing required fields for write actions; ask for the missing values.
- If OS is required for installation routing and missing, ask for only the OS (
linux, macos, or windows).
Login Flow (Multi-Message)
Use this flow when the user wants to authenticate and provides api_key, api_secret, and token across one or more messages.
Collected auth fields (can arrive in any order):
profile_name (default to default if user does not specify)
api_key
api_secret
- one login mode:
request_token_or_redirect_url, or
callback (optional callback_port)
Rules:
- Persist auth fields provided in earlier user messages during the same login task.
- Ask only for missing required auth inputs for the next step.
- Do not emit
zerodha auth login ... until profile credentials are configured.
- If
api_key + api_secret are available and profile setup is needed, emit:
zerodha config profile add <profile_name> --api-key <key> --api-secret <secret> --set-active
- If user explicitly wants to update only one credential on an existing profile, emit:
zerodha config profile set-api-key <profile_name> --api-key <key>
zerodha config profile set-api-secret <profile_name> --api-secret <secret>
- For token mode, emit:
zerodha auth login --request-token <token_or_redirect_url>
- For callback mode, emit:
zerodha auth login --callback [--callback-port <1-65535>]
- If multiple commands are needed, output only the next runnable command.
Command Catalog
Root utilities
zerodha version
zerodha help [command]
zerodha completion <shell>
Config profile
zerodha config profile add <name> --api-key <key> --api-secret <secret> [--set-active]
- Constraints:
<name> required; --api-key and --api-secret required.
zerodha config profile set-api-key <name> --api-key <key>
- Constraints:
<name>, --api-key required.
zerodha config profile set-api-secret <name> --api-secret <secret>
- Constraints:
<name>, --api-secret required.
zerodha config profile list
zerodha config profile use <name>
- Constraints:
<name> must exist.
zerodha config profile remove <name>
- Constraints:
<name> must exist.
Auth
zerodha auth login --request-token <token_or_redirect_url>
zerodha auth login --callback [--callback-port <1-65535>]
- Constraints:
- Exactly one mode is required:
--request-token OR --callback.
--request-token cannot be combined with --callback.
--callback-port allowed only with --callback.
--callback-port range: 1..65535.
zerodha auth renew
- Constraints: refresh token must exist in profile.
zerodha auth logout
zerodha auth revoke-refresh [--refresh-token <token>]
- If omitted, uses stored refresh token.
Profile
zerodha profile show
zerodha profile full
Quotes
zerodha quote get <EXCHANGE:SYMBOL> [EXCHANGE:SYMBOL...]
- Constraints: at least 1 instrument.
zerodha quote ltp <EXCHANGE:SYMBOL> [EXCHANGE:SYMBOL...]
- Constraints: at least 1 instrument.
zerodha quote ohlc <EXCHANGE:SYMBOL> [EXCHANGE:SYMBOL...]
- Constraints: at least 1 instrument.
zerodha quote historical --instrument-token <int> --interval <value> --from <time> --to <time> [--continuous] [--oi]
- Constraints:
--instrument-token > 0
--interval required
--from and --to required
- time format:
YYYY-MM-DD or YYYY-MM-DD HH:MM:SS or RFC3339
--from <= --to
Instruments
zerodha instruments list [--exchange <EXCHANGE> | --all]
- Default (no flags): summary by exchange/type.
- Constraints:
--exchange and --all are mutually exclusive.
zerodha instruments mf
Orders (single order operations)
zerodha order place --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> [--price <p>] [--trigger-price <p>] [--validity <DAY|IOC|TTL>] [--validity-ttl <min>] [--variety <v>] [--tag <t>]
- Constraints:
- required:
--exchange --symbol --txn --type --product --qty
--qty > 0
- LIMIT requires
--price > 0
- SL requires both
--price > 0 and --trigger-price > 0
- SL-M requires
--trigger-price > 0
- TTL validity requires
--validity-ttl > 0
zerodha order modify --order-id <id> [fields...]
- Constraints:
--order-id required
- At least one modifiable field required.
- If provided,
--txn must be BUY/SELL; --type must be MARKET/LIMIT/SL/SL-M; --validity must be DAY/IOC/TTL.
zerodha order cancel --order-id <id> [--variety <v>] [--parent-order-id <id>]
- Constraints:
--order-id required.
zerodha order exit --order-id <id> [--variety <v>] [--parent-order-id <id>]
- Constraints:
--order-id required.
Orders (orderbook/trades)
zerodha orders list
zerodha orders show --order-id <id>
- Constraints:
--order-id required.
zerodha orders trades [--order-id <id>]
Positions
zerodha positions
zerodha positions convert --exchange <EX> --symbol <SYM> --old-product <CNC|MIS|NRML|MTF> --new-product <CNC|MIS|NRML|MTF> --position-type <day|overnight> --txn <BUY|SELL> --qty <n>
- Constraints:
- all flags above required
--qty > 0
Holdings
zerodha holdings
zerodha holdings auctions
zerodha holdings auth-initiate [--type <equity|mf>] [--transfer-type <pre|post|off|gift>] [--exec-date YYYY-MM-DD] [--isin <isin> ...] [--qty <float> ...]
- Constraints:
- if
--type set, must be equity|mf
- if
--transfer-type set, must be pre|post|off|gift
- if
--exec-date set, format must be YYYY-MM-DD
--isin and --qty must have matching counts
- each
--qty must be > 0
Margins
zerodha margins [--segment <all|equity|commodity>]
zerodha margins order --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> [--price <p>] [--trigger-price <p>] [--variety <v>] [--compact]
zerodha margins basket --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> [--price <p>] [--trigger-price <p>] [--variety <v>] [--compact] [--consider-positions]
zerodha margins charges --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> --avg-price <p> [--price <p>] [--trigger-price <p>] [--variety <v>] [--order-id <id>]
- Shared constraints for order/basket/charges:
- required:
--exchange --symbol --txn --type --product --qty
--qty > 0
- LIMIT requires
--price > 0
- SL requires both
--price > 0 and --trigger-price > 0
- SL-M requires
--trigger-price > 0
- Additional charges constraint:
GTT
zerodha gtt place [gtt flags]
zerodha gtt modify --trigger-id <id> [gtt flags]
zerodha gtt list
zerodha gtt show --trigger-id <id>
zerodha gtt delete --trigger-id <id>
GTT common flags:
--exchange <EX> --symbol <SYM> --last-price <p> --txn <BUY|SELL> [--product <CNC|MIS|NRML|MTF>] [--type <single|two-leg>]
- For
single type:
--trigger <p> --limit-price <p> --qty <q>
- For
two-leg type:
--lower-trigger <p> --lower-limit-price <p> --lower-qty <q>
--upper-trigger <p> --upper-limit-price <p> --upper-qty <q>
GTT constraints:
--exchange --symbol --txn required
--last-price > 0
--txn in BUY|SELL
--product in CNC|MIS|NRML|MTF
--trigger-id > 0 for show/modify/delete
Mutual Funds
MF Orders
zerodha mf orders place --symbol <SYM> --txn <BUY|SELL> [--qty <q>] [--amount <amt>] [--tag <t>]
- Constraints:
--symbol and --txn required
- at least one of
--qty or --amount must be > 0
--qty and --amount cannot be negative
zerodha mf orders list [--from YYYY-MM-DD --to YYYY-MM-DD]
- Constraints:
--from and --to must be provided together
- date format:
YYYY-MM-DD
zerodha mf orders show --order-id <id>
- Constraints:
--order-id required
zerodha mf orders cancel --order-id <id>
- Constraints:
--order-id required
MF SIPs
zerodha mf sips place --symbol <SYM> --amount <amt> --instalments <n> --frequency <f> [--instalment-day <1..31>] [--initial-amount <amt>] [--trigger-price <p>] [--step-up <v>] [--sip-type <v>] [--tag <t>]
- Constraints:
- required:
--symbol --amount --instalments --frequency
--amount > 0, --instalments > 0
--instalment-day if provided must be in 1..31 (0 means not set)
--initial-amount and --trigger-price cannot be negative
zerodha mf sips modify --sip-id <id> [--amount <amt>] [--frequency <f>] [--instalment-day <1..31>] [--instalments <n>] [--step-up <v>] [--status <v>]
- Constraints:
--sip-id required
- at least one modifiable field required
- numeric fields cannot be negative
zerodha mf sips cancel --sip-id <id>
- Constraints:
--sip-id required
zerodha mf sips list
zerodha mf sips show --sip-id <id>
- Constraints:
--sip-id required
MF Holdings
zerodha mf holdings
zerodha mf holdings show --isin <isin>
- Constraints:
--isin required
zerodha mf holdings isins
Synonym Map
Use these mappings during intent parsing.
Market data
quote synonyms: price, live price, current price, quote, snapshot
ltp synonyms: ltp, last traded price, last price, tick
ohlc synonyms: open high low close, ohlc, candle snapshot
historical synonyms: history, candles, chart data, time series
Account and auth
profile synonyms: account details, user profile, my account
login synonyms: authenticate, sign in, connect kite
renew synonyms: refresh access token, renew token
logout synonyms: sign out, clear session
Bootstrap
install cli synonyms: install zerodha cli, setup zerodha cli, command not found, zerodha not installed
Orders and tradebook
order place synonyms: buy, sell, place order, new order, execute trade
order modify synonyms: edit order, change order, update order
order cancel synonyms: cancel order, delete order
order exit synonyms: square off order, exit order
orders list synonyms: orderbook, all orders
orders trades synonyms: tradebook, fills, executed trades
Portfolio
positions synonyms: open positions, net positions
positions convert synonyms: convert position, change product type
holdings synonyms: portfolio holdings, stocks held, demat holdings
holdings auctions synonyms: auction holdings, auction eligible
Risk/margins
margins synonyms: available margin, used margin, funds
margins order synonyms: margin required, order margin estimate
margins basket synonyms: basket margin, combined margin
margins charges synonyms: brokerage estimate, charges, fees
GTT
gtt synonyms: good till trigger, trigger order, price alert order
gtt two-leg synonyms: oco, one cancels other, bracket trigger
Mutual funds
mf orders synonyms: mutual fund order, fund buy/sell
mf sips synonyms: sip, systematic investment plan
mf holdings synonyms: mutual fund portfolio, fund holdings
Routing Procedure
- Detect whether this is an install/bootstrap request, login/auth bootstrap request, or a normal
zerodha command request.
- For install/bootstrap: pick the OS-specific installer command.
- For login/auth bootstrap: follow "Login Flow (Multi-Message)" and emit only the next runnable command.
- Otherwise detect intent domain using synonyms.
- Pick the narrowest command path.
- Extract required entities/flags.
- Validate against constraints above.
- If fields are missing, ask for only missing required inputs.
- Output one runnable command string.
Intent to Command Defaults
- If user asks generic "install zerodha cli":
- Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh
- Windows:
irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex
- If user asks generic "login" and no auth fields are provided:
- ask for
api_key and api_secret first (profile defaults to default unless specified)
- If user provides
api_key + api_secret but no token/mode:
- emit profile setup command first, then ask for token mode (
--request-token or --callback)
- If user asks generic "show my profile": use
zerodha profile show.
- If user asks generic "show orders": use
zerodha orders list.
- If user asks generic "show trades": use
zerodha orders trades.
- If user asks generic "show positions": use
zerodha positions.
- If user asks generic "show holdings": use
zerodha holdings.
- If user asks generic "show margins": use
zerodha margins --segment all.
- If user asks "list instruments" without exchange: use
zerodha instruments list.
Output Contract For Downstream Agents
When responding with a routed command, return:
command: exact runnable command (installer command for bootstrap, otherwise zerodha ...)
why: one-line reason
missing: required fields still missing (empty if none)
1---2name: zerodha-kite-cli-router3description: Route natural-language trading/account queries to the correct `zerodha` CLI command with exact flags, validation constraints, and synonym mapping. Use when a user asks to view prices, place/modify/cancel orders, manage auth/profile/config, work with holdings/positions/margins/GTT/MF flows, or asks "which zerodha command should I run?"4---5
6# Purpose
7
8Translate a user query in plain English into one exact `zerodha` CLI command.
9
10Do not invent commands or flags. Use only commands defined here.
11
12# Bootstrap: CLI Installation
13
14If the user asks to install/setup the CLI, or reports `zerodha: command not found`, route to an installer command first.
15
16This is the only exception to "commands must start with `zerodha`".
17
18Install commands:
19
20- Linux/macOS (`curl`): `curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
21- Linux/macOS (`wget`): `wget -qO- https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
22- Windows PowerShell: `irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex`
23- Windows CMD: `powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex"`
24
25Post-install verification command:
26
27- `zerodha version`
28
29# Global Rules
30
311. Always start commands with `zerodha` (except install/bootstrap commands in "Bootstrap: CLI Installation").
322. Prefer `--json` when the user asks for machine-readable output.
333. Respect global flags when provided:
34 - `--profile <name>`
35 - `--config <path>`
36 - `--json`
37 - `--debug`
384. Profile selection:
39 - Most commands require an active profile (or explicit `--profile`).
40 - If no profile is selected, use:
41 `zerodha config profile use <name>`
425. Auth/session:
43 - API data/order commands require an access token.
44 - If missing, run `zerodha auth login ...`.
45 - CLI auto-refreshes access token when refresh token exists.
466. Never guess missing required fields for write actions; ask for the missing values.
477. If OS is required for installation routing and missing, ask for only the OS (`linux`, `macos`, or `windows`).
48
49# Login Flow (Multi-Message)
50
51Use this flow when the user wants to authenticate and provides `api_key`, `api_secret`, and token across one or more messages.
52
53Collected auth fields (can arrive in any order):
54
55- `profile_name` (default to `default` if user does not specify)
56- `api_key`
57- `api_secret`
58- one login mode:
59 - `request_token_or_redirect_url`, or
60 - `callback` (optional `callback_port`)
61
62Rules:
63
641. Persist auth fields provided in earlier user messages during the same login task.
652. Ask only for missing required auth inputs for the next step.
663. Do not emit `zerodha auth login ...` until profile credentials are configured.
674. If `api_key` + `api_secret` are available and profile setup is needed, emit:
68 `zerodha config profile add <profile_name> --api-key <key> --api-secret <secret> --set-active`
695. If user explicitly wants to update only one credential on an existing profile, emit:
70 - `zerodha config profile set-api-key <profile_name> --api-key <key>`
71 - `zerodha config profile set-api-secret <profile_name> --api-secret <secret>`
726. For token mode, emit:
73 `zerodha auth login --request-token <token_or_redirect_url>`
747. For callback mode, emit:
75 `zerodha auth login --callback [--callback-port <1-65535>]`
768. If multiple commands are needed, output only the next runnable command.
77
78# Command Catalog
79
80## Root utilities
81
82- `zerodha version`
83- `zerodha help [command]`
84- `zerodha completion <shell>`
85
86## Config profile
87
88- `zerodha config profile add <name> --api-key <key> --api-secret <secret> [--set-active]`
89 - Constraints: `<name>` required; `--api-key` and `--api-secret` required.
90- `zerodha config profile set-api-key <name> --api-key <key>`
91 - Constraints: `<name>`, `--api-key` required.
92- `zerodha config profile set-api-secret <name> --api-secret <secret>`
93 - Constraints: `<name>`, `--api-secret` required.
94- `zerodha config profile list`
95- `zerodha config profile use <name>`
96 - Constraints: `<name>` must exist.
97- `zerodha config profile remove <name>`
98 - Constraints: `<name>` must exist.
99
100## Auth
101
102- `zerodha auth login --request-token <token_or_redirect_url>`
103- `zerodha auth login --callback [--callback-port <1-65535>]`
104 - Constraints:
105 - Exactly one mode is required: `--request-token` OR `--callback`.
106 - `--request-token` cannot be combined with `--callback`.
107 - `--callback-port` allowed only with `--callback`.
108 - `--callback-port` range: `1..65535`.
109- `zerodha auth renew`
110 - Constraints: refresh token must exist in profile.
111- `zerodha auth logout`
112- `zerodha auth revoke-refresh [--refresh-token <token>]`
113 - If omitted, uses stored refresh token.
114
115## Profile
116
117- `zerodha profile show`
118- `zerodha profile full`
119
120## Quotes
121
122- `zerodha quote get <EXCHANGE:SYMBOL> [EXCHANGE:SYMBOL...]`
123 - Constraints: at least 1 instrument.
124- `zerodha quote ltp <EXCHANGE:SYMBOL> [EXCHANGE:SYMBOL...]`
125 - Constraints: at least 1 instrument.
126- `zerodha quote ohlc <EXCHANGE:SYMBOL> [EXCHANGE:SYMBOL...]`
127 - Constraints: at least 1 instrument.
128- `zerodha quote historical --instrument-token <int> --interval <value> --from <time> --to <time> [--continuous] [--oi]`
129 - Constraints:
130 - `--instrument-token > 0`
131 - `--interval` required
132 - `--from` and `--to` required
133 - time format: `YYYY-MM-DD` or `YYYY-MM-DD HH:MM:SS` or RFC3339
134 - `--from <= --to`
135
136## Instruments
137
138- `zerodha instruments list [--exchange <EXCHANGE> | --all]`
139 - Default (no flags): summary by exchange/type.
140 - Constraints: `--exchange` and `--all` are mutually exclusive.
141- `zerodha instruments mf`
142
143## Orders (single order operations)
144
145- `zerodha order place --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> [--price <p>] [--trigger-price <p>] [--validity <DAY|IOC|TTL>] [--validity-ttl <min>] [--variety <v>] [--tag <t>]`
146 - Constraints:
147 - required: `--exchange --symbol --txn --type --product --qty`
148 - `--qty > 0`
149 - LIMIT requires `--price > 0`
150 - SL requires both `--price > 0` and `--trigger-price > 0`
151 - SL-M requires `--trigger-price > 0`
152 - TTL validity requires `--validity-ttl > 0`
153- `zerodha order modify --order-id <id> [fields...]`
154 - Constraints:
155 - `--order-id` required
156 - At least one modifiable field required.
157 - If provided, `--txn` must be BUY/SELL; `--type` must be MARKET/LIMIT/SL/SL-M; `--validity` must be DAY/IOC/TTL.
158- `zerodha order cancel --order-id <id> [--variety <v>] [--parent-order-id <id>]`
159 - Constraints: `--order-id` required.
160- `zerodha order exit --order-id <id> [--variety <v>] [--parent-order-id <id>]`
161 - Constraints: `--order-id` required.
162
163## Orders (orderbook/trades)
164
165- `zerodha orders list`
166- `zerodha orders show --order-id <id>`
167 - Constraints: `--order-id` required.
168- `zerodha orders trades [--order-id <id>]`
169
170## Positions
171
172- `zerodha positions`
173- `zerodha positions convert --exchange <EX> --symbol <SYM> --old-product <CNC|MIS|NRML|MTF> --new-product <CNC|MIS|NRML|MTF> --position-type <day|overnight> --txn <BUY|SELL> --qty <n>`
174 - Constraints:
175 - all flags above required
176 - `--qty > 0`
177
178## Holdings
179
180- `zerodha holdings`
181- `zerodha holdings auctions`
182- `zerodha holdings auth-initiate [--type <equity|mf>] [--transfer-type <pre|post|off|gift>] [--exec-date YYYY-MM-DD] [--isin <isin> ...] [--qty <float> ...]`
183 - Constraints:
184 - if `--type` set, must be `equity|mf`
185 - if `--transfer-type` set, must be `pre|post|off|gift`
186 - if `--exec-date` set, format must be `YYYY-MM-DD`
187 - `--isin` and `--qty` must have matching counts
188 - each `--qty` must be `> 0`
189
190## Margins
191
192- `zerodha margins [--segment <all|equity|commodity>]`
193- `zerodha margins order --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> [--price <p>] [--trigger-price <p>] [--variety <v>] [--compact]`
194- `zerodha margins basket --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> [--price <p>] [--trigger-price <p>] [--variety <v>] [--compact] [--consider-positions]`
195- `zerodha margins charges --exchange <EX> --symbol <SYM> --txn <BUY|SELL> --type <MARKET|LIMIT|SL|SL-M> --product <CNC|MIS|NRML|MTF> --qty <n> --avg-price <p> [--price <p>] [--trigger-price <p>] [--variety <v>] [--order-id <id>]`
196 - Shared constraints for order/basket/charges:
197 - required: `--exchange --symbol --txn --type --product --qty`
198 - `--qty > 0`
199 - LIMIT requires `--price > 0`
200 - SL requires both `--price > 0` and `--trigger-price > 0`
201 - SL-M requires `--trigger-price > 0`
202 - Additional charges constraint:
203 - `--avg-price > 0`
204
205## GTT
206
207- `zerodha gtt place [gtt flags]`
208- `zerodha gtt modify --trigger-id <id> [gtt flags]`
209- `zerodha gtt list`
210- `zerodha gtt show --trigger-id <id>`
211- `zerodha gtt delete --trigger-id <id>`
212
213GTT common flags:
214- `--exchange <EX> --symbol <SYM> --last-price <p> --txn <BUY|SELL> [--product <CNC|MIS|NRML|MTF>] [--type <single|two-leg>]`
215- For `single` type:
216 - `--trigger <p> --limit-price <p> --qty <q>`
217- For `two-leg` type:
218 - `--lower-trigger <p> --lower-limit-price <p> --lower-qty <q>`
219 - `--upper-trigger <p> --upper-limit-price <p> --upper-qty <q>`
220
221GTT constraints:
222- `--exchange --symbol --txn` required
223- `--last-price > 0`
224- `--txn` in `BUY|SELL`
225- `--product` in `CNC|MIS|NRML|MTF`
226- `--trigger-id > 0` for show/modify/delete
227
228## Mutual Funds
229
230### MF Orders
231
232- `zerodha mf orders place --symbol <SYM> --txn <BUY|SELL> [--qty <q>] [--amount <amt>] [--tag <t>]`
233 - Constraints:
234 - `--symbol` and `--txn` required
235 - at least one of `--qty` or `--amount` must be `> 0`
236 - `--qty` and `--amount` cannot be negative
237- `zerodha mf orders list [--from YYYY-MM-DD --to YYYY-MM-DD]`
238 - Constraints:
239 - `--from` and `--to` must be provided together
240 - date format: `YYYY-MM-DD`
241- `zerodha mf orders show --order-id <id>`
242 - Constraints: `--order-id` required
243- `zerodha mf orders cancel --order-id <id>`
244 - Constraints: `--order-id` required
245
246### MF SIPs
247
248- `zerodha mf sips place --symbol <SYM> --amount <amt> --instalments <n> --frequency <f> [--instalment-day <1..31>] [--initial-amount <amt>] [--trigger-price <p>] [--step-up <v>] [--sip-type <v>] [--tag <t>]`
249 - Constraints:
250 - required: `--symbol --amount --instalments --frequency`
251 - `--amount > 0`, `--instalments > 0`
252 - `--instalment-day` if provided must be in `1..31` (0 means not set)
253 - `--initial-amount` and `--trigger-price` cannot be negative
254- `zerodha mf sips modify --sip-id <id> [--amount <amt>] [--frequency <f>] [--instalment-day <1..31>] [--instalments <n>] [--step-up <v>] [--status <v>]`
255 - Constraints:
256 - `--sip-id` required
257 - at least one modifiable field required
258 - numeric fields cannot be negative
259- `zerodha mf sips cancel --sip-id <id>`
260 - Constraints: `--sip-id` required
261- `zerodha mf sips list`
262- `zerodha mf sips show --sip-id <id>`
263 - Constraints: `--sip-id` required
264
265### MF Holdings
266
267- `zerodha mf holdings`
268- `zerodha mf holdings show --isin <isin>`
269 - Constraints: `--isin` required
270- `zerodha mf holdings isins`
271
272# Synonym Map
273
274Use these mappings during intent parsing.
275
276## Market data
277
278- `quote` synonyms: `price`, `live price`, `current price`, `quote`, `snapshot`
279- `ltp` synonyms: `ltp`, `last traded price`, `last price`, `tick`
280- `ohlc` synonyms: `open high low close`, `ohlc`, `candle snapshot`
281- `historical` synonyms: `history`, `candles`, `chart data`, `time series`
282
283## Account and auth
284
285- `profile` synonyms: `account details`, `user profile`, `my account`
286- `login` synonyms: `authenticate`, `sign in`, `connect kite`
287- `renew` synonyms: `refresh access token`, `renew token`
288- `logout` synonyms: `sign out`, `clear session`
289
290## Bootstrap
291
292- `install cli` synonyms: `install zerodha cli`, `setup zerodha cli`, `command not found`, `zerodha not installed`
293
294## Orders and tradebook
295
296- `order place` synonyms: `buy`, `sell`, `place order`, `new order`, `execute trade`
297- `order modify` synonyms: `edit order`, `change order`, `update order`
298- `order cancel` synonyms: `cancel order`, `delete order`
299- `order exit` synonyms: `square off order`, `exit order`
300- `orders list` synonyms: `orderbook`, `all orders`
301- `orders trades` synonyms: `tradebook`, `fills`, `executed trades`
302
303## Portfolio
304
305- `positions` synonyms: `open positions`, `net positions`
306- `positions convert` synonyms: `convert position`, `change product type`
307- `holdings` synonyms: `portfolio holdings`, `stocks held`, `demat holdings`
308- `holdings auctions` synonyms: `auction holdings`, `auction eligible`
309
310## Risk/margins
311
312- `margins` synonyms: `available margin`, `used margin`, `funds`
313- `margins order` synonyms: `margin required`, `order margin estimate`
314- `margins basket` synonyms: `basket margin`, `combined margin`
315- `margins charges` synonyms: `brokerage estimate`, `charges`, `fees`
316
317## GTT
318
319- `gtt` synonyms: `good till trigger`, `trigger order`, `price alert order`
320- `gtt two-leg` synonyms: `oco`, `one cancels other`, `bracket trigger`
321
322## Mutual funds
323
324- `mf orders` synonyms: `mutual fund order`, `fund buy/sell`
325- `mf sips` synonyms: `sip`, `systematic investment plan`
326- `mf holdings` synonyms: `mutual fund portfolio`, `fund holdings`
327
328# Routing Procedure
329
3301. Detect whether this is an install/bootstrap request, login/auth bootstrap request, or a normal `zerodha` command request.
3312. For install/bootstrap: pick the OS-specific installer command.
3323. For login/auth bootstrap: follow "Login Flow (Multi-Message)" and emit only the next runnable command.
3334. Otherwise detect intent domain using synonyms.
3345. Pick the narrowest command path.
3356. Extract required entities/flags.
3367. Validate against constraints above.
3378. If fields are missing, ask for only missing required inputs.
3389. Output one runnable command string.
339
340# Intent to Command Defaults
341
342- If user asks generic "install zerodha cli":
343 - Linux/macOS: `curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
344 - Windows: `irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex`
345- If user asks generic "login" and no auth fields are provided:
346 - ask for `api_key` and `api_secret` first (profile defaults to `default` unless specified)
347- If user provides `api_key` + `api_secret` but no token/mode:
348 - emit profile setup command first, then ask for token mode (`--request-token` or `--callback`)
349- If user asks generic "show my profile": use `zerodha profile show`.
350- If user asks generic "show orders": use `zerodha orders list`.
351- If user asks generic "show trades": use `zerodha orders trades`.
352- If user asks generic "show positions": use `zerodha positions`.
353- If user asks generic "show holdings": use `zerodha holdings`.
354- If user asks generic "show margins": use `zerodha margins --segment all`.
355- If user asks "list instruments" without exchange: use `zerodha instruments list`.
356
357# Output Contract For Downstream Agents
358
359When responding with a routed command, return:
360
3611. `command`: exact runnable command (installer command for bootstrap, otherwise `zerodha ...`)
3622. `why`: one-line reason
3633. `missing`: required fields still missing (empty if none)