AI-powered forex and crypto trading analysis with real-time data across 127+ instruments.
Inferred from the transports this listing declares (sse). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.
https://mcp.forex-gpt.ai/mcp45 tools · 155mssave_oanda_credentialsSave your OANDA API Key and Account ID securely.
These are required before you can trade.Save your OANDA API Key and Account ID securely. These are required before you can trade.
| Parameter | Type | Description |
|---|---|---|
| api_key* | string | — |
| account_id* | string | — |
delete_oanda_credentialsprivilegedRemove/Delete your stored OANDA API Key and Account ID.
Use this if you want to clear your credentials or switch accounts.Remove/Delete your stored OANDA API Key and Account ID. Use this if you want to clear your credentials or switch accounts.
No input schema was published for this tool.
trade_modify_tradeModify an existing trade's Stop Loss and Take Profit.
You can use absolute prices OR relative distances.
Only provided fields will be updated.
Args:
trade_id: The ID of the open trade to modify.
take_profit: New ABSOLUTE price.
stop_loss: New ABSOLUTE price.
take_profit_distance: New RELAT…Modify an existing trade's Stop Loss and Take Profit. You can use absolute prices OR relative distances. Only provided fields will be updated. Args: trade_id: The ID of the open trade to modify. take_profit: New ABSOLUTE price. stop_loss: New ABSOLUTE price. take_profit_distance: New RELAT…
| Parameter | Type | Description |
|---|---|---|
| trade_id* | string | — |
| take_profit | number | — |
| stop_loss | number | — |
| take_profit_distance | number | — |
| stop_loss_distance | number | — |
trade_market_orderPlace a Market Order.
units: Positive for Buy, Negative for Sell
take_profit: ABSOLUTE PRICE (e.g. 1.1250).
stop_loss: ABSOLUTE PRICE (e.g. 1.1100).
take_profit_distance: RELATIVE PIPS (e.g. 0.0050). Use this OR absolute price.
stop_loss_distance: RELATIVE PIPS (e.g. 0.0020). Use this OR absol…Place a Market Order. units: Positive for Buy, Negative for Sell take_profit: ABSOLUTE PRICE (e.g. 1.1250). stop_loss: ABSOLUTE PRICE (e.g. 1.1100). take_profit_distance: RELATIVE PIPS (e.g. 0.0050). Use this OR absolute price. stop_loss_distance: RELATIVE PIPS (e.g. 0.0020). Use this OR absol…
| Parameter | Type | Description |
|---|---|---|
| instrument* | string | — |
| units* | integer | — |
| take_profit | number | — |
| stop_loss | number | — |
| take_profit_distance | number | — |
| stop_loss_distance | number | — |
| trailing_stop_distance | number | — |
| guaranteed_stop_loss | boolean | — |
trade_limit_orderPlace a Limit Order.
price: The limit price to trigger the order.
take_profit: ABSOLUTE PRICE (e.g. 1.1250).
stop_loss: ABSOLUTE PRICE (e.g. 1.1100).
take_profit_distance: RELATIVE PIPS (e.g. 0.0050).
stop_loss_distance: RELATIVE PIPS (e.g. 0.0020).
trailing_stop_distance: RELATIVE DISTANCE f…Place a Limit Order. price: The limit price to trigger the order. take_profit: ABSOLUTE PRICE (e.g. 1.1250). stop_loss: ABSOLUTE PRICE (e.g. 1.1100). take_profit_distance: RELATIVE PIPS (e.g. 0.0050). stop_loss_distance: RELATIVE PIPS (e.g. 0.0020). trailing_stop_distance: RELATIVE DISTANCE f…
| Parameter | Type | Description |
|---|---|---|
| instrument* | string | — |
| units* | integer | — |
| price* | number | — |
| expiry | string | — |
| take_profit | number | — |
| stop_loss | number | — |
| take_profit_distance | number | — |
| stop_loss_distance | number | — |
| trailing_stop_distance | number | — |
| guaranteed_stop_loss | boolean | — |
trade_stop_orderPlace a Stop Order (Momentum/Breakout Entry).
Use this to Buy ABOVE market price or Sell BELOW market price.
Args:
instrument: Asset symbol (e.g. 'EUR_USD')
units: Positive for Buy, Negative for Sell
price: The STOP price to trigger the order.
expiry: ISO 8601 string (e.g. "2023-12-31T23:59…Place a Stop Order (Momentum/Breakout Entry). Use this to Buy ABOVE market price or Sell BELOW market price. Args: instrument: Asset symbol (e.g. 'EUR_USD') units: Positive for Buy, Negative for Sell price: The STOP price to trigger the order. expiry: ISO 8601 string (e.g. "2023-12-31T23:59…
| Parameter | Type | Description |
|---|---|---|
| instrument* | string | — |
| units* | integer | — |
| price* | number | — |
| expiry | string | — |
| take_profit | number | — |
| stop_loss | number | — |
| take_profit_distance | number | — |
| stop_loss_distance | number | — |
| trailing_stop_distance | number | — |
| guaranteed_stop_loss | boolean | — |
cancel_pending_orderCancel a pending (unfilled) Limit or Stop order.
Args:
order_id: The OANDA ID of the order to cancel.Cancel a pending (unfilled) Limit or Stop order. Args: order_id: The OANDA ID of the order to cancel.
| Parameter | Type | Description |
|---|---|---|
| order_id* | string | — |
replace_pending_orderReplace (Modify) an existing pending order.
Basically cancels the old one and places a new one atomically.
Args:
order_id: ID of the order to replace.
type: 'LIMIT' or 'STOP'.
(All other args same as placement tools)Replace (Modify) an existing pending order. Basically cancels the old one and places a new one atomically. Args: order_id: ID of the order to replace. type: 'LIMIT' or 'STOP'. (All other args same as placement tools)
| Parameter | Type | Description |
|---|---|---|
| order_id* | string | — |
| instrument* | string | — |
| units* | integer | — |
| price* | number | — |
| type | string | — |
| expiry | string | — |
| take_profit | number | — |
| stop_loss | number | — |
| take_profit_distance | number | — |
| stop_loss_distance | number | — |
| trailing_stop_distance | number | — |
| guaranteed_stop_loss | boolean | — |
get_open_tradesList open trades.List open trades.
No input schema was published for this tool.
get_open_positionsList open positions (Net Exposure per instrument).
Useful to see total Long/Short units and P&L per pair.List open positions (Net Exposure per instrument). Useful to see total Long/Short units and P&L per pair.
No input schema was published for this tool.
get_account_historyGet account transaction history (e.g. closed trades, order fills).
Useful for finding past trades, reporting, or auditing.
Args:
from_time: Start time (RFC3339 format, e.g. "2023-05-01T00:00:00Z").
to_time: End time (RFC3339).
type_filter: Comma-separated types (e.g. "ORDER_FILL,TRADE_CLOSE").…Get account transaction history (e.g. closed trades, order fills). Useful for finding past trades, reporting, or auditing. Args: from_time: Start time (RFC3339 format, e.g. "2023-05-01T00:00:00Z"). to_time: End time (RFC3339). type_filter: Comma-separated types (e.g. "ORDER_FILL,TRADE_CLOSE").…
| Parameter | Type | Description |
|---|---|---|
| from_time | string | — |
| to_time | string | — |
| type_filter | string | — |
get_trade_detailsGet full details of a specific trade (Open or Closed).
Useful to investigate a trade that disappeared or to see its full history.Get full details of a specific trade (Open or Closed). Useful to investigate a trade that disappeared or to see its full history.
| Parameter | Type | Description |
|---|---|---|
| trade_id* | string | — |
get_order_historyGet OANDA order history (FILLED, CANCELLED, TRIGGERED, etc.).
state: "ALL", "PENDING", "FILLED", "TRIGGERED", "CANCELLED".
count: Max 500.Get OANDA order history (FILLED, CANCELLED, TRIGGERED, etc.). state: "ALL", "PENDING", "FILLED", "TRIGGERED", "CANCELLED". count: Max 500.
| Parameter | Type | Description |
|---|---|---|
| state | string | — |
| count | integer | — |
get_pending_ordersList all PENDING orders (Limits, Stops, Entry Orders).
These are orders waiting to be filled.List all PENDING orders (Limits, Stops, Entry Orders). These are orders waiting to be filled.
No input schema was published for this tool.
get_trading_accountGet trading account summary (balance, margin).Get trading account summary (balance, margin).
No input schema was published for this tool.
close_tradeClose a specific trade (fully or partially).Close a specific trade (fully or partially).
| Parameter | Type | Description |
|---|---|---|
| trade_id* | string | — |
| units | string | — |
close_positionClose position for an instrument.Close position for an instrument.
| Parameter | Type | Description |
|---|---|---|
| instrument* | string | — |
| long_units | string | — |
| short_units | string | — |
get_market_hoursGet trading hours for instruments. Use for session planning or bulk data fetch.
Args:
instrument: Specific instrument (e.g., "EUR_USD", "US30_USD"). If None, returns all.
category: Filter by category (e.g., "Forex CFDs", "Index CFDs", "Commodity CFDs", "Metals CFDs", "Bonds CFDs").
include_st…Get trading hours for instruments. Use for session planning or bulk data fetch. Args: instrument: Specific instrument (e.g., "EUR_USD", "US30_USD"). If None, returns all. category: Filter by category (e.g., "Forex CFDs", "Index CFDs", "Commodity CFDs", "Metals CFDs", "Bonds CFDs"). include_st…
| Parameter | Type | Description |
|---|---|---|
| instrument | string | — |
| category | string | — |
| include_status | boolean | — |
is_market_openCheck if a specific market is currently open for trading.
Args:
instrument: The OANDA instrument name (e.g., "EUR_USD", "US30_USD", "XAU_USD").
at_time: Optional ISO8601 datetime to check (e.g., "2024-01-15T14:30:00Z").
Defaults to current time if not provided.
Returns:
- instrument: The…Check if a specific market is currently open for trading. Args: instrument: The OANDA instrument name (e.g., "EUR_USD", "US30_USD", "XAU_USD"). at_time: Optional ISO8601 datetime to check (e.g., "2024-01-15T14:30:00Z"). Defaults to current time if not provided. Returns: - instrument: The…
| Parameter | Type | Description |
|---|---|---|
| instrument* | string | — |
| at_time | string | — |
get_market_categoriesGet all available market categories and instrument counts.
Useful for understanding what categories can be queried with get_market_hours.
Returns:
List of categories with counts and sample instruments.Get all available market categories and instrument counts. Useful for understanding what categories can be queried with get_market_hours. Returns: List of categories with counts and sample instruments.
No input schema was published for this tool.
get_instrument_specsGet instrument specifications (precision, limits, margin, financing rates).
Args:
instrument: Specific instrument (e.g., "EUR_USD"). If None, returns all or filtered by type.
type_filter: Filter by type: "CURRENCY", "METAL", "CFD". If None, returns all.
include: List of field groups to includ…Get instrument specifications (precision, limits, margin, financing rates). Args: instrument: Specific instrument (e.g., "EUR_USD"). If None, returns all or filtered by type. type_filter: Filter by type: "CURRENCY", "METAL", "CFD". If None, returns all. include: List of field groups to includ…
| Parameter | Type | Description |
|---|---|---|
| instrument | string | — |
| type_filter | string | — |
| include | array | — |
refresh_instrument_dataManually refresh instrument data from OANDA API.
Updates financing rates, margin requirements, and other parameters.
Requires: User must have saved OANDA credentials via save_oanda_credentials.
Returns:
- success: Boolean indicating if refresh succeeded
- message: Status message
- count:…Manually refresh instrument data from OANDA API. Updates financing rates, margin requirements, and other parameters. Requires: User must have saved OANDA credentials via save_oanda_credentials. Returns: - success: Boolean indicating if refresh succeeded - message: Status message - count:…
No input schema was published for this tool.
get_instrument_cache_statusCheck the status of the instrument data cache.
Returns:
- ageHours: How old the cached data is
- isStale: True if data is older than 24 hours
- lastRefreshed: When the cache was last updated
- instrumentCount: Number of instruments in cache
- recommendation: Whether refresh is recommendedCheck the status of the instrument data cache. Returns: - ageHours: How old the cached data is - isStale: True if data is older than 24 hours - lastRefreshed: When the cache was last updated - instrumentCount: Number of instruments in cache - recommendation: Whether refresh is recommended
No input schema was published for this tool.
get_token_balancesReturn the current user's token balances from Auth0 app_metadata.
Uses _safe_profile() so that the same values shown inside AI analysis
(token_quota, purchased_tokens, total_token_usage, last_reset, email, user_id)
are returned in a simple JSON structure.Return the current user's token balances from Auth0 app_metadata. Uses _safe_profile() so that the same values shown inside AI analysis (token_quota, purchased_tokens, total_token_usage, last_reset, email, user_id) are returned in a simple JSON structure.
No input schema was published for this tool.
list_assetsReturn supported asset symbols from config.OANDA_UNIVERSE.
Optional:
• filter: substring (case-insensitive) to narrow the list
• asset: specific symbol to test membershipReturn supported asset symbols from config.OANDA_UNIVERSE. Optional: • filter: substring (case-insensitive) to narrow the list • asset: specific symbol to test membership
| Parameter | Type | Description |
|---|---|---|
| filter | string | — |
| asset | string | — |
analyze_assetRun a one-shot technical analysis for a single asset/timeframe.
Args:
asset: Asset symbol (e.g., EUR_USD, XAU_USD)
timeframe: Timeframe for analysis (D, H4, H1, etc.)
priceType: Price type - B (bid), A (ask), or M (mid)
timeoutSec: Timeout in seconds (5-120)
Returns:
Analysis results wit…Run a one-shot technical analysis for a single asset/timeframe. Args: asset: Asset symbol (e.g., EUR_USD, XAU_USD) timeframe: Timeframe for analysis (D, H4, H1, etc.) priceType: Price type - B (bid), A (ask), or M (mid) timeoutSec: Timeout in seconds (5-120) Returns: Analysis results wit…
| Parameter | Type | Description |
|---|---|---|
| asset* | string | — |
| timeframe | string | — |
| priceType | string | — |
| timeoutSec | integer | — |
get_watchlistView the current assets in your saved watchlist.
Returns:
List of saved assets and count.View the current assets in your saved watchlist. Returns: List of saved assets and count.
No input schema was published for this tool.
add_to_watchlistAdd a new asset to your persistent watchlist.
Args:
asset: Asset symbol (e.g. 'EUR_USD', 'BTC_USD')Add a new asset to your persistent watchlist. Args: asset: Asset symbol (e.g. 'EUR_USD', 'BTC_USD')
| Parameter | Type | Description |
|---|---|---|
| asset* | string | — |
remove_from_watchlistprivilegedRemove an asset from your persistent watchlist.
Args:
asset: Asset symbol to removeRemove an asset from your persistent watchlist. Args: asset: Asset symbol to remove
| Parameter | Type | Description |
|---|---|---|
| asset* | string | — |
analyze_watchlistAnalyze multiple assets from the user's SAVED watchlist in parallel.
Args:
timeframe: Timeframe (D, H4, H1, etc.)
priceType: B (bid), A (ask), or M (mid)
timeoutSec: Overall timeout in seconds (30-300)
(optional) timeframes: list of timeframes (timeframes mode) – if provided, supersedes time…Analyze multiple assets from the user's SAVED watchlist in parallel. Args: timeframe: Timeframe (D, H4, H1, etc.) priceType: B (bid), A (ask), or M (mid) timeoutSec: Overall timeout in seconds (30-300) (optional) timeframes: list of timeframes (timeframes mode) – if provided, supersedes time…
| Parameter | Type | Description |
|---|---|---|
| timeframe | string | — |
| priceType | string | — |
| timeoutSec | integer | — |
| timeframes | array | — |
| max_assets | integer | — |
analyze_timeframesAnalyze a single asset across multiple timeframes simultaneously.
Args:
asset: Asset symbol (e.g., EUR_USD)
timeframes: List of timeframes (e.g., ["D", "H4", "H1"])
priceType: B (bid), A (ask), or M (mid)
timeoutSec: Overall timeout in seconds (30-300)
Returns:
Multi-timeframe analysis r…Analyze a single asset across multiple timeframes simultaneously. Args: asset: Asset symbol (e.g., EUR_USD) timeframes: List of timeframes (e.g., ["D", "H4", "H1"]) priceType: B (bid), A (ask), or M (mid) timeoutSec: Overall timeout in seconds (30-300) Returns: Multi-timeframe analysis r…
| Parameter | Type | Description |
|---|---|---|
| asset* | string | — |
| timeframes* | array | — |
| priceType | string | — |
| timeoutSec | integer | — |
economic_eventsFetch upcoming economic events via the TradingView proxy source.
Args:
fromDays: Start of date range (days from now, 0-90)
toDays: End of date range (days from now, 0-90)
Returns:
List of economic events with importance, country, and timingFetch upcoming economic events via the TradingView proxy source. Args: fromDays: Start of date range (days from now, 0-90) toDays: End of date range (days from now, 0-90) Returns: List of economic events with importance, country, and timing
| Parameter | Type | Description |
|---|---|---|
| fromDays | integer | — |
| toDays | integer | — |
get_blog_articlesGet recent articles from the Forex-GPT blog feed.
Args:
max_results: Maximum number of articles to return (1-50, default: 10)
Returns:
List of recent blog articles with titles, URLs, summaries, images, and publication datesGet recent articles from the Forex-GPT blog feed. Args: max_results: Maximum number of articles to return (1-50, default: 10) Returns: List of recent blog articles with titles, URLs, summaries, images, and publication dates
| Parameter | Type | Description |
|---|---|---|
| max_results | integer | — |
healthComprehensive health and status check including optional upstream dependencies.
Args:
checkOpenAI: Verify OpenAI API connectivity
checkTradingView: Verify TradingView API connectivity
checkOANDA: Verify OANDA API connectivity
Returns:
Health status with environment info and dependency che…Comprehensive health and status check including optional upstream dependencies. Args: checkOpenAI: Verify OpenAI API connectivity checkTradingView: Verify TradingView API connectivity checkOANDA: Verify OANDA API connectivity Returns: Health status with environment info and dependency che…
| Parameter | Type | Description |
|---|---|---|
| checkOpenAI | boolean | — |
| checkTradingView | boolean | — |
| checkOANDA | boolean | — |
get_chart_dataRetrieve OHLC (candlestick) data for charting.
Args:
asset: Asset symbol (e.g., EUR_USD)
timeframe: Timeframe (D, H4, H1, etc.)
count: Number of candles (50-5000)
Returns:
Candlestick data with timestamps, open, high, low, close pricesRetrieve OHLC (candlestick) data for charting. Args: asset: Asset symbol (e.g., EUR_USD) timeframe: Timeframe (D, H4, H1, etc.) count: Number of candles (50-5000) Returns: Candlestick data with timestamps, open, high, low, close prices
| Parameter | Type | Description |
|---|---|---|
| asset* | string | — |
| timeframe | string | — |
| count | integer | — |
| price | string | — |
get_live_heatmapGenerates a real-time Sentiment Heatmap snapshot.
Behavior:
1. If 'assets' are provided, scans those specific assets.
2. If 'assets' not provided, scans the user's saved Watchlist.
3. If Watchlist is empty, scans a default list of popular global assets.
Args:
assets: Optional list of symb…Generates a real-time Sentiment Heatmap snapshot. Behavior: 1. If 'assets' are provided, scans those specific assets. 2. If 'assets' not provided, scans the user's saved Watchlist. 3. If Watchlist is empty, scans a default list of popular global assets. Args: assets: Optional list of symb…
| Parameter | Type | Description |
|---|---|---|
| assets | — | — |
| timeframe | string | — |
| count | integer | — |
searchSearch forex analysis results by asset name, timeframe, or keywords.
Returns a list of available analyses matching the search criteria.
Args:
query: Search query (e.g., "EUR_USD", "daily analysis", "gold", "bitcoin")
Returns:
Search results with IDs for fetching full analysisSearch forex analysis results by asset name, timeframe, or keywords. Returns a list of available analyses matching the search criteria. Args: query: Search query (e.g., "EUR_USD", "daily analysis", "gold", "bitcoin") Returns: Search results with IDs for fetching full analysis
| Parameter | Type | Description |
|---|---|---|
| query* | string | — |
fetchRetrieve complete forex analysis by ID.
Args:
id: Analysis ID in format "ASSET_TIMEFRAME" (e.g., "EUR_USD_D", "XAU_USD_H4")
Returns:
Full analysis document with technical indicators, signals, and recommendationsRetrieve complete forex analysis by ID. Args: id: Analysis ID in format "ASSET_TIMEFRAME" (e.g., "EUR_USD_D", "XAU_USD_H4") Returns: Full analysis document with technical indicators, signals, and recommendations
| Parameter | Type | Description |
|---|---|---|
| id* | string | — |
scan_marketScans the entire market universe (Forex, Crypto, Metals, Indices) to find the strongest trading opportunities.
Args:
timeframes: List of timeframes to scan (e.g. ["H1", "H4", "D"]). Default is ["H8"].
min_score: Minimum absolute sentiment score (0-100) to include. Default 80 (Bullish/Bearish).…Scans the entire market universe (Forex, Crypto, Metals, Indices) to find the strongest trading opportunities. Args: timeframes: List of timeframes to scan (e.g. ["H1", "H4", "D"]). Default is ["H8"]. min_score: Minimum absolute sentiment score (0-100) to include. Default 80 (Bullish/Bearish).…
| Parameter | Type | Description |
|---|---|---|
| timeframes | array | — |
| min_score | number | — |
| limit | integer | — |
| perSide | — | — |
| minAbs | — | — |
| sentiment | string | — |
get_spreadsChecks the current liquidity and trading cost (spread) for an asset.
Useful for checking if a market is too expensive to trade right now.
Args:
asset: The asset symbol (e.g., "EUR_USD", "XAU_USD")
Returns:
Current spread, average spread, and cost in basis points.Checks the current liquidity and trading cost (spread) for an asset. Useful for checking if a market is too expensive to trade right now. Args: asset: The asset symbol (e.g., "EUR_USD", "XAU_USD") Returns: Current spread, average spread, and cost in basis points.
| Parameter | Type | Description |
|---|---|---|
| asset* | string | — |
| granularity | string | — |
| count | integer | — |
get_server_timeReturn the server's current UTC timestamp (ISO 8601).Return the server's current UTC timestamp (ISO 8601).
No input schema was published for this tool.
help_tutorialMaster tutorial for MCP tools: usage tips, key parameters, and suggested flows.Master tutorial for MCP tools: usage tips, key parameters, and suggested flows.
No input schema was published for this tool.
get_price_stream_urlReturn a short-lived URL for the raw price stream (SSE) for given instruments.
The URL expires after ~10 minutes.Return a short-lived URL for the raw price stream (SSE) for given instruments. The URL expires after ~10 minutes.
| Parameter | Type | Description |
|---|---|---|
| instruments* | array | — |
get_sentiment_stream_urlReturn a short-lived URL for the sentiment stream (SSE) for given instruments and granularity.
The URL expires after ~10 minutes.Return a short-lived URL for the sentiment stream (SSE) for given instruments and granularity. The URL expires after ~10 minutes.
| Parameter | Type | Description |
|---|---|---|
| instruments* | array | — |
| granularity | string | — |
chart_chat_proxyProxy to the Flask /api/chart-chat endpoint using the caller's bearer token.
Keeps token accounting/auth consistent with the web app while exposing chat via MCP.Proxy to the Flask /api/chart-chat endpoint using the caller's bearer token. Keeps token accounting/auth consistent with the web app while exposing chat via MCP.
| Parameter | Type | Description |
|---|---|---|
| message* | string | — |
| chat_session_id | string | — |
| chart_id | string | — |
| instrument | string | — |
| granularity | string | — |
| price_type | string | — |
| max_tokens | integer | — |
45 of 45 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
AI-powered forex and crypto trading analysis with real-time data across 127+ instruments.
+ 5 more observed on this entry.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.