psx-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PSX_MCP_USER_AGENT | No | Override the request identity to the PSX Data Portal. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_symbolsA | Search PSX ticker symbols by symbol or company name. Use this FIRST whenever you are unsure of the exact ticker (e.g. query='Habib Bank' -> HBL). Optionally filter by exact sector name. Returns matches ranked with exact-symbol hits first. |
| get_quoteA | Get the latest quote for a PSX equity or ETF. Returns current price, LDCP (last day close), open/high/low, change and change %, volume, bid/ask, 52-week range, and trailing P/E — all in PKR. Live during market hours (Mon-Fri ~09:30-15:30 Pakistan time, UTC+5); outside hours it reflects the last session. For an index use get_indices. |
| get_intradayA | Intraday price bars for the current/most recent trading session. Ticks are aggregated locally into OHLCV bars per interval; 'raw' returns
individual ticks (can be thousands — keep limit small). Times are HH:MM in
Pakistan Standard Time. Returns the newest |
| get_eod_historyA | Daily end-of-day history (~5 years), newest first. Returns open, close and volume per day — this feed has NO high/low; for daily high/low use get_ohlc_history. Works for indices too (e.g. symbol='KSE100'). Dates are ISO (YYYY-MM-DD). ~260 rows is about one trading year. Optionally clip with start_date/end_date (ISO). |
| get_ohlc_historyA | Full daily OHLCV for a single calendar month (has daily high/low). This is the only free source of daily high/low. Call once per month
needed; for a long close-only series prefer get_eod_history (one call).
|
| get_market_snapshotA | Market-wide snapshot with top movers and a breadth summary. category: 'gainers' (top change %), 'losers' (bottom change %), or
'volume' (most traded). Optionally filter to a sector (by name). Never
returns all ~500 securities; raise |
| get_indicesA | All PSX indices (KSE100, KSE30, KMI30, ALLSHR, and ~14 others). Returns current value, day high/low, change and change % for each. For historical index values call get_eod_history with the index name as the symbol (e.g. 'KSE100'). |
| get_company_infoA | Company profile and fundamentals. Returns business description, sector, market cap (PKR), shares outstanding, free float, and trailing P/E. For the current price use get_quote (this tool omits the live quote to stay focused). |
| get_dividendsB | Dividend / payout history, newest first. Details use PSX notation, e.g. '60%(i) (D)' = 60% interim cash dividend, '(B)' = bonus shares, '(R)' = right shares. Includes the book-closure window. Percentages are of face value (PKR 10 for most PSX stocks). |
| get_announcementsB | Recent corporate announcements, newest first. Each item has a date, title, and a link to the PSX document (PDF) when available. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_stock | Produce a research brief for a single PSX stock. |
| market_overview | Summarize the state of the PSX market today. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| symbols_directory | The full PSX symbol directory (ticker, name, sector, ETF/debt flags). |
| sector_list | Distinct PSX sector names — valid values for the `sector` tool params. |
| indices_snapshot | Current values for all PSX indices. |
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: historical data (get_eod_history for close-only, get_ohlc_history for OHLC per month), snapshot for market movers, indices for index data, company info, dividends, announcements, intraday, symbol search, and quote. The descriptions explicitly clarify boundaries (e.g., get_eod_history vs get_ohlc_history, get_indices vs get_quote for indices), reducing ambiguity to near zero.
All tool names follow a consistent verb_noun snake_case pattern (get_eod_history, get_ohlc_history, get_market_snapshot, etc.). No deviations or mixed conventions; names are predictable and readable.
With 10 tools, the set is well-scoped for a PSX market data server, covering essential operations without redundancy. Each tool serves a distinct data need, and the count is typical for a focused financial API.
The tool surface covers a wide range: historical data (EOD and OHLC), quotes, indices, company info, dividends, announcements, intraday, and symbol search. However, it lacks tools for news or real-time streaming, and there is no explicit tool for retrieving sector lists or broader market data like commodities, which could be minor gaps for some agents.