Skip to main content
Glama
armaaar

thndr-mcp

by armaaar

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
THNDR_LANGUAGENo`en` or `ar` for localized fieldsen
THNDR_LOG_LEVELNo`debug`, `info`, `warn`, `error`, `silent` (logs go to stderr)info
THNDR_USER_AGENTNoUser agent of HTTP requests to ThndrChrome-like
THNDR_DEVICE_NAMENoDevice name in the login approval link (shown as a QR code; keep it short)thndr-mcp
THNDR_API_BASE_URLNoAPI endpointhttps://prod.thndr.app
THNDR_SESSION_FILENoWhere credentials are stored~/.config/thndr-mcp/session.json
THNDR_WEB_BASE_URLNoAPI endpointhttps://x.thndr.app/api
THNDR_RUNTIME_VERSIONNoOverride the `x-thndrx-runtime-version` headerbundled

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_statusA

Shows whether the server is logged in to Thndr, when the session expires, and which login step is pending. Call this first if another tool returns NOT_AUTHENTICATED or SESSION_EXPIRED.

login_startA

Step 1 of 3. Sends a 6-digit verification code to the email address of the Thndr account. Ask the user for their Thndr email if you do not know it. Next: login_verify_code.

login_verify_codeA

Step 2 of 3. Verifies the emailed code and creates a login request that the user must approve in the Thndr mobile app. Show the user the returned message (and deep link). Next: login_complete.

login_request_approvalA

Creates a new login request for an already identified user (no email code needed). Use it when the session expired (SESSION_EXPIRED). The user approves it in the Thndr mobile app. Next: login_complete.

login_completeA

Step 3 of 3. Waits (up to timeoutSeconds) for the user to approve the login in the Thndr mobile app, then stores the session. If it returns authenticated=false with status pending, call it again after the user approves.

login_import_sessionA

Fallback login for accounts that use Google/Apple sign-in: the user logs in at https://x.thndr.app in a browser and pastes the Cookie request header of any x.thndr.app/api request (DevTools → Network).

logoutA

Ends the Thndr session and deletes stored tokens. With forgetIdentity=true also signs out of Firebase.

search_instrumentsA

All markets: search stocks, ETFs, funds and indices by ticker or company name (English or Arabic). Returns tickers and Thndr asset ids. Call this first when you only know a company name.

get_instrument_detailsA

All markets: company profile and listing details for one instrument — name, sector (industry), board, currency, tradability, suspension, description and Thndr's tags (e.g. sector, "EGX30 Index", "Same Day Tradable", "Tech"). Egypt only: the indices it belongs to (EGX30, SHARIAH…); indices is null elsewhere.

get_price_snapshotA

All markets: current quote for up to 50 instruments. Egypt: last price, change, open/high/low, bid/ask, volume, value, daily price limits, 52-week range, P/E, EPS, dividend yield and market cap. US, UAE and other instruments: last, open, previous close, change, change %, bid/ask when known and the price time; other fields null. Asset ids of different markets may be mixed.

get_price_historyA

All markets. Egypt: historical OHLCV candles (kind: "candles"). US, UAE and other instruments: closing prices only (kind: "closes", points: [{time, close}], spacing chosen by Thndr: hourly for a week, daily for a month, weekly for the full history). Give either bars (most recent N, default 100) or a from/to range. History is limited to about 5 years.

get_market_depthB

Egypt only: order book (bids and asks aggregated by price level with order counts) and the bid/ask spread.

get_recent_tradesA

Egypt only: latest executed trades for an instrument. Use before with the returned nextCursor to page back.

get_market_statusA

Egypt, US and UAE (not the simulator): whether the market is open now, today's session open/close times and the market's main indices and benchmarks as Thndr shows them (Egypt: EGX30, EGX70…; US: SPY, QQQ, DIA…; UAE: FADGI…). Regular sessions: EGX Sunday–Thursday 10:00–14:30 Africa/Cairo; US 09:30–16:00 America/New_York.

screen_marketA

Egypt only: filter and rank every instrument of the market using the live snapshot — e.g. top gainers (sortBy=changePercent), top losers (order=asc), most active (sortBy=value), unusual volume (minRelativeVolume=200), value stocks (maxPeRatio, minDividendYield), a sector, the members of an index (index=EGX30), one of ThndrX's built-in screeners (preset=momentum-movers, breakout-radar, value-yield, steady-performers, reversal-watch) or one of the user's saved screeners (screenerId, see get_screeners). All given filters apply together. Index rows are never returned.

get_screenersA

Egypt (screen_market runs only on Egypt's snapshot): the user's saved Thndr screeners and ThndrX's built-in presets, each with its id, name and filters in plain words. Run one with screen_market (screenerId or preset).

get_index_constituentsA

Egypt only. Without index: the indices of the market (EGX30, EGX30 Capped, EGX70 EWI, EGX100 EWI, EGX35-LV, Shariah, Tamayuz…) with level, change % and member count. With index: its member instruments with sector, last price, change %, traded value/volume and market cap, sorted by sortBy. Thndr gives no index weights.

get_peersA

All markets: Thndr's "similar stocks" for one stock, each with last price and change %. Egypt also gives the largest other instruments of the same sector (by market cap) and, for every peer, traded value, market cap, P/E and dividend yield; elsewhere sameSector is empty (no whole-market snapshot) and those fields are null.

get_price_performanceA

All markets: trailing performance of one instrument — returns over 1W, 1M, 3M, 6M, YTD, 1Y, 3Y and 5Y, annualised historical volatility (30-day, 90-day, 1-year), the 52-week high/low, the 1-year maximum drawdown, and Thndr’s own one-year return. Egypt: from daily candles. US, UAE and others: from Thndr’s closing prices (daily recent closes, weekly older ones; the 52-week range is of closes) — see history and method.

get_financialsA

Egypt only: financial statements and ratios of a listed company from Thndr (balance sheet, income statement, cash flow, profitability, leverage, growth, per-share data) by period, with each metric’s latest value. compareToSector adds ThndrX’s sector comparison: per metric the sector median/min/max and a percentile rank.

get_newsA

All markets: news and exchange disclosures from Thndr’s feed, newest first, for one instrument (UAE instruments may have none). Without symbol: US market news for market: "us", else Thndr’s mixed feed of every market (EGX and US). 25 per page, repeated filings removed; limit keeps the first N. Content is truncated to contentChars (default 500) — follow link for the full text (EGX disclosures are PDFs).

get_economic_indicatorsA

Egypt only: macroeconomic data as Thndr shows it: headline readings (inflation, CBE deposit/lending rates, 12-month T-bill yield, unemployment, GDP) and the latest points of the inflation (monthly and yearly), CBE overnight rates, treasury-bill returns and quarterly unemployment series, with Thndr’s source descriptions.

get_marketsA

The Thndr markets this account can use (egypt, us, uae, simulator), the default one and any restriction, with each market’s exchange, currency and time zone and which thndr-mcp features work there (e.g. order book, candles and financials are Egypt-only; movers are Egypt and US). Call it to learn where a tool applies.

get_market_moversA

Thndr’s top gainers and/or losers of a market over a period (1D, 1W, 1M, 6M, 1Y), ranked by return, with each instrument’s price and today’s change. Egypt and US only. US lists can include instruments Thndr does not let you trade (tradable: false).

get_trendingA

The instruments trending on Thndr in a market (Egypt, US or UAE), most trending first, as the app’s Explore tab shows them: ticker, name, asset class and sector. Use get_price_snapshot for their prices.

get_tagsA

Thndr’s tags (the app calls them themes) for a market: curated groups such as "Sharia", "Gold Funds" or "Dividend Players", with what each is about and how many instruments it has. List a tag’s instruments with get_tag_instruments; get_instrument_details shows the tags of one instrument. Egypt and US.

get_tag_instrumentsA

The instruments of one Thndr tag (theme) in a market — e.g. every Sharia-compliant EGX stock or Thndr’s gold funds — with price and today’s change, paged. Give the tag’s id, slug or name (see get_tags). Egypt and US.

get_dividendsA

An instrument’s dividends as Thndr records them, newest first: cash (amount per share) or stock (bonus shares per share), record date, payment dates, currency and status (upcoming, ongoing, past). Any market; an empty list means Thndr records none for it.

get_account_summaryA

Cash and value of the Thndr account: buying power, blocked cash (reserved by open buy orders), unsettled cash, available cash, portfolio market value, total return and total account value.

get_account_positionsC

All holdings with quantity, average cost, market price and value, unrealized P/L, portfolio weight and allocation by asset class.

get_positionA

The holding in one instrument (or held=false). With includeSellable=true also returns how many shares can be sold now per settlement cycle (T0, T1, T+2).

get_account_ordersB

Order history and status (open, completed, cancelled, closed): side, type, quantity, filled quantity, price, validity, brackets. Read-only — this server cannot place, change or cancel orders.

get_realized_returnsB

Thndr's cumulative return to date (its "realized returns": account value minus net deposits, unrealized gains included) plus a series of account value, net deposits and returns over 1M, 6M, 1Y or 2Y.

get_closed_tradesB

Trading journal of round trips: entry/exit dates and prices, volume, net P/L and holding period.

get_sell_journalC

Each sell execution with exit price, volume, average entry price and net P/L.

get_trading_metricsC

Performance statistics: total return, win rate, profit factor, expectancy, average win/loss, risk/reward, average holding period, and per-instrument stats.

get_account_activityA

Cash ledger: deposits, withdrawals, order settlements, dividends, fees and transfers. Without a date range it returns one page; with from/to or a period preset it returns every entry in the range (newest first, up to 2000 scanned; truncated=true when the cap was hit).

get_portfolio_allocationB

All markets: holdings weighted by market value and grouped by asset class and by sector ("Unclassified" or "Funds (no sector)" when Thndr gives none). Egypt (and the simulator, through Egypt's data): sectors from the market snapshot and buckets by index membership (EGX30, EGX70 EWI, Shariah…; they overlap and do not sum to 100%). US and UAE: sectors from instrument details (at most 30 holdings, heaviest first) and no index buckets.

get_portfolio_performanceA

Portfolio performance for 1D, 7D, MTD, 1M, 6M, YTD, 1Y and 2Y from Thndr's returns chart: start/end value, value change, net deposits change, gain excluding deposits, time-weighted return %, change of Thndr’s total returns, the dates and series granularity (daily/weekly) used, and whether the period is only partly covered.

get_savingsA

Thndr savings ("Clouds"): total amount and gain, each savings bundle (type, amount, gains, withdrawable amount), amounts per product type, and the current yield of each product (currently earning %, nominal yields by frequency). Read-only — this server cannot move money into or out of savings.

get_watchlistsB

All custom watchlists of the Thndr account with their instruments (tickers and asset ids).

get_watchlistB

One watchlist by id with its instruments.

create_watchlistA

Creates a watchlist, optionally pre-filled with instruments (tickers or asset ids). Returns the new id; read the list with get_watchlist.

edit_watchlistA

Renames a watchlist and/or adds and removes instruments in one call. Returns what changed; read the list with get_watchlist.

delete_watchlistB

Deletes a watchlist permanently.

get_alertsB

Price alerts of the account, optionally only for one instrument. Paged.

get_alertC

One price alert by id.

create_alertA

Creates a price alert that notifies the user in the Thndr app when the instrument crosses price. Direction is inferred from the current price unless given; in the US give it explicitly, because Thndr has no whole-market snapshot there to read the current price from.

update_alertA

Changes an alert's price, direction or frequency. Thndr has no in-place edit, so the alert is replaced and gets a new id (returned together with previousId).

delete_alertC

Deletes a price alert.

get_notificationsB

In-app notifications from Thndr (order fills, rejections, triggered price alerts…), newest first.

mark_notifications_readA

Marks the given notification ids as read, or all of them with all=true.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 52 tools

Disambiguation3/5

Most tools target distinct resources, but several clusters overlap: get_watchlist vs get_watchlists, get_alert vs get_alerts, get_index_constituents vs screen_market's index filter, and get_market_movers vs screen_market's top-gainer mode. The detailed descriptions help an agent recover, but the set still requires careful reading to avoid misselection.

Naming Consistency4/5

The set is predominantly snake_case with a predictable verb_noun or get_/create_/update_/delete_ prefix pattern. A few outliers like auth_status (noun-only) and logout (verb-only) are minor deviations rather than a broken convention.

Tool Count1/5

With 52 tools this server is far beyond the typical well-scoped 3-15 range and exceeds even the '25+ too many' threshold. Although many tools serve real subdomains, the sheer surface size creates an extreme mismatch for an agent to navigate.

Completeness3/5

Read-side coverage is broad and CRUD is complete for watchlists and alerts, with full auth and account analysis. However, the surface has notable gaps for a trading integration: no order placement/change/cancel and no savings transfers, both explicitly excluded as read-only.

Maintenance

ActivityMaintained
ResponsivenessNo issues