API & MCP server
Every dataset on this site is available to your AI assistant over MCP and to your code over REST — same tools, same token, same daily quota.
1. Sign in
Remote connectors sign you in themselves. For code and local clients, create a token on the API tokens page. Free plan: 50 calls a day.
2. Connect
Add https://arthscan.me/mcp to claude.ai or ChatGPT and approve the sign-in, or give Claude Code / Cursor your token as a Bearer header.
3. Ask
“Which IT stocks are within 5% of their 52-week high?” — the assistant picks the tools.
Connect your client
claude.ai, ChatGPT and other remote connectors (OAuth)
Add a custom connector with the URL https://arthscan.me/mcp. The client discovers the sign-in from /.well-known/oauth-protected-resource/mcp, sends you here to approve, and refreshes its own access. No token to paste.
Claude Code (token)
claude mcp add --transport http arthscan https://arthscan.me/mcp --header "Authorization: Bearer YOUR_TOKEN"
JSON config (Claude Desktop, Cursor, Windsurf, VS Code…)
{
"mcpServers": {
"arthscan": {
"type": "http",
"url": "https://arthscan.me/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
} REST
curl -H "Authorization: Bearer YOUR_TOKEN" "https://arthscan.me/v1/search?query=infosys"
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
-d '{"filters":[{"field":"ret_1y","op":"gt","value":30}],"sort":"ret_1y","limit":10}' \
https://arthscan.me/v1/screener Responses are { ok: true, data } or { ok: false, error: { code, message } }.
Metered calls return X-RateLimit-Limit and X-RateLimit-Remaining; over the limit you get HTTP 429 until midnight IST.
Tools (21)
MCP tool name · REST routeguide GET /v1/guide free
Explains the available tools, data coverage, update times and limits. Call this first if unsure which tool fits.
search_stocks GET /v1/search
Find NSE stocks by symbol or company name. Returns symbol, name, sector and last price. Use this to resolve a company name to its symbol.
| Argument | Type | Description |
|---|---|---|
| query * | string | Symbol or part of the company name, e.g. 'infosys' or 'HDFC' |
| limit | integer | Max results (1-50, default 10) |
get_company GET /v1/stocks/:symbol
Profile for one stock: name, ISIN, sector, listing date, face value, plus the latest price snapshot and computed metrics.
| Argument | Type | Description |
|---|---|---|
| symbol * | string | NSE symbol, e.g. RELIANCE, TCS, HDFCBANK |
get_quote GET /v1/quote/:symbol
Latest end-of-day quote for one stock: open, high, low, close, previous close, change, volume and turnover.
| Argument | Type | Description |
|---|---|---|
| symbol * | string | NSE symbol, e.g. RELIANCE, TCS, HDFCBANK |
get_quotes GET /v1/quotes
Latest end-of-day close and change for up to 50 stocks in one call.
| Argument | Type | Description |
|---|---|---|
| symbols * | array | NSE symbols, max 50 |
get_price_history GET /v1/stocks/:symbol/history
Daily OHLCV candles for one stock, adjusted for splits and bonuses. Choose a period (1m, 3m, 6m, 1y, 2y, 5y, max) or explicit from/to dates.
| Argument | Type | Description |
|---|---|---|
| symbol * | string | NSE symbol, e.g. RELIANCE, TCS, HDFCBANK |
| period | string (1m | 3m | 6m | 1y | 2y | 5y …) | Lookback window (default 1y) |
| from | string | Start date YYYY-MM-DD (overrides period) |
| to | string | End date YYYY-MM-DD (default latest) |
get_financials GET /v1/stocks/:symbol/financials
Quarterly or annual income statement lines (revenue, operating profit, net profit, EPS) for one stock. INR crore.
| Argument | Type | Description |
|---|---|---|
| symbol * | string | NSE symbol, e.g. RELIANCE, TCS, HDFCBANK |
| period_type | string (quarterly | annual) | Default quarterly |
| limit | integer | Number of periods (default 8, max 40) |
get_shareholding GET /v1/stocks/:symbol/shareholding
Quarterly shareholding pattern for one stock: promoter, FII, DII, public, government and promoter pledge, as % of shares.
| Argument | Type | Description |
|---|---|---|
| symbol * | string | NSE symbol, e.g. RELIANCE, TCS, HDFCBANK |
| limit | integer | Number of quarters (default 8) |
list_screener_fields GET /v1/screener/fields free
Lists every field screen_stocks can filter and sort on, with units, definitions and whether any stock has data for it yet.
screen_stocks GET /v1/screener
Filter all NSE stocks by price, returns, 52-week range, volume, volatility, moving averages, P/E and sector. Filters combine with AND.
| Argument | Type | Description |
|---|---|---|
| filters | array | e.g. [{"field":"ret_1y","op":"gt","value":20},{"field":"close","op":"lt","value":500}] |
| sector | string | Restrict to one sector (see list_sectors) |
| above_sma_200 | boolean | Only stocks trading above their 200-day average |
| sort | string (close | change_pct | volume | turnover | avg_volume_20d | high_52w …) | Sort field (default turnover) |
| order | string (asc | desc) | Default desc |
| limit | integer | Max rows (default 50, max 200) |
| offset | integer | Rows to skip, for paging |
list_stocks GET /v1/stocks
Lists stocks alphabetically, optionally by first letter or by sector. Use for browsing; use search_stocks to find a specific company.
| Argument | Type | Description |
|---|---|---|
| letter | string | First letter A-Z, or '0' for digits |
| sector | string | Exact sector name (see list_sectors) |
| limit | integer | Max rows (default 100, max 500) |
| offset | integer |
list_sectors GET /v1/sectors
Every sector with its stock count, average 1-day and 1-month return, and total turnover. Good for a sector overview.
get_market_movers GET /v1/market/movers
Top gainers, top losers or most active stocks (by turnover) for the latest trading day. Ordinary shares only (no ETFs); ignores illiquid stocks; gainers and losers also leave out stocks on their listing day, whose change is measured against the issue price.
| Argument | Type | Description |
|---|---|---|
| kind | string (gainers | losers | active) | Default gainers |
| limit | integer | Default 10, max 50 |
get_market_summary GET /v1/market/summary
Breadth for the latest trading day: advances, declines, unchanged, stocks at 52-week highs/lows, total turnover, plus the latest FII/DII net flows.
get_fii_dii GET /v1/market/fii-dii
Daily FII/FPI and DII cash-market buy, sell and net values (INR crore), plus monthly totals.
| Argument | Type | Description |
|---|---|---|
| days | integer | Trading days of daily data (default 30, max 500) |
get_heatmap GET /v1/market/heatmap
Most traded stocks grouped by sector with their latest change and turnover, for a heatmap. Tile size = turnover (market cap isn't available yet).
| Argument | Type | Description |
|---|---|---|
| period | string (1d | 1w | 1m | 3m | 1y) | Return period to colour by (default 1d) |
| limit | integer | Stocks to include, most traded first (default 200, max 500) |
get_index_valuations GET /v1/market/valuations
P/E, P/B and dividend yield for NSE indices. Without an index: the latest values for every index. With an index (e.g. 'Nifty 50'): its daily history.
| Argument | Type | Description |
|---|---|---|
| index | string | Exact index name, e.g. 'Nifty 50', 'Nifty Bank', 'Nifty Midcap 100' |
| days | integer | History length in trading days when an index is given (default 250, max 1000) |
get_sector_rotation GET /v1/market/sector-rotation
Median return of each sector over 1 week, 1 month, 3 months, 6 months and 1 year, plus the share of its stocks above their 50-day average. Shows which sectors are gaining or losing leadership.
get_technical_signals GET /v1/market/signals
Stocks currently showing a technical signal: RSI oversold/overbought, 50/200-day golden or death cross (last 5 sessions), 52-week breakout or breakdown, volume spike, or MACD bullish/bearish. Liquid stocks only.
| Argument | Type | Description |
|---|---|---|
| signal | string (rsi_oversold | rsi_overbought | golden_cross | death_cross | breakout_high | breakout_low …) | Which signal (default volume_spike) |
| limit | integer | Default 50, max 200 |
get_top_deliveries GET /v1/market/deliveries
Stocks with the highest share of traded quantity taken for delivery in the last session — often read as conviction buying or selling rather than intraday trading. Includes the 20-day average for comparison.
| Argument | Type | Description |
|---|---|---|
| sort | string (deliv_pct | deliv_jump) | deliv_pct (highest %) or deliv_jump (biggest rise vs 20-day average). Default deliv_pct |
| min_turnover_cr | number | Minimum turnover in ₹ crore (default 5) |
| limit | integer | Default 50, max 200 |
get_fo_ban GET /v1/market/fo-ban
Securities in the F&O ban period (market-wide open interest above 95% of the limit, so no new positions), for the latest trade date and recent days.
| Argument | Type | Description |
|---|---|---|
| days | integer | Trade dates of history (default 10, max 60) |