← agenticmarkets.dev
Tool reference 45
Auto-generated from the live Zod contracts. Each tool's input is what you POST in params.arguments; output is what you receive inside the standard envelope (data + meta).
getAnnualReport
[since=0.5.0] Annual report PDF URLs filed at BSE. Pass `scrip_code`/`isin`, optional `fiscal_year`, `limit`. Returns reports[] with fiscal year + URL + filed_at. Use this to fetch the actual annual report document.
Input
| field | type |
|---|
scrip_code optional | string |
isin optional | string |
fiscal_year optional | number (min 1990) (max 2100) |
limit | number (min 1) (max 10) default 5 |
Output
| field | type |
|---|
data | { reports: { fiscal_year: number, scrip_code: string | null, isin: string | null, url: string, filed_at: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 7776000s · readOnly
getAuditor
[since=0.5.0] Statutory auditor records per company (MCA). Pass `cin`/`isin`/`symbol`, optional `fiscal_year`. Returns audit firm + partner + appointment date + qualifications.
Input
| field | type |
|---|
cin optional | string |
isin optional | string |
symbol optional | string (min 1) (max 60) |
fiscal_year optional | number (min 1990) (max 2100) |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { auditors: { auditor_event_id: string, cin: string | null, symbol: string | null, isin: string | null, fiscal_year: number | null, audit_firm: string, partner_name: string | null, appointment_date: string | null, qualifications: string | null, auditor_kind: string | null, event_type: string | null, source_url: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 7776000s · readOnly
getBoardMeeting
[since=0.5.0] Board meeting calendar / outcomes. Pass `symbol`/`isin`, optional date range, `purpose` (substring). Returns meetings with date, purpose, broadcast_date.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
purpose optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { symbol: string | null, meetings: { symbol: string, isin: string | null, meeting_date: string, purpose: string, description: string | null, attachment_url: string | null, broadcast_date: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 86400s · readOnly
getBseFiling
[since=0.5.0] Recent BSE corporate announcements. Pass `scrip_code`/`isin` plus optional `from_date`/`to_date`/`category`/`limit` (max 25). Returns filings array with subject, headline, attachment URL, is_critical flag.
Input
| field | type |
|---|
scrip_code optional | string |
isin optional | string |
from_date optional | string |
to_date optional | string |
category optional | string |
limit | number (min 1) (max 25) default 5 |
Output
| field | type |
|---|
data | { filings: { filing_id: string, scrip_code: string, isin: string | null, company_name: string | null, category: string | null, subject: string | null, headline: string | null, is_critical: boolean, filed_at: string, attachment_url: string | null }[], next_cursor: string | null, query: { scrip_code: string | null, isin: string | null, category: string | null, from_date: string | null, to_date: string | null } } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 21600s · readOnly
getBseFno
[since=0.5.0] BSE F&O bhavcopy contracts (futures + options) for a given underlying. Pass `underlying_symbol`, optional `trade_date`, `expiry`, `instrument_type`, `option_type`, `limit`.
Input
| field | type |
|---|
underlying_symbol | string (min 1) (max 60) |
trade_date optional | string |
expiry optional | string |
instrument_type | "STO" | "STF" | "IDO" | "IDF" | "any" |
option_type | "CE" | "PE" | "any" |
limit | number (min 1) (max 100) default 25 |
Output
| field | type |
|---|
data | { underlying_symbol: string, contracts: { fin_instrm_id: string, fin_instrm_tp: string, underlying_symbol: string, ticker_symbol: string, trade_date: string, expiry_date: string | null, strike_price: number | null, option_type: string | null, open_price: number | null, high_price: number | null, low_price: number | null, close_price: number | null, settle_price: number | null, underlying_price: number | null, open_interest: number | null, change_in_oi: number | null, volume: number | null, turnover: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getBseOhlc
[since=0.5.0] Date-range BSE OHLC bars. Pass `scrip_code` or `isin` plus optional `from_date`/`to_date` (default last 30d), `limit` (max 365), `cursor`. Use when you need a BSE time series.
Input
| field | type |
|---|
scrip_code optional | string |
isin optional | string |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 365) default 30 |
cursor optional | string |
Output
| field | type |
|---|
data | { entity: { isin: string | null, cin: string | null, figi: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX", scrip_code: string, ticker: string | null, display_name: string | null }, currency: "INR", bars: { trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, prev_close: number | null, volume: number | null, turnover: number | null }[], range: { from: string | null, to: string | null, requested_from: string | null, requested_to: string | null }, next_cursor: string | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getBseQuote
[since=0.5.0] Latest BSE daily quote for a Bombay-listed equity. Pass `scrip_code` (BSE 6-digit code) or `isin`. Optional `date`. Returns OHLC + volume + turnover + entity. Use this when an agent has a BSE-only ticker (no NSE listing).
Input
| field | type |
|---|
scrip_code optional | string |
isin optional | string |
date optional | string |
Output
| field | type |
|---|
data | { entity: { isin: string | null, cin: string | null, figi: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX", scrip_code: string, ticker: string | null, display_name: string | null }, trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, prev_close: number | null, volume: number | null, turnover: number | null, currency: "INR" } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getBulkDeals
[since=0.4.0] NSE bulk deals — block trades >0.5% of listed equity, disclosed daily. Pass any subset of `symbol`, `isin`, `client_name` (substring), `from_date`, `to_date`, `limit` (1–50, default 20). Returns deals with date, side (BUY/SELL), client, quantity, price, value (₹). Use this to track institutional positioning and block-trade-driven price moves.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
client_name optional | string (min 1) (max 200) |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { deals: { deal_id: string, deal_date: string, symbol: string, isin: string | null, client_name: string, side: string, quantity: number | null, price: number | null, value_inr: number | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 129600s · readOnly
getCirp
[since=0.5.0] IBBI Corporate Insolvency Resolution Process (CIRP) filings — bankruptcy proceedings. Pass `symbol`/`isin`/`cin`, optional `status`. Use for distressed-debt analysis.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
cin optional | string |
status | "active" | "closed" | "any" |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { filings: { filing_id: string, filing_date: string, cin: string | null, debtor_name: string, symbol: string | null, isin: string | null, amount_inr: number | null, status: string, irp_name: string | null, nclt_bench: string | null, announcement_type: string | null, source_url: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 604800s · readOnly
getCompany
[since=0.2.0] Indian company entity master record. Pass any one of `cin` (21-char MCA ID), `isin` (12-char ISO 6166), or `symbol` (NSE ticker). Returns canonical entity: legal_name, industry, HQ city/state/pin, incorporation date, is_listed flag, primary listing (ISIN + symbol + exchange), and the union of all sources where this entity is referenced (MCA, NSE, BSE, etc.) plus standard provenance envelope.
Input
| field | type |
|---|
cin optional | string (min 1) (max 40) |
isin optional | string |
symbol optional | string (min 1) (max 40) |
Output
| field | type |
|---|
data | { cin: string | null, legal_name: string, industry_label: string | null, hq_city: string | null, hq_state: string | null, hq_pin: string | null, incorporated_on: string | null, is_listed: boolean, primary_isin: string | null, primary_symbol: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX" | null, figi: string | null, source_origins: string[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 2592000s · readOnly
getCompanyContext
[since=0.4.1] One-shot company snapshot for an Indian-listed equity. Pass `symbol` or `isin`. Returns the canonical entity record, latest quote, last 30 days of OHLC, recent corporate filings, last 4 quarters of shareholding pattern, and recent SEBI insider trades — all in a single MCP response. Use this as the FIRST call when the user asks 'tell me about X', 'what's happening with Y', or 'is Z worth looking at' — it's a 5-tool fan-out compressed into one round trip. Sub-section limits configurable via `ohlc_days` (1–90, default 30), `filings_limit` (0–10, default 5), `shareholding_limit` (0–8, default 4), `insiders_limit` (0–10, default 5). If a sub-call fails, that section is null and the failure is recorded in `errors[section]`; the rest still returns.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
ohlc_days | number (min 1) (max 90) default 30 |
filings_limit | number (min 0) (max 10) default 5 |
shareholding_limit | number (min 0) (max 8) default 4 |
insiders_limit | number (min 0) (max 10) default 5 |
Output
| field | type |
|---|
data | { company: { cin: string | null, legal_name: string, industry_label: string | null, hq_city: string | null, hq_state: string | null, hq_pin: string | null, incorporated_on: string | null, is_listed: boolean, primary_isin: string | null, primary_symbol: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX" | null, figi: string | null, source_origins: string[] } | null, latest_quote: { entity: { isin: string | null, cin: string | null, figi: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX", primary_symbol: string, display_name: string | null }, trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, prev_close: number | null, volume: number | null, turnover: number | null, currency: "INR" } | null, ohlc: { entity: { isin: string | null, cin: string | null, figi: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX", primary_symbol: string, display_name: string | null }, currency: "INR", bars: { trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, prev_close: number | null, volume: number | null, turnover: number | null }[], range: { from: string | null, to: string | null, requested_from: string | null, requested_to: string | null }, next_cursor: string | null } | null, recent_filings: { filing_id: string, symbol: string, isin: string | null, category: string | null, description: string | null, filed_at: string, attachment_url: string | null, has_attachment_text: boolean, attachment_text_chars: number (min 0) | null, text_excerpt: string | null, text_truncated: boolean, text_sha256: string | null }[], recent_shareholding: { symbol: string, isin: string | null, quarter_end: string, promoter_pct: number | null, public_pct: number | null, employee_trusts_pct: number | null, underlying_drs_pct: number | null, submission_date: string | null, xbrl_url: string | null }[], recent_insiders: { trade_id: string, symbol: string, isin: string | null, acquirer_name: string, acquirer_role: string | null, trade_type: string, form_type: string | null, quantity: number | null, value_inr: number | null, pre_holding_pct: number | null, post_holding_pct: number | null, trade_date: string, filed_at: string | null, source_url: string | null }[], errors: Record } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getConcall
[since=0.5.0] Earnings conference call transcripts. Pass `symbol`/`isin`, optional date range, `limit`. Returns transcripts[] with concall_date, fiscal_quarter, sentiment, excerpt (5,000 chars by default), and attachment URL.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 10) default 4 |
fetch_full_text | boolean default false |
Output
| field | type |
|---|
data | { symbol: string, transcripts: { symbol: string, isin: string | null, concall_date: string, label: string, fiscal_quarter: string | null, transcript_url: string | null, attachment_url: string | null, text_chars: number | null, transcript_excerpt: string | null, text_truncated: boolean, text_sha256: string | null, full_text_url: string | null, words: number | null, net_tone: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 8640000s · readOnly
getCorporateActions
[since=0.4.0] Corporate actions for an Indian-listed equity (dividends, splits, bonuses, rights, buybacks). Pass `symbol` or `isin`. Optional `from_date`/`to_date`, `action_type` (dividend/split/bonus/rights/any, default any), `limit` (1–30, default 10). Returns actions with ex_date, type, purpose, factor (where applicable). Use this for total-return analysis and ex-date scheduling.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
action_type | "dividend" | "split" | "bonus" | "rights" | "any" |
limit | number (min 1) (max 30) default 10 |
Output
| field | type |
|---|
data | { symbol: string, isin: string | null, actions: { action_id: string, symbol: string, isin: string | null, ex_date: string, action_type: string, purpose: string | null, factor: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 604800s · readOnly
getCreditRating
[since=0.5.0] Credit ratings (CRISIL/ICRA/CARE/etc.) per company. Pass `symbol`/`isin`, optional date range. Returns rating actions with agency, instrument, rating, outlook, action_type (upgrade/downgrade/affirmation).
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { symbol: string | null, ratings: { rating_event_id: string, symbol: string, isin: string | null, rated_at: string, agency: string | null, instrument_type: string | null, rating: string | null, outlook: string | null, issue_size: number | null, action: string, source_url: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 1209600s · readOnly
getDelivery
[since=0.4.0] Daily NSE delivery percentage for a single ticker — what fraction of traded volume was actually delivered (not intra-day churn). Pass `symbol` or `isin`. Optional `from_date`/`to_date`, `limit` (1–30, default 7). High delivery % suggests genuine accumulation/distribution; low % suggests speculative trading. Returns array of bars with traded_qty, delivered_qty, delivery_pct.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 30) default 7 |
Output
| field | type |
|---|
data | { symbol: string, isin: string | null, days: { trade_date: string, traded_qty: number | null, delivered_qty: number | null, delivery_pct: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 129600s · readOnly
getEtf
[since=0.5.0] Indian ETF reference data. Pass `symbol`/`isin` for one ETF; omit both for paginated list. Returns scheme name, AMC, underlying index, expense ratio, AUM.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
limit | number (min 1) (max 100) default 25 |
cursor optional | string |
Output
| field | type |
|---|
data | { etfs: { symbol: string, exchange: string, isin: string | null, scheme_name: string | null, amc: string | null, underlying_index: string | null, assets: string | null, ltp: number | null, nav: number | null, nav_date: string | null, expense_ratio: number | null, aum_inr: number | null, listed_on: string | null }[], next_cursor: string | null } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 86400s · readOnly
getFiling
[since=0.2.0] Recent corporate-announcement filings (NSE) for an Indian-listed equity. Pass `symbol` or `isin` for a list (default 5 most recent), or `filing_id` for one specific filing. Optional `from_date`/`to_date` to filter the window, `limit` (max 25). Each filing returns metadata + a 2,000-char excerpt of the OCR'd attachment text by default. Pass `fetch_full_text: true` to get the full text — only do this if you actually need it, since filings can be tens of KB and consume agent context. Includes attachment URL, sha256 of full text, and standard provenance envelope.
Input
| field | type |
|---|
filing_id optional | string |
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 25) default 5 |
fetch_full_text | boolean default false |
Output
| field | type |
|---|
data | { filings: { filing_id: string, symbol: string, isin: string | null, category: string | null, description: string | null, filed_at: string, attachment_url: string | null, has_attachment_text: boolean, attachment_text_chars: number (min 0) | null, text_excerpt: string | null, text_truncated: boolean, text_sha256: string | null }[], next_cursor: string | null, query: { symbol: string (min 1) (max 60) | null, isin: string | null, filing_id: string | null, from_date: string | null, to_date: string | null } } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 21600s · readOnly
getFilingFullText
[since=0.5.0] Full OCR'd attachment text for a single filing. Pass `filing_id` (from getFiling or searchFilings). Returns the COMPLETE document text — only call this after narrowing to a specific filing, since payloads can be tens of KB.
Input
| field | type |
|---|
filing_id | string (min 1) |
Output
| field | type |
|---|
data | { filing_id: string, symbol: string, attachment_url: string | null, text_chars: number (min 0) | null, text_sha256: string | null, full_text: string | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 21600s · readOnly
getFinancialResults
[since=0.5.0] Quarterly / half-yearly / annual P&L filings. Pass `symbol`/`isin`, optional date range, `period_type`. Note: the structured P&L numbers live in the XBRL referenced by xbrl_url; this tool returns the FILING METADATA. Use getFundamentals for actual revenue/profit numbers.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
period_type | "quarterly" | "half-yearly" | "annual" | "any" |
limit | number (min 1) (max 20) default 8 |
Output
| field | type |
|---|
data | { symbol: string, results: { filing_id: string, symbol: string, isin: string | null, company_name: string | null, industry: string | null, result_date: string, period_type: string, audited: string | null, cumulative: string | null, ind_as: string | null, relating_to: string | null, financial_year: string | null, from_date: string | null, to_date: string | null, filing_date: string | null, xbrl_url: string | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 5184000s · readOnly
getFnoContracts
[since=0.3.0] NSE F&O contract data (futures + options) for a single underlying on a given trade date. Pass `underlying_symbol` (e.g., RELIANCE) — defaults to the latest available trade date. Filter by `expiry`, `instrument_type` (STO=stock option, STF=stock future, IDO=index option, IDF=index future), `option_type` (CE/PE), `limit` (max 100). Returns OHLC + settle + underlying spot + open interest + change-in-OI per contract. Use this for derivatives analysis, options chain lookups, OI sentiment.
Input
| field | type |
|---|
underlying_symbol | string (min 1) (max 60) |
trade_date optional | string |
expiry optional | string |
instrument_type | "STO" | "STF" | "IDO" | "IDF" | "any" |
option_type | "CE" | "PE" | "any" |
limit | number (min 1) (max 100) default 25 |
Output
| field | type |
|---|
data | { underlying_symbol: string, contracts: { fin_instrm_id: string, fin_instrm_tp: string, underlying_symbol: string, ticker_symbol: string, trade_date: string, expiry_date: string, strike_price: number | null, option_type: string | null, open_price: number | null, high_price: number | null, low_price: number | null, close_price: number | null, settle_price: number | null, underlying_price: number | null, open_interest: number | null, change_in_oi: number | null, volume: number | null, turnover: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getFundamentals
[since=0.4.0] Annual financial statements for an Indian-listed equity (Yahoo Finance, 5 years). Pass `symbol` or `isin`. Optional `fiscal_year`, `limit` (1–10, default 5 most recent). Returns revenue, net income, EPS, operating income, total assets, total liabilities, stockholders' equity, free cash flow, capex per fiscal year. Use this for valuation, growth, and balance-sheet trend analysis.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
fiscal_year optional | number (min 1990) (max 2100) |
limit | number (min 1) (max 10) default 5 |
Output
| field | type |
|---|
data | { symbol: string, isin: string | null, statements: { symbol: string, isin: string | null, fiscal_year: number, period_end: string, total_revenue: number | null, operating_income: number | null, net_income: number | null, basic_eps: number | null, diluted_eps: number | null, total_assets: number | null, total_liabilities: number | null, stockholders_equity: number | null, operating_cash_flow: number | null, free_cash_flow: number | null, capital_expenditure: number | null, currency: string | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 10368000s · readOnly
getFundamentalsSnapshot
[since=0.5.0] Trailing-twelve-month (TTM) rolling fundamentals snapshot per ticker. Pass `symbol` or `isin`. Returns the latest TTM revenue, net income, EPS — useful for current-state valuation queries.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
Output
| field | type |
|---|
data | { symbol: string, isin: string | null, scrip_code: string | null, as_of_date: string, eps: number | null, ceps: number | null, pe: number | null, pb: number | null, roe: number | null, opm: number | null, npm: number | null, cons_eps: number | null, cons_ceps: number | null, cons_pe: number | null, cons_pb: number | null, cons_roe: number | null, cons_opm: number | null, cons_npm: number | null, mcap_full_cr: number | null, mcap_ff_cr: number | null, vol_2w_lakh: number | null, turnover_cr: number | null, circuit_limit: string | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 259200s · readOnly
getHiLoEvents
[since=0.5.0] 52-week high/low breakout/breakdown events. Pass `symbol`/`isin` for one ticker, OR `event_type` for a cross-market scan. Optional `from_date`/`to_date`/`limit`. Use for momentum + breakout signals.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
event_type | "high" | "low" | "any" |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { events: { symbol: string, event_date: string, event_type: "high" | "low" | "any", isin: string | null, series: string | null?, price: number | null, prior_extreme: number | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 129600s · readOnly
getIndex
[since=0.3.0] Daily history for an Indian market index. Pass `ticker` (e.g., ^NSEI for NIFTY 50, ^NSEBANK for NIFTY BANK, ^BSESN for SENSEX). Optional `from_date`/`to_date` and `limit` (max 365). Returns OHLC + adjusted close + volume per day. Use this for market-context queries ("how did the broad market do?") or beta/correlation analysis.
Input
| field | type |
|---|
ticker | string (min 1) (max 40) |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 365) default 30 |
Output
| field | type |
|---|
data | { ticker: string, name: string, bars: { trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, adj_close: number | null, volume: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getIndexConstituents
[since=0.5.0] Members of an Indian market index (NIFTY 50, NIFTY BANK, NIFTY 100, NIFTY 500, etc.). Pass `index_name` or `index_ticker`, optional `as_of_date`. Returns members[] with rank, symbol, ISIN, weight.
Input
| field | type |
|---|
index_name optional | string (min 1) (max 80) |
index_ticker optional | string (min 1) (max 40) |
as_of_date optional | string |
Output
| field | type |
|---|
data | { index: string, index_ticker: string | null, as_of_date: string, members: { rank: number | null, symbol: string, isin: string | null, weight_pct: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 604800s · readOnly
getInsiderTrades
[since=0.3.0] Insider-trading disclosures filed with SEBI under PIT regulations for an Indian-listed equity. Pass `symbol` or `isin`. Filter by `from_date`/`to_date`, `trade_type` (buy/sell/any), `limit` (max 50). Returns acquirer name + role, quantity, value (₹), pre/post holding %, trade and filing timestamps. Use this for governance / promoter-activity analysis.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
trade_type | "buy" | "sell" | "any" |
limit | number (min 1) (max 50) default 20 |
cursor optional | string |
Output
| field | type |
|---|
data | { symbol: string | null, trades: { trade_id: string, symbol: string, isin: string | null, acquirer_name: string, acquirer_role: string | null, trade_type: string, form_type: string | null, quantity: number | null, value_inr: number | null, pre_holding_pct: number | null, post_holding_pct: number | null, trade_date: string, filed_at: string | null, source_url: string | null }[], next_cursor: string | null } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 604800s · readOnly
getMacroIndicator
[since=0.5.0] Macroeconomic indicators (GDP, CPI, repo rate, etc.). Pass `indicator_code` or omit for catalogue. Optional date range.
Input
| field | type |
|---|
indicator_code optional | string |
category optional | string |
country_iso | string default "IND" |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 100) default 50 |
Output
| field | type |
|---|
data | { indicators: { signal_date: string, indicator_code: string, value: number | null, unit: string | null, label: string | null, category: string | null, country_iso: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 31536000s · readOnly
getMarketCap
[since=0.5.0] Daily market capitalization snapshots for an Indian-listed equity. Pass `symbol` or `isin`, optional `date`/`limit`. Returns shares_outstanding × close = market_cap_inr per day.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
date optional | string |
limit | number (min 1) (max 60) default 10 |
Output
| field | type |
|---|
data | { snapshots: { as_of_date: string, symbol: string, isin: string | null, shares_outstanding: number | null, close_price: number | null, market_cap_inr: number | null, free_float_mcap_inr: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 129600s · readOnly
getMarketStats
[since=0.4.0] Cross-universe market statistics for a given trade date. Pass `metric` (one of: top_gainers, top_losers, most_active, breadth, sector_aggregate). Optional `date` (YYYY-MM-DD, defaults to latest available), `limit` (1–50, default 10), `industry` (only for sector_aggregate). Returns ranked rows: gainers/losers by % change, most active by turnover, market breadth (advancers/decliners/unchanged + bullish-bearish-flat sentiment), or sector aggregates (avg pct_change + total turnover by industry). Use this for portfolio-level questions ("what moved most today?") that span the whole NSE universe.
Input
| field | type |
|---|
metric | "top_gainers" | "top_losers" | "most_active" | "breadth" | "sector_aggregate" |
date optional | string |
limit | number (min 1) (max 50) default 10 |
industry optional | string (min 1) (max 120) |
Output
| field | type |
|---|
data | { metric: "top_gainers" | "top_losers" | "most_active" | "breadth" | "sector_aggregate", as_of: string | null, results: { symbol: string, isin: string | null, display_name: string | null, close: number | null, prev_close: number | null, pct_change: number, volume: number | null, turnover: number | null } | { symbol: string, isin: string | null, display_name: string | null, close: number | null, volume: number | null, turnover: number | null } | { advancers: number (min 0), decliners: number (min 0), unchanged: number (min 0), total: number (min 0) } | { industry: string, ticker_count: number (min 0), avg_pct_change: number, total_turnover: number }[], summary: { ratio: number, sentiment: "bullish" | "bearish" | "flat" }? } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getNav
[since=0.2.0] Latest AMFI mutual fund NAV (net asset value) for an Indian fund. Pass `scheme_code` (AMFI numeric ID, e.g., 147193) OR `isin` (ISIN of the growth or reinvest variant). Optional `date` (YYYY-MM-DD) for historical NAV. Returns the fund entity (scheme_name, AMC, category, both ISIN variants) plus the NAV in INR and a provenance envelope (source=amfi, ingested_at, ingest_run_id, row_hash, freshness SLA).
Input
| field | type |
|---|
scheme_code optional | string (min 1) (max 40) |
isin optional | string |
date optional | string |
Output
| field | type |
|---|
data | { fund: { scheme_code: string, scheme_name: string, amc: string | null, category: string | null, isin_payout_or_growth: string | null, isin_reinvest: string | null }, nav_date: string, nav: number, currency: "INR" } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getNews
[since=0.5.0] Financial news articles mentioning Indian listed equities. Optional `symbol`/`isin`, `from_date`/`to_date`, `query` (full-text), `source_filter`, `limit`.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
from_date optional | string |
to_date optional | string |
query optional | string |
source_filter optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { articles: { article_id: string, published_at: string, headline: string, snippet: string | null, url: string | null, source: string, symbols_mentioned: string[] }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 3600s · readOnly
getNseCircular
[since=0.5.0] NSE regulatory circulars. Optional date range, `category`, `query` (full-text). Use for compliance / market-structure context.
Input
| field | type |
|---|
from_date optional | string |
to_date optional | string |
category optional | string |
query optional | string |
limit | number (min 1) (max 50) default 20 |
Output
| field | type |
|---|
data | { circulars: { circular_id: string, issued_date: string, subject: string | null, category: string | null, department: string | null, applicable_to: string | null, attachment_url: string | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 86400s · readOnly
getOhlc
[since=0.2.0] Daily OHLC bars over a date range for a single Indian-listed equity. Returns up to 365 bars per call with cursor-based pagination for longer ranges. Each bar has open/high/low/close/prev_close/volume/turnover. Defaults to last 30 trading days if dates omitted. Pass `ticker` plus optional `from_date` and `to_date` (YYYY-MM-DD). If a previous response had `next_cursor`, pass it back in `cursor` to page further. Use this when you need a TIME SERIES for ONE ticker.
Input
| field | type |
|---|
ticker | string (min 1) (max 60) |
from_date optional | string |
to_date optional | string |
cursor optional | string |
Output
| field | type |
|---|
data | { entity: { isin: string | null, cin: string | null, figi: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX", primary_symbol: string, display_name: string | null }, currency: "INR", bars: { trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, prev_close: number | null, volume: number | null, turnover: number | null }[], range: { from: string | null, to: string | null, requested_from: string | null, requested_to: string | null }, next_cursor: string | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getPeers
[since=0.3.0] Peer companies for an Indian-listed equity, ranked by similarity score (Yahoo Finance recommendations). Pass `symbol` and optional `limit` (max 50). Returns peer tickers with similarity scores 0-1 and rank. Use this for comparable-company analysis or to expand a research universe from a starting ticker.
Input
| field | type |
|---|
symbol | string (min 1) (max 60) |
limit | number (min 1) (max 50) default 10 |
Output
| field | type |
|---|
data | { symbol: string, peers: { peer_symbol: string, similarity_score: number | null, rank: number | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 2592000s · readOnly
getPriceStats
[since=0.5.0] Pre-computed price stats per ticker: 52-week high/low, 200-day moving average, ATR, beta, etc. Pass `symbol` or `isin`.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
Output
| field | type |
|---|
data | { symbol: string, isin: string | null, as_of_date: string, latest_close: number | null, latest_traded_on: string | null, d1_pct: number | null, d1_from: number | null, w1_pct: number | null, w1_from: number | null, m1_pct: number | null, m1_from: number | null, m3_pct: number | null, m3_from: number | null, m6_pct: number | null, m6_from: number | null, y1_pct: number | null, y1_from: number | null, high_52w: number | null, high_52w_date: string | null, low_52w: number | null, low_52w_date: string | null, avg_volume_20d: number | null, history_days: number | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 172800s · readOnly
getQuote
[since=0.1.0] Latest NSE/BSE daily OHLC for a single Indian-listed equity. Returns close, open/high/low, prev_close, volume, turnover (INR), with canonical entity (ISIN, CIN, FIGI, primary exchange/symbol, display name) and provenance envelope (source, source_url, ingested_at, ingest_run_id, row_hash, freshness SLA). Pass `ticker` (e.g., RELIANCE, TCS). Optional `date` (YYYY-MM-DD) for historical lookup. Use this when you need ONE day's data for ONE ticker.
Input
| field | type |
|---|
ticker | string (min 1) (max 60) |
date optional | string |
Output
| field | type |
|---|
data | { entity: { isin: string | null, cin: string | null, figi: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX", primary_symbol: string, display_name: string | null }, trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, prev_close: number | null, volume: number | null, turnover: number | null, currency: "INR" } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
getRatios
[since=0.5.0] Pre-computed financial ratios per ticker (PE, PB, ROE, ROCE, debt/equity, dividend yield, etc.). Pass `symbol` or `isin`. Tickertape-derived.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
Output
| field | type |
|---|
data | { symbol: string, isin: string | null, sid: string | null, sector: string | null, sub_sector: string | null, gic_sector: string | null, gic_industry_group: string | null, gic_industry: string | null, gic_sub_industry: string | null, description: string | null, market_cap: number | null, market_cap_label: string | null, market_cap_rank: number | null, pe: number | null, pb: number | null, ttm_pe: number | null, roe: number | null, eps: number | null, bps: number | null, div_yield: number | null, beta: number | null, risk_score: number | null, vol_3m_avg: number | null, vol_12m: number | null, pct_4w: number | null, pct_52w: number | null, high_52w: number | null, low_52w: number | null, industry_pe: number | null, industry_pb: number | null, industry_div_yield: number | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 259200s · readOnly
getSectorSignal
[since=0.5.0] Indian sector / macro signals: FADA auto retail, Vahan vehicle registrations, FX, commodity spots, agmarknet prices, DGFT trade. Pass `signal_type` filter or omit for all. Use for sector rotation / macro overlays.
Input
| field | type |
|---|
signal_type | "fada" | "vahan" | "fx" | "commodity" | "agmarknet" | "dgft" | "any" |
from_date optional | string |
to_date optional | string |
limit | number (min 1) (max 100) default 50 |
Output
| field | type |
|---|
data | { signals: { signal_date: string, signal_type: string, key: string, value: number | null, unit: string | null, yoy_pct: number | null, mom_pct: number | null, raw_metadata: ZodUnknown | null }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 604800s · readOnly
getShareholding
[since=0.3.0] Quarterly shareholding pattern for an Indian-listed equity (NSE filings). Pass `symbol` (e.g., RELIANCE) or `isin`. Optional `quarter_end` (YYYY-MM-DD) for one quarter, or `limit` (default 8) for most recent quarters. Returns promoter / public / employee-trust / DR percentages per quarter plus submission dates. Use this when an agent asks about ownership structure or insider concentration over time.
Input
| field | type |
|---|
symbol optional | string (min 1) (max 60) |
isin optional | string |
quarter_end optional | string |
limit | number (min 1) (max 20) default 8 |
Output
| field | type |
|---|
data | { symbol: string, quarters: { symbol: string, isin: string | null, quarter_end: string, promoter_pct: number | null, public_pct: number | null, employee_trusts_pct: number | null, underlying_drs_pct: number | null, submission_date: string | null, xbrl_url: string | null }[] } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 8640000s · readOnly
getYahooQuote
[since=0.5.0] Yahoo Finance daily prices (5y NSE+BSE alt feed). Use this for longer history than getOhlc (which is 2.4y NSE-only). Accepts `RELIANCE`, `RELIANCE.NS`, or `RELIANCE.BO` interchangeably.
Input
| field | type |
|---|
symbol | string (min 1) (max 60) |
exchange optional | string (min 1) (max 10) |
from_date optional | string |
to_date optional | string |
cursor optional | string |
Output
| field | type |
|---|
data | { symbol: string, exchange: string, bars: { trade_date: string, open: number | null, high: number | null, low: number | null, close: number | null, adj_close: number | null, volume: number | null }[], range: { from: string | null, to: string | null, requested_from: string | null, requested_to: string | null }, next_cursor: string | null } | null |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 108000s · readOnly
searchCompanies
[since=0.4.0] Full-text search across the Indian-company entity master (3,972 resolved entities with CIN). Pass `query` (2–200 chars, e.g. 'mumbai bank', 'oil refinery', 'tata'). Optional filters: `state`, `industry` (substring), `listed_only` (default true), `limit` (1–50, default 10). Returns ranked matches with CIN, legal_name, industry, HQ city/state, primary listing (symbol+ISIN+exchange), is_listed, and tsvector score. Use this when an agent needs to discover tickers by description rather than look up a known symbol.
Input
| field | type |
|---|
query | string (min 2) (max 200) |
state optional | string (min 1) (max 80) |
industry optional | string (min 1) (max 120) |
listed_only | boolean default true |
limit | number (min 1) (max 50) default 10 |
Output
| field | type |
|---|
data | { results: { cin: string | null, legal_name: string, industry_label: string | null, hq_city: string | null, hq_state: string | null, primary_symbol: string | null, primary_isin: string | null, primary_exchange: "NSE" | "BSE" | "NSEEMERGE" | "MCX" | "NCDEX" | null, is_listed: boolean, score: number }[], total_matches: number (min 0), query: string } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 2592000s · readOnly
searchFilings
[since=0.4.0] Full-text search across NSE corporate announcements (486,000+ filings, OCR'd attachment text excerpts). Pass `query` (2–200 chars, e.g. 'fraud', 'AI strategy', 'capex guidance'). Optional `symbol`, `from_date`/`to_date`, `category` (substring), `limit` (1–25, default 10). Returns ranked filings with metadata + a 500-char excerpt and tsvector score. Use this for thematic research ("who mentioned X") and for finding evidence across the disclosure corpus. Use getFiling afterward when you need the full text of a specific filing.
Input
| field | type |
|---|
query | string (min 2) (max 200) |
symbol optional | string (min 1) (max 60) |
from_date optional | string |
to_date optional | string |
category optional | string (min 1) (max 120) |
limit | number (min 1) (max 25) default 10 |
Output
| field | type |
|---|
data | { results: { filing_id: string, symbol: string, isin: string | null, category: string | null, description: string | null, filed_at: string, attachment_url: string | null, has_attachment_text: boolean, attachment_text_chars: number (min 0) | null, text_excerpt: string | null, text_truncated: boolean, text_sha256: string | null, score: number }[], total_matches: number (min 0), query: string } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 21600s · readOnly
server_info
[since=0.2.0] Discover what this MCP server offers right now: current version, complete tool catalog with per-tool `since` versions, deprecation flags, freshness SLAs, and a link to the changelog. Call this at session start when you want to know what capabilities are available, or after a long-running session to detect new tools added since you last looked. Takes no arguments.
Input
Output
| field | type |
|---|
data | { service: "agenticmarkets", version: string, protocol: "streamable-http", endpoint: string, changelog_url: string, docs_url: string, tools: { name: string, since: string, deprecated_in: string?, removed_in: string?, notes: string?, description: string, freshness_sla_seconds: number (min 0) }[] } |
meta | { request_id: string, api_version: "v1", served_at: string, as_of: string | null, coverage: "covered" | "source_thin" | "no_data" | "ticker_unresolved", sources: { name: string, source_url: string?, ingested_at: string, ingest_run_id: string }[], row_hash: string | null, freshness_sla_seconds: number (min 0) | null, tokens_returned: number (min 0) } |
freshness_sla = 86400s · readOnly