Create a single-trade approval request
place_tradeHIGH RISK: creates a BotSpot website approval request for a single trade that may place real-money orders after approval. Provide reason before approval: at least 200 characters explaining the decision, supporting evidence and material risks; prefer 600–2,500. Maximum 100,000 Unicode characters and 400 KiB UTF-8. Do not include hidden chain of thought or secrets. Call this only when the signed-in user explicitly asks to buy or sell a specific symbol. Supply the requested quantity, or convert an authorized approximate dollar amount using a current price and disclose the reference, fees and possible execution difference. When any order price comes from an analysis, first call inspect_analysis_artifact and resolve_analysis_reference, then pass only the returned resolutionId in analysisBindings for the corresponding trade field. Never copy a displayed chart value, model-written number, or sampled chart row into the trade payload. The server loads the immutable resolution and fills the price before it validates and stages the order. A future condition such as trading when two series cross is a conditional trade intent, not an immediate place_trade request. Do not turn a condition into a present order or infer a current price. Include brokerCredentialId only when the user named an exact saved connection or explicitly delegated connection choice. Otherwise omit it so the website approval card can require visible broker selection before approval. Broker access must come from a saved broker credential; do not pass raw broker credentials, API keys, raw runtime configuration, inline code, requirements text, CSV rows, JSON row dumps, or other runtime payloads. Do not call list_broker_credentials merely to fill brokerCredentialId for an otherwise complete order. Multi-leg option package orders and multi-leg bracket-shaped approval requests are accepted and sent through LumiBot; if a broker or LumiBot cannot place the exact order shape, BotSpot returns the sanitized broker/LumiBot error. For an entry-only option package use top-level trade.orderClass=multileg, trade.orderType=debit or credit, trade.limitPrice, trade.timeInForce and trade.legs. Put assetType/symbol/side/quantity/expiration/strike/right on each leg, not on the package. It needs no invented exits. A requested multileg_bracket uses entry legs plus takeProfit/stopLoss. Use trade.assetType=option, entry.legs, takeProfit.limitPrice and stopLoss.stopPrice, with top-level timeInForce; use entry.legs only with those user-supplied exits. Set approvalOnly=true when the user asks to stage for review without submitting, even if a trading window exists. The tool still prepares its normal approval and will not submit that order until approved. Without an active owner-approved trading window, the tool returns a short-lived website authorization URL for the signed-in user to approve or deny. On that page the owner may explicitly authorize further trades in the same broker account for a chosen duration. An active window executes only for its bound owner, app, environment and broker account; expiry or revocation requires new website approval. It does not execute from chat-only approval, and it never returns broker secrets. For Codex, Claude, Cursor, and other clients without BotSpot native confirmation cards, return the exact authorizationUrl as a clickable Markdown link in your reply. Do not say a card or button was created unless the client actually rendered it. BotSpot clients may render structuredContent as a native confirmation, but a button name alone is not an approval link. A pending request is not execution; only the signed-in user may approve on the website. Report expiry and check get_deployment_action_status after approval.
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": {
"reason": "<reason>",
"trade": "<trade>"
},
"name": "place_trade"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| trade | Yes | ||
| reason | Yes | Required explicit trade explanation: at least 200 Unicode characters; prefer 600–2,500 covering intent, evidence and material risks. Maximum 100,000 characters and 400 KiB UTF-8. Do not include credentials or hidden chain of thought. | |
| approvalOnly | No | Set true when the owner requests review without submission. Always require approval for this order, even during an active trading window. | |
| idempotencyKey | No | ||
| brokerSelection | No | Preserve the user-requested provider and/or paper/live mode while leaving brokerCredentialId absent when no exact saved connection was selected. The user chooses a matching saved connection at approval. | |
| analysisBindings | No | ||
| brokerCredentialId | No |