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.

Get a token

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 route
guide 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.

ArgumentTypeDescription
query *stringSymbol or part of the company name, e.g. 'infosys' or 'HDFC'
limitintegerMax 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.

ArgumentTypeDescription
symbol *stringNSE 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.

ArgumentTypeDescription
symbol *stringNSE 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.

ArgumentTypeDescription
symbols *arrayNSE 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.

ArgumentTypeDescription
symbol *stringNSE symbol, e.g. RELIANCE, TCS, HDFCBANK
periodstring (1m | 3m | 6m | 1y | 2y | 5y …)Lookback window (default 1y)
fromstringStart date YYYY-MM-DD (overrides period)
tostringEnd 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.

ArgumentTypeDescription
symbol *stringNSE symbol, e.g. RELIANCE, TCS, HDFCBANK
period_typestring (quarterly | annual)Default quarterly
limitintegerNumber 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.

ArgumentTypeDescription
symbol *stringNSE symbol, e.g. RELIANCE, TCS, HDFCBANK
limitintegerNumber 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.

ArgumentTypeDescription
filtersarraye.g. [{"field":"ret_1y","op":"gt","value":20},{"field":"close","op":"lt","value":500}]
sectorstringRestrict to one sector (see list_sectors)
above_sma_200booleanOnly stocks trading above their 200-day average
sortstring (close | change_pct | volume | turnover | avg_volume_20d | high_52w …)Sort field (default turnover)
orderstring (asc | desc)Default desc
limitintegerMax rows (default 50, max 200)
offsetintegerRows 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.

ArgumentTypeDescription
letterstringFirst letter A-Z, or '0' for digits
sectorstringExact sector name (see list_sectors)
limitintegerMax rows (default 100, max 500)
offsetinteger
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.

ArgumentTypeDescription
kindstring (gainers | losers | active)Default gainers
limitintegerDefault 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.

ArgumentTypeDescription
daysintegerTrading 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).

ArgumentTypeDescription
periodstring (1d | 1w | 1m | 3m | 1y)Return period to colour by (default 1d)
limitintegerStocks 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.

ArgumentTypeDescription
indexstringExact index name, e.g. 'Nifty 50', 'Nifty Bank', 'Nifty Midcap 100'
daysintegerHistory 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.

ArgumentTypeDescription
signalstring (rsi_oversold | rsi_overbought | golden_cross | death_cross | breakout_high | breakout_low …)Which signal (default volume_spike)
limitintegerDefault 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.

ArgumentTypeDescription
sortstring (deliv_pct | deliv_jump)deliv_pct (highest %) or deliv_jump (biggest rise vs 20-day average). Default deliv_pct
min_turnover_crnumberMinimum turnover in ₹ crore (default 5)
limitintegerDefault 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.

ArgumentTypeDescription
daysintegerTrade dates of history (default 10, max 60)