River · MCP

River as an MCP server

River’s record of what Indian listed companies told the NSE, exposed as eleven read-only tools for Claude, ChatGPT, Cursor and anything else that speaks the Model Context Protocol. No API key, no signup, nothing to install.

https://withriver.in/api/mcp

Streamable HTTP. Read-only: no tool here writes anything, and none of them can reach reader data. A browser visiting that URL gets “Method not allowed”, which is correct — MCP traffic is POST.

What this gives an assistant that it cannot get elsewhere

Most sources describe a company as it is now: price, ratios, holdings, the latest filing. River reads the corpus forward. When a company tells the exchange it will finish something “within 42 months from the appointed date”, or “by Q3 FY27”, River resolves that into a calendar date and prints the company’s own phrase beside it, so the arithmetic can be checked rather than trusted.

That record — what was promised, by when, in whose words, and on which filing — is what these tools are for. A date passing is not an event anyone reports, so it is close to unobtainable anywhere else.

Where River inferred an anchor the company did not give, the row is marked approximate and says so. It is River’s reading, not a date the company stated, and the tools never present one as the other.

What River will not do

River states what a company said and when it said it. It does not score, rank, rate, recommend or forecast, and it does not say whether a promise was kept.

That last refusal is a finding, not a hedge. A listed company must disclose winning an order, and amending or terminating one, but is not required to disclose completing one. So a company that delivered on time and a company that did nothing file identically here. Silence after a stated date is a fact about the disclosure regime, not about the company — and any tool that scored follow-through from it would be inventing the finding.

Every tool response carries that refusal in its payload, so an assistant cannot attribute a verdict to River. River is not a registered investment adviser and does not give investment advice.

The tools

search and fetch are the read-only pair ChatGPT’s deep research and company knowledge retrieve through. The other nine are domain tools any MCP client can call directly.

search
query
Find River documents matching a company name, NSE symbol, or a month. Returns id, title and url.
fetch
id
Read a whole document by the id search returned — every line with the phrase its date came from and a link to its filing.
find_company
name
Resolve a company name to its NSE symbol and show what River holds for it.
company_promises
symbol, limit?
Every commitment a company made to the NSE that River resolved to a date, with the phrase the date was read out of.
promises_due_in_month
period (YYYY-MM)
Across all companies, what falls due in one calendar month.
what_came_due
days?
Stated dates that passed in the last N days, market-wide.
promise_record
symbol
For each passed date, how many filings the company has made since, by exchange category. Counts, not an assessment.
company_orders
symbol, limit?
Order wins a company disclosed, with the value as stated and the counterparty where the filing named one.
company_statements
symbol, limit?
What management stated in filings, quoted rather than paraphrased.
largest_orders
from?, to?, min_crore?, limit?
Biggest disclosed order values in a window. Rupee figures only, single awards, running totals held out.
record_freshness
none
The span of filings River has read and the latest date in it. Call before claiming anything is absent.

Connecting it

In Claude, add it as a custom connector and paste the endpoint. In ChatGPT, enable Developer mode under Settings → Security and login first — the toggle’s availability depends on your plan and workspace policy. In Cursor, or any client that reads an MCP config file:

{ "mcpServers": { "river": { "url": "https://withriver.in/api/mcp" } } }

Usage is unmetered today and offered in good faith. It is one small service reading one small database, so please don’t hammer it.

What the record covers

Call record_freshness before concluding that anything is absent. The end of River’s corpus is not the end of the news: absence means River has not read a filing, which is not the same as none having been filed.

The same record as pages: the Clock, the order record, how River reads a filing.