Prompt Cookbook
Use these prompts to get started with the Axiory.ai MCP Server. Copy any prompt and adapt it to your needs. Behind each prompt, you’ll see which tool is called and what to expect in the response.
Check Connection Status
Section titled “Check Connection Status”Prompt: “Check the health status of my trading connection”
What happens:
- Calls
check_health - Returns overall system status (HEALTHY / DEGRADED / UNHEALTHY)
- Shows FIX session state (LOGON_SENT, ACTIVE, DISCONNECTED, etc.)
- Reports risk limit usage (position count, daily loss)
- Flags any active kill switch
When to use:
- Before trading to verify connectivity
- After a network interruption
- To monitor how close you are to risk limits
Get a Live Quote
Section titled “Get a Live Quote”Prompt: “What’s the current price of EURUSD?”
What happens:
- Calls
get_quotewith symbol=“EURUSD” - Returns bid/ask if you’re subscribed to live quotes
- Falls back to last fill price if no subscription
- Shows quote age (how fresh the data is)
When to use:
- Before placing orders to see current market price
- To validate the spread (bid-ask gap)
- To inform stop-loss and take-profit levels
Get Multiple Quotes at Once
Section titled “Get Multiple Quotes at Once”Prompt: “Get the current prices for EURUSD, GBPUSD, and XAUUSD”
What happens:
- Calls
get_quoteswith all three symbols - Returns bid/ask for each in a single call
- More efficient than calling get_quote three times
When to use:
- Checking multiple instrument prices at once
- Building a watchlist
- Validating before a multi-leg trade
Place a Market Buy Order
Section titled “Place a Market Buy Order”Prompt: “Buy 0.1 lots of EURUSD at market”
What happens:
- Converts 0.1 lots to units (100,000 units for FX)
- Calls
place_orderwith orderType=“MARKET”, side=“BUY”, volume=100000 - Runs 8 risk checks (kill switch, position limits, daily loss, etc.)
- If all pass: order is sent to broker and executed at market price
- Returns execution details with fill price and position ID
Response includes:
orderId(broker’s order ID)filledVolume(how much was executed)avgPrice(average fill price)positionId(needed for SL/TP orders)- Real execution if in live mode; simulated if in paper mode
Limitations:
- You MUST be in paper or live mode (not readonly)
- Position size limits apply
- Daily loss limit may block the order
Set Stop-Loss and Take-Profit (3-Step Workflow)
Section titled “Set Stop-Loss and Take-Profit (3-Step Workflow)”Step 1 - Place Entry: “Buy 1 lot of XAUUSD at market”
Response:
- Note the
positionIdfrom the response (e.g., “pos-xyz”) - This is your position handle
Step 2 - Place Stop-Loss: “Place a STOP order to sell 1 lot of XAUUSD at 2050 with positionId=pos-xyz”
Or simpler: “Set a stop-loss at 2050 on my XAUUSD position”
What happens:
- Calls
place_orderwith orderType=“STOP”, stopPrice=2050, positionId=pos-xyz - STOP orders trigger when price hits the stopPrice level
- Opposite side is inferred (if you bought, sell is the SL side)
- CRITICAL: Without positionId, this order opens a NEW position instead of closing the existing one
Step 3 - Place Take-Profit: “Place a LIMIT order to sell 1 lot of XAUUSD at 2150 with positionId=pos-xyz”
Or simpler: “Set a take-profit at 2150 on my XAUUSD position”
What happens:
- Calls
place_orderwith orderType=“LIMIT”, price=2150, positionId=pos-xyz - LIMIT orders execute when price reaches the price level
- Opposite side is inferred
OCO (One-Cancels-Other):
- When either SL or TP fills, the server automatically cancels the other
- If you manually close the position, both are auto-cancelled
Price rules:
- BUY position: SL stopPrice must be BELOW entry, TP price must be ABOVE entry
- SELL position: SL stopPrice must be ABOVE entry, TP price must be BELOW entry
Close a Position (Full Close)
Section titled “Close a Position (Full Close)”Prompt: “Close my EURUSD position”
What happens:
- Retrieves position from state
- Calls
close_positionwith the positionId - Infers opposite side (if LONG → SELL, if SHORT → BUY)
- Sends market order to broker
- Returns realized P&L
Response includes:
positionId(the closed position)realizedPnL(profit/loss in USD)exitPrice(where you closed)
Automatic actions:
- Any pending SL/TP orders linked to this position are auto-cancelled
- Realized P&L is recorded in trade history
Close a Position Partially
Section titled “Close a Position Partially”Prompt: “Close half of my GBPJPY position (I have 200,000 units, close 100,000)”
What happens:
- Calls
close_positionwith positionId and volume=100,000 - Original position still exists at 100,000 units
- Half-closed position records realized P&L for the exit portion
Response includes:
- Original position ID (still open at reduced size)
- Realized P&L for the partial close
- Remaining position volume
Close All Open Positions
Section titled “Close All Open Positions”Prompt: “Close all my open positions”
What happens:
- Calls
close_all_positionswith no symbol filter - Iterates every open position
- Sends a market IOC (immediate or cancel) order for each
- Closes each position sequentially
Response includes:
- Per-position results (succeeded, failed, realized P&L)
- Total realized P&L across all closes
Caution:
- This is destructive; your entire portfolio closes
- Confirm with the user before calling in live mode
Variant - Close by Symbol: “Close all my EURUSD positions”
- Calls
close_all_positionswith symbol=“EURUSD” - Only closes EURUSD positions, not others
View Open Positions with P&L
Section titled “View Open Positions with P&L”Prompt: “Show me all my open positions with P&L”
What happens:
- Calls
get_positions(no filter = all positions) - Returns all open positions from broker
- Includes entry price, current price, volume
- Shows both unrealizedPnL (USD) and unrealizedPnLRaw (quote currency)
Response includes per position:
- Symbol, side (BUY/SELL), volume in units
- Entry price, current price (from price cache)
unrealizedPnL(in USD, converted from quote currency)pnlCurrency(shows “USD” if converted, otherwise quote currency code)conversionRate(multiply-factor used for conversion)
Important:
- Accuracy depends on fresh price data
- If you see
priceSource: "unavailable", callget_quotesfirst to warm the cache - In paper mode, you see real broker positions (not simulated positions)
Variant - Check Specific Symbol: “Show me my XAUUSD positions”
- Calls
get_positionswith symbol=“XAUUSD” - Returns only XAUUSD positions
Review Trade History with Statistics
Section titled “Review Trade History with Statistics”Prompt: “Show me my recent trades with statistics”
What happens:
- Calls
get_trade_historywith limit=20 and includeStats=true - Returns 20 most recent closed trades
- Includes aggregate stats: win rate, profit factor, best/worst trades
Response includes per trade:
- Symbol, entry/exit price, volume
realizedPnL(in USD, converted from quote currency)openedAt/closedAt(timestamps)closeReason(MANUAL, STOP_LOSS, TAKE_PROFIT, CLOSE_ALL, or OCO)
Statistics (when includeStats=true):
winRate(0.0 = 0%, 1.0 = 100%)totalPnL(sum of all closed trades)profitFactor(gross wins ÷ gross losses, Infinity if no losses)avgWin/avgLoss(average winning/losing trade)bestTrade/worstTrade(individual trade P&L)
Notes:
- Only tracks trades closed through this MCP server
- History persists for the session (resets on server restart)
- Permanent record is in the JSONL journal file
Check Daily P&L and Risk Status
Section titled “Check Daily P&L and Risk Status”Prompt: “Check my daily P&L and risk limits”
What happens:
- Calls
check_healthfor complete status - Shows daily realized P&L (sum of all closed trades today)
- Reports risk limit usage (how close to daily loss limit)
- Warns if kill switch is active
Response includes:
dailyPnLrealized (USD)dailyPnLRaw(in quote currency)- Risk usage percentages (e.g., “45% of daily loss limit used”)
- Kill switch status and reason if active
When to use:
- Daily trading summary
- Before big trades to check headroom
- After a loss to assess remaining daily risk budget
Subscribe to Live Quotes
Section titled “Subscribe to Live Quotes”Prompt: “Subscribe to live quotes for EURUSD, GBPUSD, and XAUUSD”
What happens:
- Calls
subscribe_quoteswith symbol list - Opens QUOTE session (separate from TRADE session)
- Subscribes broker to send live bid/ask for each symbol
- Future
get_quotecalls return live data instead of stale fill prices
Response includes:
- List of newly subscribed symbols
- Total active subscriptions count
- Already-subscribed symbols (skipped silently)
Usage:
- Call once per session to enable live prices
- Reduces latency and improves P&L accuracy
- Quotes auto-resubscribe if connection drops and reconnects
Available Symbols and Lot Sizes
Section titled “Available Symbols and Lot Sizes”Prompt: “What symbols can I trade?”
What happens:
- Calls
get_symbolswith no filters - Returns full symbol catalog with lot sizes, asset classes, enabled status
Response includes per symbol:
symbol(e.g., “EURUSD”)lotSize(units per 1 standard lot; 100,000 for FX, 10 for XAUUSD, etc.)digits(decimal places; 5 for EURUSD, 2 for XAUUSD)assetClass(Forex, Metals, Crypto, Indices, Energies)enabled(true = tradeable, false = disabled)
Variant - Filter by Asset Class: “Show me all metal symbols”
- Calls
get_symbolswith assetClass=“Metals”
Variant - Find EUR pairs: “Show me all EUR symbols”
- Calls
get_symbolswith symbol=“EUR” (substring match)
Access Documentation
Section titled “Access Documentation”Prompt: “How do I place a LIMIT order?”
What happens:
- Calls
get_knowledgewith topic=“order-guide” - Returns guide with order types, examples, and syntax
Available topics:
order-guide— MARKET, LIMIT, STOP order detailsrisk-management— All 8 risk checks explainedlimitations— Known issues and constraintserror-codes— Error code referencefaq— Common questionsdisclaimer— Trading risk warnings
Usage:
- Call
get_knowledgewith no topic to list all available topics - Provide a topic to read full documentation
Best Practices for Prompts
Section titled “Best Practices for Prompts”- Be specific about symbols — “EURUSD” not “euro”, “XAUUSD” not “gold”
- Specify volume in lots first — “0.1 lots” then let the AI convert to units
- Use tool names loosely — Describe what you want to do; the AI calls the right tool
- Confirm before destructive operations — “Close all positions” should come with user confirmation
- Check health before live trading — Always verify connectivity first
- Use paper mode first — Test order logic in paper before live execution
- Warm the price cache — Call
get_quotesbefore relying onget_positionsP&L - Use positionId for SL/TP — Never place STOP/LIMIT without positionId (or they open new positions)
