DataSinking
Full-text financial reports (US, China, Japan, Korea, Taiwan, UK) as clean Markdown for RAG agents.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"datasinking": {
"command": "uvx",
"args": [
"datasinking"
]
}
}
}Runnable packages
0.2.17stdio0.2.17stdioRemote endpoints
https://api.datasink.ing/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
๐ขlist_exchanges
List the exchanges DataSinking covers. Returns exchange codes (bj / br / by / jpx / koe / ksc / lk / lse / nasdaq / np / nyse / otc / pk / rs / sse / szse / tpex / twse) with the number of reports available per exchange. Call this first to discover coverage. Sources: US = SEC EDGAR, A-shares = cninfo.com.cn, Japan = EDINET, Korea = DART, Taiwan = MOPS, Europe = filings.xbrl.org (ESEF), Nepal = NEPSE, Brazil = CVM, Belarus = ะะะคะ , Sri Lanka = CSE, Pakistan = PSX, Serbia = SEC register.
Input Schema
{
"type": "object",
"properties": {}
}๐ขlist_stocks(exchange, limit)
List the stocks on one exchange, including the report count per company.
Input Schema
{
"type": "object",
"properties": {
"exchange": {
"type": "string",
"description": "Exchange code, e.g. bj / br / by / jpx / koe / ksc / lk / lse / nasdaq / np / nyse / otc / pk / rs / sse / szse / tpex / twse"
},
"limit": {
"type": "integer",
"description": "Return only the first N companies (default 20) to keep the response short.",
"default": 20
}
},
"required": [
"exchange"
]
}๐ขlist_reports(symbol, exchange, stock_code, doc_type, size)
List a company's reports โ metadata only (id, title, period), no body text. Each item carries a `source` field naming the official disclosure platform; keep that attribution when you cite it. Look up by `symbol` (FMP-style, e.g. AAPL / 600519.SS / NABIL.NP) or by `exchange` + `stock_code` (from list_stocks) for markets whose codes aren't ticker-shaped (e.g. Brazil CNPJ, Sri Lanka 'AAA.N0000').
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "FMP-style symbol, e.g. AAPL / 600519.SS / 7203.T / 005930.KS / 2330.TW / NABIL.NP"
},
"exchange": {
"type": "string",
"description": "Exchange code (from list_exchanges). Use with stock_code when the code isn't ticker-shaped."
},
"stock_code": {
"type": "string",
"description": "Exact stock_code from list_stocks. Use with exchange."
},
"doc_type": {
"type": "string",
"enum": [
"annual",
"semiannual",
"q1",
"q3"
],
"description": "Report type to filter on: annual / semiannual / q1 / q3. Defaults to annual. Pass semiannual for half-year reports, q1 / q3 for the quarterly reports.",
"default": "annual"
},
"size": {
"type": "integer",
"description": "Number of reports to return (default 10).",
"default": 10
}
}
}๐ขget_report(document_id)
Fetch one report's full text (metadata + Markdown body). The `source` field names the official disclosure platform; keep that attribution when you cite it. Expensive in tokens โ prefer get_section when you only need one chapter. Content is annotated with block markers (`<!-- ds:block:N -->`) so you can cite a specific paragraph or table.
Input Schema
{
"type": "object",
"properties": {
"document_id": {
"type": "integer",
"description": "Report id, from list_reports items[].id"
}
},
"required": [
"document_id"
]
}๐ขlist_sections(document_id)
List every section of a report with its size, before you decide what to pull. Returns `sections` (titles, in order) plus `section_details` โ same order, one entry per section with `title`, `has_tables`, `chars` and `estimated_tokens`. Use `estimated_tokens` to avoid pulling a chapter that would blow your context, and `has_tables` to know whether the chapter needs special handling (tables are the part RAG pipelines usually get wrong). Then call get_section with a heading keyword โ the headings are in the report's own language.
Input Schema
{
"type": "object",
"properties": {
"document_id": {
"type": "integer",
"description": "Report id, from list_reports items[].id"
}
},
"required": [
"document_id"
]
}๐ขget_section(document_id, section)
Fetch only one section of a report by keyword โ much cheaper than get_report, best for RAG. Content is annotated with block markers (`<!-- ds:block:N -->`) so you can cite a specific paragraph or table.
Input Schema
{
"type": "object",
"properties": {
"document_id": {
"type": "integer",
"description": "Report id, from list_reports items[].id"
},
"section": {
"type": "string",
"description": "Heading keyword. Matches the report's own headings, and also understands cross-market concepts โ MD&A / financial statements / notes / audit report / risk / governance (or their Chinese/Japanese/Korean equivalents) resolve to the right section in any market. Otherwise pass a heading in the report's language (A-share: ็ฎก็ๅฑ่ฎจ่ฎบไธๅๆ / ่ดขๅกๆฅๅ; English filings: \"MD&A\" / \"financial statements\" / \"notes\"). If nothing matches, the API returns 404 with the real headings โ retry with one of those, or call list_sections first."
}
},
"required": [
"document_id",
"section"
]
}๐กsubmit_feedback(exchange, stock_code)
Request a full backfill of a stock whose reports look missing or broken, and return its current status. Idempotent โ if the stock was already submitted recently (within the last 127 feedback records), it returns that existing status instead of queueing a duplicate; otherwise it queues a re-fetch from the IPO prospectus onward and returns status 'pending' plus the new id (poll get_feedback_status). Free keys: once per 3 seconds, 31 stocks per 7 days per key. Yearly keys: 3 per second, 8,191 stocks per 7 days per key.
Input Schema
{
"type": "object",
"properties": {
"exchange": {
"type": "string",
"description": "Exchange code from list_exchanges."
},
"stock_code": {
"type": "string",
"description": "Stock code from list_stocks."
}
},
"required": [
"exchange",
"stock_code"
]
}๐ขget_feedback_status(feedback_id)
Check the progress of a submitted feedback request. status is one of pending / processing / done / failed.
Input Schema
{
"type": "object",
"properties": {
"feedback_id": {
"type": "integer",
"description": "Feedback id returned by submit_feedback."
}
},
"required": [
"feedback_id"
]
}Community
Evidence