From df40c591a5cbae36803297dc5c4d47dfaf447fcb Mon Sep 17 00:00:00 2001 From: Shotaro Nakamura Date: Wed, 24 Jun 2026 22:01:39 +0900 Subject: [PATCH] feat: add skills --- skills/mnie-cli/SKILL.md | 34 +++ skills/mnie-cli/agents/openai.yaml | 4 + skills/mnie-cli/references/cli-commands.md | 175 +++++++++++ skills/mnie-cli/references/rpc-methods.md | 321 +++++++++++++++++++++ 4 files changed, 534 insertions(+) create mode 100644 skills/mnie-cli/SKILL.md create mode 100644 skills/mnie-cli/agents/openai.yaml create mode 100644 skills/mnie-cli/references/cli-commands.md create mode 100644 skills/mnie-cli/references/rpc-methods.md diff --git a/skills/mnie-cli/SKILL.md b/skills/mnie-cli/SKILL.md new file mode 100644 index 0000000..9bef6b4 --- /dev/null +++ b/skills/mnie-cli/SKILL.md @@ -0,0 +1,34 @@ +--- +name: mnie-cli +description: 'Use when an AI agent should operate the installed `mnie` command for a user: managing Mnie profiles, logging in, listing RPC methods, calling finance/account/market/order methods, handling passkey IDs, or explaining safe `mnie` usage in an environment where the CLI is already installed.' +--- + +# Mnie CLI + +Use the installed `mnie` command. Do not assume access to the CLI source repository, build artifacts, or project-local scripts. + +## Basics + +- Confirm `mnie --help` if command syntax is uncertain. +- Use `mnie profile list` to inspect configured profiles when profile context is unclear. +- Use `--profile ` when the user specifies a profile; otherwise rely on the configured default profile. +- Use `--passkey-id ` when the target RPC method requires an SBI session connection. +- Pass method parameters as a single JSON string to `rpc call`. +- Preserve identifiers such as issue codes, order numbers, and passkey IDs as strings. + +## Commands + +Read `references/cli-commands.md` for concrete command examples. +Read `references/rpc-methods.md` when choosing an RPC method or forming params for `mnie rpc call`. + +## Safety + +- Do not invent direct commands such as `mnie account profile` unless `mnie --help` shows that syntax. +- Prefer read-only calls unless the user explicitly asks for a trade/order action. +- For live trading RPC methods, require explicit user confirmation and include `allowTrading: true` only when the user clearly requested submission. +- Do not fabricate API keys, profile names, passkey IDs, trade passwords, or server origins. +- Store profile origins as origins only. Do not include real endpoint paths in profile origins. + +## Output + +Return concise command results and the exact command shape used, but do not expose secrets such as API keys or access tokens. diff --git a/skills/mnie-cli/agents/openai.yaml b/skills/mnie-cli/agents/openai.yaml new file mode 100644 index 0000000..1e15c37 --- /dev/null +++ b/skills/mnie-cli/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: 'Mnie CLI' + short_description: 'Operate installed mnie safely' + default_prompt: 'Use $mnie-cli to run the installed mnie command for a Mnie task.' diff --git a/skills/mnie-cli/references/cli-commands.md b/skills/mnie-cli/references/cli-commands.md new file mode 100644 index 0000000..f9bd42b --- /dev/null +++ b/skills/mnie-cli/references/cli-commands.md @@ -0,0 +1,175 @@ +# Mnie CLI Commands + +## Help + +```bash +mnie --help +``` + +## Profiles + +Add a profile: + +```bash +mnie profile add local \ + --origin http://127.0.0.1:8787 \ + --api-key mnie_xxx +``` + +List profiles: + +```bash +mnie profile list +``` + +Use a profile as default: + +```bash +mnie profile use local +``` + +`--origin` should be an origin only, such as `https://example.com` or `http://127.0.0.1:8787`. + +## OAuth Login + +```bash +mnie login \ + --origin http://127.0.0.1:8787 \ + --profile local +``` + +Optional flags: + +- `--scopes "mcp read write trade"` +- `--storage file` +- `--storage keyring` + +## RPC + +List available RPC methods: + +```bash +mnie rpc methods --profile local +``` + +All known RPC method paths: + +```text +session.profile +account.profile +account.assets.current +account.power.buyingPower +account.power.collateralRatio +account.positions.cash +account.positions.cashDetail +account.positions.cashForIssue +account.positions.margin +account.positions.marginDetail +account.positions.marginForIssue +account.positions.marginSummaryForIssue +account.positions.marginDetailsForIssue +account.positions.closeableMargin +account.positions.deliverableMargin +account.profitLoss.unrealized +market.issue.search +market.issue.suggest +market.issue.allowedPrices +market.issue.board +market.issue.pollBoard +market.issue.chart +market.issue.openOrders +market.issue.tradingInfo +market.index.major +market.overview +market.ranking.market +market.ranking.sector +market.ranking.sbi +news.list +watchlist.list +orders.inquiry.executionsToday +orders.inquiry.open +orders.inquiry.detail +orders.inquiry.tradeRecords +orders.cash.preOrder +orders.cash.estimate +orders.cash.place +orders.cash.estimateCorrection +orders.cash.estimateCorrectionConfirm +orders.cash.placeCorrection +orders.cash.estimateCancel +orders.cash.placeCancel +orders.margin.preOrderOpen +orders.margin.estimateOpen +orders.margin.open +orders.margin.preOrderClose +orders.margin.estimateClose +orders.margin.close +orders.margin.estimateCloseSummary +orders.margin.closeSummary +orders.margin.estimateSummary +orders.margin.placeSummary +orders.margin.preOrderActualDelivery +orders.margin.estimateActualDelivery +orders.margin.actualDelivery +orders.ifd.estimate +orders.ifd.place +orders.ifd.estimateCorrection +orders.ifd.placeCorrection +orders.ifd.estimateCancel +orders.ifd.placeCancel +orders.themeInvestment.list +orders.themeInvestment.estimate +orders.themeInvestment.place +orders.exchange.rate +orders.exchange.estimate +orders.exchange.place +``` + +For per-method params and examples, see `rpc-methods.md`. + +Call a method without params: + +```bash +mnie rpc call account.profile \ + --profile local \ + --passkey-id sbi_xxx +``` + +Call a method with params: + +```bash +mnie rpc call market.issue.board \ + '{"issueCode":"7203","market":"T"}' \ + --profile local \ + --passkey-id sbi_xxx +``` + +## Common Read-Only Calls + +Account profile: + +```bash +mnie rpc call account.profile --profile local --passkey-id sbi_xxx +``` + +Market board: + +```bash +mnie rpc call market.issue.board \ + '{"issueCode":"7203","market":"T"}' \ + --profile local \ + --passkey-id sbi_xxx +``` + +Open orders: + +```bash +mnie rpc call orders.inquiry.open \ + '{"market":"T"}' \ + --profile local \ + --passkey-id sbi_xxx +``` + +## Trading Calls + +Only use live placement/cancellation/correction methods after explicit user confirmation. Include `allowTrading: true` only for confirmed live submission. diff --git a/skills/mnie-cli/references/rpc-methods.md b/skills/mnie-cli/references/rpc-methods.md new file mode 100644 index 0000000..6d7468b --- /dev/null +++ b/skills/mnie-cli/references/rpc-methods.md @@ -0,0 +1,321 @@ +# RPC Method Usage + +Use this shape: + +```bash +mnie rpc call '' --profile --passkey-id +``` + +Omit `''` for methods with no params. Keep identifiers such as `issueCode`, `orderNumber`, `orderId`, and `passkey-id` as strings. + +## Input And Output Types + +`none` means omit the JSON params argument. A trailing `?` means the params object is optional. + +| Method | Input | Output | +| ----------------------------------------- | ------------------------------------- | ------------------------------ | +| `session.profile` | none | `AccountProfile` | +| `account.profile` | none | `AccountProfile` | +| `account.assets.current` | none | `AccountAssetsValuations` | +| `account.power.buyingPower` | `AccountPowerOptions?` | `BuyingPower` | +| `account.power.collateralRatio` | `AccountPowerOptions?` | `BuyingPower` | +| `account.positions.cash` | `CashPositionOptions?` | `CashPositionList` | +| `account.positions.cashDetail` | `CashPositionOptions?` | `CashPositionList` | +| `account.positions.cashForIssue` | `IssueOptions` | `CashPositionList` | +| `account.positions.margin` | `MarginPositionOptions?` | `MarginPositionList` | +| `account.positions.marginDetail` | `MarginPositionOptions?` | `MarginPositionList` | +| `account.positions.marginForIssue` | `IssueOptions` | `MarginPositionList` | +| `account.positions.marginSummaryForIssue` | `IssueOptions` | `MarginPositionList` | +| `account.positions.marginDetailsForIssue` | `IssueOptions` | `MarginPositionList` | +| `account.positions.closeableMargin` | `MarginPositionOptions` | `MarginPositionList` | +| `account.positions.deliverableMargin` | `MarginPositionOptions` | `MarginPositionList` | +| `account.profitLoss.unrealized` | `ProfitLossOptions?` | `ProfitLossSummary` | +| `market.issue.search` | `IssueSearchOptions` | `IssueSearchResult` | +| `market.issue.suggest` | `IssueSearchOptions` | `IssueSearchResult` | +| `market.issue.allowedPrices` | `IssueOptions` | `Quote` | +| `market.issue.board` | `IssueOptions` | `Board` | +| `market.issue.pollBoard` | `MarketIssueBoardPollingOptions` | `AsyncIterableIterator` | +| `market.issue.chart` | `IssueChartOptions` | `IssueChart` | +| `market.issue.openOrders` | `IssueOptions` | `OrderList` | +| `market.issue.tradingInfo` | `BoardOptions` | `Board` | +| `market.index.major` | none | `MarketIndex[]` | +| `market.overview` | none | `DomesticMarket` | +| `market.ranking.market` | none | `Ranking` | +| `market.ranking.sector` | none | `Ranking` | +| `market.ranking.sbi` | none | `Ranking` | +| `news.list` | none | `NewsList` | +| `watchlist.list` | none | `Watchlist[]` | +| `orders.inquiry.executionsToday` | `OrderInquiryOptions?` | `OrderList` | +| `orders.inquiry.open` | `OrderInquiryOptions?` | `OrderList` | +| `orders.inquiry.detail` | `OrderDetailOptions` | `Order` | +| `orders.inquiry.tradeRecords` | `TradeRecordInquiryOptions` | `TradeRecordList` | +| `orders.cash.preOrder` | `CashOrderPreOrderOptions` | `StockOrderPreOrder` | +| `orders.cash.estimate` | `CashOrderOptions` | `OrderPreview` | +| `orders.cash.place` | `PlaceCashOrderOptions` | `OrderReceipt` | +| `orders.cash.estimateCorrection` | `OrderCorrectionOptions` | `OrderPreview` | +| `orders.cash.estimateCorrectionConfirm` | `OrderCorrectionOptions` | `OrderPreview` | +| `orders.cash.placeCorrection` | `PlaceOrderCorrectionOptions` | `OrderReceipt` | +| `orders.cash.estimateCancel` | `OrderCancelOptions` | `OrderPreview` | +| `orders.cash.placeCancel` | `PlaceOrderCancelOptions` | `OrderReceipt` | +| `orders.margin.preOrderOpen` | `MarginOpenOrderPreOrderOptions` | `StockOrderPreOrder` | +| `orders.margin.estimateOpen` | `MarginOpenOrderOptions` | `OrderPreview` | +| `orders.margin.open` | `PlaceMarginOpenOrderOptions` | `OrderReceipt` | +| `orders.margin.preOrderClose` | `MarginCloseOrderPreOrderOptions` | `StockOrderPreOrder` | +| `orders.margin.estimateClose` | `MarginCloseOrderOptions` | `OrderPreview` | +| `orders.margin.close` | `PlaceMarginCloseOrderOptions` | `OrderReceipt` | +| `orders.margin.estimateCloseSummary` | `MarginCloseOrderOptions` | `OrderPreview` | +| `orders.margin.closeSummary` | `PlaceMarginCloseOrderOptions` | `OrderReceipt` | +| `orders.margin.estimateSummary` | `MarginCloseSummaryOrderOptions` | `OrderPreview` | +| `orders.margin.placeSummary` | `PlaceMarginCloseSummaryOrderOptions` | `OrderReceipt` | +| `orders.margin.preOrderActualDelivery` | `ActualDeliveryOrderPreOrderOptions` | `StockOrderPreOrder` | +| `orders.margin.estimateActualDelivery` | `ActualDeliveryOrderOptions` | `OrderPreview` | +| `orders.margin.actualDelivery` | `PlaceActualDeliveryOrderOptions` | `OrderReceipt` | +| `orders.ifd.estimate` | `IfdOrderOptions` | `OrderPreview` | +| `orders.ifd.place` | `PlaceIfdOrderOptions` | `OrderReceipt` | +| `orders.ifd.estimateCorrection` | `OrderCorrectionOptions` | `OrderPreview` | +| `orders.ifd.placeCorrection` | `PlaceOrderCorrectionOptions` | `OrderReceipt` | +| `orders.ifd.estimateCancel` | `OrderCancelOptions` | `OrderPreview` | +| `orders.ifd.placeCancel` | `PlaceOrderCancelOptions` | `OrderReceipt` | +| `orders.themeInvestment.list` | `ThemeInvestmentPreOrderOptions` | `ThemeInvestmentList` | +| `orders.themeInvestment.estimate` | `ThemeInvestmentOrderOptions` | `OrderPreview` | +| `orders.themeInvestment.place` | `PlaceThemeInvestmentOrderOptions` | `OrderReceipt` | +| `orders.exchange.rate` | `ExchangeRateOptions` | `ExchangeRateInfo` | +| `orders.exchange.estimate` | `ExchangeOrderOptions` | `ExchangeOrderPreview` | +| `orders.exchange.place` | `PlaceExchangeOrderOptions` | `ExchangeOrderReceipt` | + +## Common Input Shapes + +These are the most common params objects agents need to construct. For exact field definitions, inspect the SDK/type reference that ships with the target environment. + +```ts +type PagingOptions = { index?: number; limit?: number } +type DateRangeOptions = { from?: string; to?: string } +type IssueOptions = { issueCode: string; market: MarketCode } +type IssueSearchOptions = { query: string; market: MarketCode; limit?: number } +type AccountPowerOptions = { includeMarginAccount?: boolean } +type ProfitLossOptions = { market?: MarketCode } +type CashPositionOptions = PagingOptions & { + issueCode?: string + market?: MarketCode + accountType?: AccountType +} +type MarginPositionOptions = PagingOptions & { + issueCode?: string + market?: MarketCode + side?: MarginTradeSide + accountType?: AccountType +} +type OrderInquiryOptions = PagingOptions & + DateRangeOptions & { + issueCode?: string + market?: MarketCode + status?: OrderStatus + } +type OrderDetailOptions = { + orderNumber?: string + orderId?: string + issueCode?: string + market: MarketCode +} +type TradeRecordInquiryOptions = OrderInquiryOptions & { + accountType?: AccountType +} +``` + +Order option types are intentionally broad. Prefer pre-order and estimate methods first; use the resulting constraints to fill live order payloads. + +## Session + +```bash +mnie rpc call session.profile --profile local --passkey-id sbi_xxx +``` + +## Account + +```bash +mnie rpc call account.profile --profile local --passkey-id sbi_xxx +mnie rpc call account.assets.current --profile local --passkey-id sbi_xxx +mnie rpc call account.power.buyingPower '{}' --profile local --passkey-id sbi_xxx +mnie rpc call account.power.collateralRatio '{"includeMarginAccount":true}' --profile local --passkey-id sbi_xxx +``` + +Positions: + +```bash +mnie rpc call account.positions.cash '{}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.cashDetail '{}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.cashForIssue '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.margin '{}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.marginDetail '{}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.marginForIssue '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.marginSummaryForIssue '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.marginDetailsForIssue '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.closeableMargin '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call account.positions.deliverableMargin '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +``` + +Profit and loss: + +```bash +mnie rpc call account.profitLoss.unrealized '{}' --profile local --passkey-id sbi_xxx +mnie rpc call account.profitLoss.unrealized '{"market":"T"}' --profile local --passkey-id sbi_xxx +``` + +Common optional filters for list-style account calls: + +```json +{ "index": 0, "limit": 100, "issueCode": "7203", "market": "T", "accountType": "specific" } +``` + +## Market + +Issue search and quotes: + +```bash +mnie rpc call market.issue.search '{"query":"7203","market":"T","limit":10}' --profile local --passkey-id sbi_xxx +mnie rpc call market.issue.suggest '{"query":"トヨタ","market":"T","limit":10}' --profile local --passkey-id sbi_xxx +mnie rpc call market.issue.allowedPrices '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call market.issue.board '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call market.issue.chart '{"issueCode":"7203","market":"T","period":"day","count":120}' --profile local --passkey-id sbi_xxx +mnie rpc call market.issue.openOrders '{"issueCode":"7203","market":"T"}' --profile local --passkey-id sbi_xxx +mnie rpc call market.issue.tradingInfo '{"issueCode":"7203","market":"T","side":"cashBuy"}' --profile local --passkey-id sbi_xxx +``` + +`market.issue.pollBoard` is a polling/iterator method. Prefer `market.issue.board` for one-shot CLI output unless `mnie rpc call market.issue.pollBoard ...` is known to serialize streaming results in the target environment. + +Indexes, overview, rankings: + +```bash +mnie rpc call market.index.major --profile local --passkey-id sbi_xxx +mnie rpc call market.overview --profile local --passkey-id sbi_xxx +mnie rpc call market.ranking.market --profile local --passkey-id sbi_xxx +mnie rpc call market.ranking.sector --profile local --passkey-id sbi_xxx +mnie rpc call market.ranking.sbi --profile local --passkey-id sbi_xxx +``` + +## News And Watchlist + +```bash +mnie rpc call news.list --profile local --passkey-id sbi_xxx +mnie rpc call watchlist.list --profile local --passkey-id sbi_xxx +``` + +## Order Inquiry + +```bash +mnie rpc call orders.inquiry.executionsToday '{}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.inquiry.open '{}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.inquiry.detail '{"orderNumber":"123456","orderId":"abcdef","issueCode":"AAPL","market":"NASDAQ"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.inquiry.tradeRecords '{"from":"2026-01-01","to":"2026-01-31","market":"NASDAQ","accountType":"specific"}' --profile local --passkey-id sbi_xxx +``` + +Common inquiry filters: + +```json +{ + "index": 0, + "limit": 100, + "from": "2026-01-01", + "to": "2026-01-31", + "issueCode": "7203", + "market": "T", + "status": "open" +} +``` + +## Cash Orders + +Pre-order and estimate are non-submitting: + +```bash +mnie rpc call orders.cash.preOrder '{"issueCode":"7203","market":"T","side":"buy","accountType":"specific"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.cash.estimate '{"issueCode":"7203","market":"T","side":"buy","quantity":100,"accountType":"specific","kind":"market"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.cash.estimateCorrection '{"orderNumber":"123456","orderId":"abcdef","market":"T","quantity":100,"price":2500}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.cash.estimateCorrectionConfirm '{"orderNumber":"123456","orderId":"abcdef","market":"T","quantity":100,"price":2500}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.cash.estimateCancel '{"orderNumber":"123456","orderId":"abcdef"}' --profile local --passkey-id sbi_xxx +``` + +Live cash order actions require explicit user confirmation and `allowTrading:true`: + +```bash +mnie rpc call orders.cash.place '{"issueCode":"7203","market":"T","side":"buy","quantity":100,"accountType":"specific","kind":"market","allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.cash.placeCorrection '{"orderNumber":"123456","orderId":"abcdef","market":"T","quantity":100,"price":2500,"allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.cash.placeCancel '{"orderNumber":"123456","orderId":"abcdef","allowTrading":true}' --profile local --passkey-id sbi_xxx +``` + +## Margin Orders + +Pre-order and estimate are non-submitting: + +```bash +mnie rpc call orders.margin.preOrderOpen '{"issueCode":"7203","market":"T","side":"buy","accountType":"specific"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.estimateOpen '{"issueCode":"7203","market":"T","side":"buy","quantity":100,"accountType":"specific","kind":"market","marginTradeType":"standard"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.preOrderClose '{"issueCode":"7203","market":"T","side":"sell","accountType":"specific"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.estimateClose '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","kind":"market","marginCloseTradeType":"standard"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.estimateCloseSummary '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","kind":"market"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.estimateSummary '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","kind":"market"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.preOrderActualDelivery '{"issueCode":"7203","market":"T","side":"sell","accountType":"specific"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.estimateActualDelivery '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific"}' --profile local --passkey-id sbi_xxx +``` + +Live margin actions require explicit user confirmation and `allowTrading:true`: + +```bash +mnie rpc call orders.margin.open '{"issueCode":"7203","market":"T","side":"buy","quantity":100,"accountType":"specific","kind":"market","marginTradeType":"standard","allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.close '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","kind":"market","marginCloseTradeType":"standard","allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.closeSummary '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","kind":"market","allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.placeSummary '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","kind":"market","allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.margin.actualDelivery '{"issueCode":"7203","market":"T","side":"sell","quantity":100,"accountType":"specific","allowTrading":true}' --profile local --passkey-id sbi_xxx +``` + +## IFD Orders + +Estimate and cancellation estimate are non-submitting: + +```bash +mnie rpc call orders.ifd.estimate '{"issueCode":"7203","market":"T","side":"buy","quantity":100,"accountType":"specific","kind":"market"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.ifd.estimateCorrection '{"orderNumber":"123456","orderId":"abcdef","market":"T","quantity":100,"price":2500}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.ifd.estimateCancel '{"orderNumber":"123456","orderId":"abcdef"}' --profile local --passkey-id sbi_xxx +``` + +Live IFD actions require explicit user confirmation and `allowTrading:true`: + +```bash +mnie rpc call orders.ifd.place '{"issueCode":"7203","market":"T","side":"buy","quantity":100,"accountType":"specific","kind":"market","allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.ifd.placeCorrection '{"orderNumber":"123456","orderId":"abcdef","market":"T","quantity":100,"price":2500,"allowTrading":true}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.ifd.placeCancel '{"orderNumber":"123456","orderId":"abcdef","allowTrading":true}' --profile local --passkey-id sbi_xxx +``` + +## Theme Investment Orders + +```bash +mnie rpc call orders.themeInvestment.list '{"themeId":"theme_xxx"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.themeInvestment.estimate '{"themeId":"theme_xxx","side":"buy","accountType":"specific","orderAmount":10000}' --profile local --passkey-id sbi_xxx +``` + +Live theme investment placement requires explicit user confirmation and `allowTrading:true`: + +```bash +mnie rpc call orders.themeInvestment.place '{"themeId":"theme_xxx","side":"buy","accountType":"specific","orderAmount":10000,"allowTrading":true}' --profile local --passkey-id sbi_xxx +``` + +## Exchange Orders + +Rate and estimate are non-submitting: + +```bash +mnie rpc call orders.exchange.rate '{"side":"buy","currency":"USD"}' --profile local --passkey-id sbi_xxx +mnie rpc call orders.exchange.estimate '{"side":"buy","currency":"USD","quantity":100,"accountKind":"GENERAL"}' --profile local --passkey-id sbi_xxx +``` + +Live exchange placement requires explicit user confirmation and `allowTrading:true`: + +```bash +mnie rpc call orders.exchange.place '{"side":"buy","currency":"USD","quantity":100,"accountKind":"GENERAL","allowTrading":true}' --profile local --passkey-id sbi_xxx +``` + +## Notes For Agents + +- Use `mnie rpc methods --profile ` when the installed server may expose a different method set. +- Use the examples as shapes, not guaranteed complete order payloads. If an order method rejects params, inspect the error and ask for the missing order-specific fields rather than guessing. +- Prefer `estimate*` and `preOrder*` methods before any `place*`, `open`, `close`, `actualDelivery`, or `placeCancel` method.