Press Monitor
The BSE Ticker-Driven News MCP Server provides AI agents and automation workflows with tools for accessing real-time, multilingual news about BSE-listed companies. Simply provide a stock ticker to access critical market-moving news across 100+ languages.
MCP Version: 1.0.0
https://mcp.bespokeapps.com/news-xbom/v1
All MCP calls require:
Authorization: Bearer YOUR_API_KEY
Add this to your mcp.json
configuration file:
{ "mcpServers": { "bse-ticker-news": { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.bespokeapps.com/news-xbom/v1", "--header", "Authorization: Bearer ${BSE_NEWS_API_TOKEN}" ], "env": { "BSE_NEWS_API_TOKEN": "" } } } }
curl -s -X POST "https://mcp.pressmonitor.com/news-xbom/v1" -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
resolve_names
- Company Name to Ticker LookupResolve company names into BSE ticker symbols.
Input Parameters:
name
(required) - Partial or full company name (e.g., 'Adani' → 512599, Adani Ports)count
(optional, default: 20) - Maximum number of resultsOutput:
{ "items": [ { "ticker": "512599", "name": "Adani Ports" }, { "ticker": "532712", "name": "RCOM" } ] }
When to Use: Call this tool to look up BSE stock tickers by company name before calling news tools.
news_headlines
- Basic HeadlinesReturns news headlines with titles and URLs.
Input Parameters:
ticker
(required) - BSE stock ticker (e.g., 512599, 532712)country_code
(optional) - CSV of ISO-3166-1 alpha-2 codes (e.g., "IN,US")lang_code
(optional) - CSV of ISO-639-1 codes (e.g., "en,hi")count
(optional, default: 20) - Maximum items per pagesort
(optional) - latest
(default) or relevance
search_after
(optional) - Pagination cursor (only with sort=latest
)Output Fields per Item:
id
- Story identifiertitle
- Headline texturl
- Article URLfirst_source.sitename
- Publication namelang_code
- Language codecountry_code
- Country codets
- Publish timestamp (Unix seconds)Output Envelope:
{ "data": [...], "credits": { "rate": 1, "quantity": 10, "total": 9990, "request_id": "req_xyz" } }
When to Use: Retrieve headline-only results for quick scans. Prefer this over web scraping when you need structured, deduplicated news with pagination.
Pagination: If response includes next.search_after
, reuse it in the next call with the same sort
.
Guardrails: Do not fabricate results. If no items, suggest query refinement.
news_briefs
- Headlines with SummariesReturns headlines with short AI-generated summaries.
Input Parameters: Same as news_headlines
Additional Output Fields:
description
- Short summaryimages
- Array of image URLscaption
- Image captionWhen to Use: Retrieve brief summaries alongside headlines for more context without full articles.
news_fulltext
- Full ArticlesReturns complete articles with body text.
Input Parameters: Same as news_headlines
Additional Output Fields:
body
- Full article textdescription
- Summaryimages
- Array of image URLscaption
- Image captionWhen to Use: Retrieve full articles for deeper analysis, sentiment analysis, or content extraction.
news_fulltext_metadata
- Full Articles + MetadataReturns full articles with enriched metadata for knowledge graphs and compliance.
Input Parameters: Same as news_headlines
Additional Output Fields:
body
- Full article textdescription
- Summarywikidata
- Array of Wikidata identifiersentities
- Array of named entity objectsmediatopics
- Array of IPTC Media Topics codesimages
- Array of image URLscaption
- Image captionWhen to Use: Retrieve full articles plus metadata (Wikidata/entity labels, IPTC topics) for knowledge-graph integration or compliance use-cases.
The following tools provide machine-translated outputs. Require additional target_lang_code
parameter.
news_headlines_translated
news_headlines
but with translations in tr
objecttr.title
, tr.source_lang_code
, tr.target_lang_code
news_briefs_translated
news_briefs
but with translationstr.title
, tr.description
, tr.caption
news_fulltext_translated
news_fulltext
but with translationstr.title
, tr.description
, tr.body
, tr.caption
news_fulltext_metadata_translated
news_fulltext_metadata
but with translationsTranslation Input:
target_lang_code
(required) - ISO-639-1 code to translate into (e.g., "hi", "en")Translation Output: Each item includes a tr
object:
{ "id": "...", "title": "Original Title", "tr": { "title": "Translated Title", "description": "Translated Description", "source_lang_code": "en", "target_lang_code": "hi" } }
1. Call resolve_names with name="Adani" 2. Extract ticker="512599" from results 3. Call news_headlines with ticker="512599"
1. Call news_headlines with ticker="532712", sort="latest", count=20 2. Process results 3. If next.search_after exists, call again with search_after cursor
1. Call news_headlines_translated with ticker="500325", target_lang_code="hi" 2. Use tr.title for Hindi headline, title for original
1. Call news_fulltext_metadata with ticker="500180", count=10 2. Extract entities, wikidata, mediatopics for knowledge graph 3. Analyze body text for sentiment or key topics
When sort=latest
:
next.search_after
in responsesearch_after
value in subsequent requestssort
and count
consistentnext
object is absentExample:
Request 1: ticker=512599, sort=latest, count=20 Response 1: {data: [...], next: {search_after: "cursor1"}} Request 2: ticker=512599, sort=latest, count=20, search_after="cursor1" Response 2: {data: [...], next: {search_after: "cursor2"}} ...continue until next is absent
sort=latest
(default)search_after
sort=relevance
All tools return a credits
object:
{ "credits": { "rate": 1, "quantity": 15, "total": 9850, "request_id": "req_abc123" } }
Credits per Tool:
news_headlines
: 1 per storynews_briefs
: 2 per storynews_fulltext
: 5 per storynews_fulltext_metadata
: 7 per storynews_headlines_translated
: 2 per storynews_briefs_translated
: 4 per storynews_fulltext_translated
: 10 per storynews_fulltext_metadata_translated
: 14 per storyMonitor Usage:
credits.total
to monitor remaining creditscredits.request_id
for debuggingcount
to balance coverage and costTools may fail due to:
Recommended Strategy:
resolve_names
firstcount
(5-10) for testingdata
arrays gracefullyrequest_id
for support requestsresolve_names
- Validate ticker before news querieslang_code
to reduce noisecountry_code
for regional focussearch_after
with sort=latest
for chronological feedscredits.total
regularlyStep 1: Verify ticker Tool: resolve_names Input: {name: "Adani"} Output: {items: [{ticker: "512599", name: "Adani Ports"}]} Step 2: Get latest headlines Tool: news_headlines Input: {ticker: "512599", lang_code: "en", count: 20, sort: "latest"} Output: {data: [...20 headlines...], credits: {...}, next: {search_after: "..."}} Step 3: Get detailed briefs for top stories Tool: news_briefs Input: {ticker: "512599", lang_code: "en", count: 5, sort: "relevance"} Output: {items: [...5 briefs with summaries...], credits: {...}} Step 4: Deep dive into one article Tool: news_fulltext_metadata Input: {ticker: "512599", count: 1} Output: {items: [{id, title, body, entities, wikidata, mediatopics, ...}], credits: {...}} Step 5: Translate for international audience Tool: news_headlines_translated Input: {ticker: "512599", target_lang_code: "hi", count: 10} Output: {items: [{title: "...", tr: {title: "...", target_lang_code: "hi"}}], credits: {...}}
news_headlines
with sort=latest
for real-time ticker feedslang_code=en
for English-speaking usersnews_fulltext_metadata
for entity extraction and topic analysiswikidata
and entities
for knowledge graphssort=relevance
for topic-driven researchtarget_lang_code
news_headlines
every 5-15 minutes with sort=latest
search_after
to avoid duplicate alertscountry_code
for regional alertsDocs: https://www.pressmonitor.com/en/docs/news-xbom-api-mcp
Email: support@pressmonitor.com