Skip to content

Tool Reference

The Axiory.ai MCP Server exposes 19 MCP tools (also called “functions” in some clients) that handle all trading operations, market data queries, and system management. Each tool maps to a specific trading or information operation via the FIX 4.4 protocol.

MCP tools are functions that AI agents can call to perform actions. Think of them like API methods—you describe what you want to do in English, the AI agent calls the appropriate tool with the right parameters, and you get back structured results. Some tools modify state (place orders), while others just read information (check prices).

The 19 tools are organized into 5 categories:

Place, modify, and cancel orders. These are destructive operations that send real orders to the broker (in live mode) or validate them (in paper mode).

ToolDescriptionModeAnnotations
place_orderSubmit a new order (MARKET, LIMIT, STOP)paper/liveDestructive, non-idempotent
modify_orderChange volume, price, or stop price on pending orderpaper/liveDestructive, non-idempotent
cancel_orderCancel a pending order before fillpaper/liveDestructive, idempotent
close_positionClose an open position with a market orderpaper/liveDestructive, non-idempotent
close_all_positionsClose all positions (or by symbol)paper/liveDestructive, non-idempotent

Query live prices and subscribe to real-time quotes. These are read-only operations with no risk checks.

ToolDescriptionModeAnnotations
get_quoteGet current price for one symbolallRead-only, idempotent
get_quotesGet prices for multiple symbols (batch)allRead-only, idempotent
subscribe_quotesSubscribe to live bid/ask pricespaper/liveNon-idempotent

View your open positions, pending orders, and closed trade history. These are read-only operations.

ToolDescriptionModeAnnotations
get_positionsView all open positions with unrealized P&LallRead-only, idempotent
get_ordersView pending/open ordersallRead-only, idempotent
get_trade_historyView closed trades with realized P&L and statsallRead-only, idempotent

Look up symbols, access built-in documentation, and check system health. These are read-only operations.

ToolDescriptionModeAnnotations
get_symbolsQuery symbol catalog (IDs, lot sizes, asset classes)allRead-only, idempotent
get_knowledgeAccess built-in documentation and guidesallRead-only, idempotent
check_healthCheck server health, FIX state, risk limitsallRead-only, idempotent

Manage FIX sessions and authentication. These are infrastructure tools for connectivity and session control.

ToolDescriptionModeAnnotations
reconnect_trade_sessionForce reconnect TRADE FIX sessionpaper/liveDestructive, idempotent
reconnect_quote_sessionForce reconnect QUOTE FIX sessionpaper/liveIdempotent
reset_sessionRevoke all tokens and reset authenticationpaper/liveDestructive, non-idempotent
submit_feedbackSubmit bug reports or feature requestsallNon-idempotent, open-world
get_feedback_statusCheck status of submitted feedbackallRead-only, idempotent
ModeCan Trade?Can Read Data?Can Manage Sessions?
readonlyNo (rejected)YesNo
paperYes (simulated)YesYes
liveYes (real)YesYes

See Operating Modes for details on each mode.

Each tool has annotations that describe its behavior:

  • read-only — Does not modify state. Safe to call multiple times without consequence.
  • destructive — Modifies state (creates/cancels orders, closes positions). Use with caution.
  • idempotent — Can be called multiple times with the same parameters without side effects. Safe to retry on network failures.
  • non-idempotent — Multiple calls with same parameters produce different results (creates duplicate orders). Dangerous to retry blindly.
  • open-world — May interact with external systems (GitHub API for feedback) or have non-deterministic behavior.

Trading tools run automatic risk checks before execution:

  1. Kill switch — All trading blocked if daily loss limit exceeded
  2. Rate limiting — Prevents spam (rapid orders on same symbol)
  3. Operating mode — Must be paper or live (not readonly)
  4. Symbol whitelist — Symbol must exist and be enabled
  5. Per-asset-class position size — Single position cannot exceed configured max
  6. Maximum open positions — Total positions limited (linked SL/TP don’t count)
  7. Daily loss limit — Realized losses cannot exceed configured daily ceiling
  8. Volume validation — Volume must be positive and reasonable

See Risk Management for full details on each check.

I want to…

  • Place an orderplace_order
  • Modify a pending ordermodify_order
  • Cancel an ordercancel_order
  • Close a positionclose_position
  • Close all positionsclose_all_positions
  • Check my positionsget_positions
  • Check pending ordersget_orders
  • Get a current priceget_quote or get_quotes
  • Subscribe to live pricessubscribe_quotes
  • View closed tradesget_trade_history
  • Look up symbolsget_symbols
  • Read documentationget_knowledge
  • Check if I’m connectedcheck_health
  • Reconnect if disconnectedreconnect_trade_session or reconnect_quote_session
  • Report a bugsubmit_feedback
  • Check on my feedbackget_feedback_status
  • Change mode or re-authenticatereset_session

Each tool has a dedicated reference page with:

  • Full parameter descriptions
  • Example usage
  • Response format
  • Error codes and solutions
  • Workflow tips

Navigate to the tools you use most:

All volume parameters are specified in units, not lots:

  • FX pairs (EURUSD): 100,000 units = 1 standard lot, 10,000 units = 0.1 lot
  • Gold (XAUUSD): 10 units = 1 standard lot, 100 units = 10 lots
  • Silver (XAGUSD): 500 units = 1 standard lot

Call get_symbols to verify the lot size for any instrument before trading.

SL/TP orders require positionId to link them to an existing position. Without positionId, a STOP or LIMIT order opens a new independent position instead of closing the target:

CORRECT:
1. place_order (MARKET, side=BUY, volume=100000, symbol=EURUSD)
→ returns positionId="pos-123"
2. place_order (STOP, side=SELL, volume=100000, symbol=EURUSD, positionId="pos-123", stopPrice=1.0950)
→ closes position when price hits 1.0950
WRONG:
1. place_order (MARKET, side=BUY, volume=100000, symbol=EURUSD)
→ returns positionId="pos-123"
2. place_order (STOP, side=SELL, volume=100000, symbol=EURUSD, stopPrice=1.0950)
→ opens a NEW position (no positionId) instead of closing pos-123

When you link SL and TP orders to the same position, the server auto-cancels the remaining order when one fills:

Position: 1 lot EURUSD LONG
SL: STOP at 1.0900
TP: LIMIT at 1.1000
If price hits 1.1000:
- TP fills (you close at profit)
- SL is auto-cancelled
  1. Always warm the price cache — Call get_quotes before get_positions to ensure accurate unrealizedPnL
  2. Use paper mode first — Test order logic before trading live
  3. Check health before trading — Verify connectivity with check_health
  4. Never retry blindly — Non-idempotent tools (place_order) shouldn’t be retried on error
  5. Use positionId for SL/TP — Without it, you create independent positions
  6. Monitor daily loss — Check check_health to see how close to daily loss limit
  7. Read error responses carefully — They include suggestions for fixing the issue
  8. Use the journal — All operations are logged for audit and debugging

In addition to these tools, the server provides:

  • MCP Resources — Structured knowledge base topics accessible to agents
  • MCP Prompts — Pre-written system prompts that guide agent behavior

See Resources and Prompts for details.