Skip to main content
Glama

Server Details

Full-text financial reports (US, China, Japan, Korea, Taiwan, UK) as clean Markdown for RAG agents.

Ownership verified
Status
Healthy
Uptime
36.8% over 24 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL
Repository
heubme2020/datasinking
GitHub Stars
0

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct level of the data hierarchy (exchange, stock, report, section, body text). The get_report vs get_section pair is the only potential overlap, and the descriptions explicitly differentiate them by cost/use-case with clear guidance on when to use each.

Naming Consistency5/5

All six tools follow a strict verb_noun pattern (get_report, get_section, list_exchanges, list_reports, list_sections, list_stocks), with two verbs used consistently: get_ for single-item retrieval and list_ for enumeration.

Tool Count5/5

Six tools is well-scoped for a read-only financial disclosure server, covering discovery, navigation, and retrieval without redundancy. Every tool earns its place and the count supports the described RAG workflow.

Completeness4/5

The read lifecycle is well covered from exchange discovery down to block-level citation. The main gap is the absence of any keyword/text search tool across reports or companies, which is a common need for a RAG-oriented server, though the hierarchy lets agents work around it.

Available Tools

6 tools
get_reportAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesReport id, from list_reports items[].id

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it does well: it discloses the token cost ('Expensive in tokens'), the exact return composition, the block-marker format for citing paragraphs, and an attribution obligation tied to the `source` field. It stops short of covering error behavior (e.g. invalid document_id) or any truncation/length limits, which keeps it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what the tool does, then routing guidance, then citation mechanics. Every sentence carries distinct information with no restatement of the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the response shape (metadata + Markdown body) and the embedded block-marker structure an agent needs in order to cite correctly. For a single-parameter, single-resource fetch tool, nothing required for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single `document_id` parameter, which already documents that the id comes from list_reports items[].id. The description adds no syntax, format, or constraint detail beyond that, so the schema does the heavy lifting — the baseline 3 when coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch one report's full text') and enumerates the payload ('metadata + Markdown body'). It also distinguishes itself from the sibling get_section by scope (full report vs one chapter), so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative (get_section) and the condition that selects it ('when you only need one chapter'), framed against the cost of this tool. That is the exact when/when-not routing an agent needs in this sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sectionAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionYesHeading 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.
document_idYesReport id, from list_reports items[].id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden; it discloses the output format ('annotated with block markers `<!-- ds:block:N -->`') and the cost/scope tradeoff versus get_report, which is genuinely useful. It does not mention auth requirements, rate limits, or the 404 failure mode (that detail lives in the schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences; the scope/cost contrast with get_report is front-loaded and the block-marker detail follows. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description does the heavy lifting by explaining the returned content's block-marker structure and the cost rationale. It is nearly complete, missing only return-volume/auth notes, but nothing critical for correct invocation is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters extensively, including the cross-market keyword resolution and 404 retry guidance. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Fetch') and resource ('one section of a report'), scopes it with 'by keyword', and explicitly contrasts with the sibling get_report ('much cheaper than get_report'). An agent can distinguish it from get_report and list_sections without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to prefer this over get_report ('much cheaper', 'best for RAG'), which is the key routing decision. It stops short of explicit when-not guidance or naming list_sections here as the alternative for discovery, though the schema's section description covers that fallback.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exchangesInspect

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, UK = FCA NSM, Nepal = NEPSE, Brazil = CVM, Belarus = ЕПФР, Sri Lanka = CSE, Pakistan = PSX, Serbia = SEC register.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

list_reportsInspect

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').

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoNumber of reports to return (default 10).
symbolNoFMP-style symbol, e.g. AAPL / 600519.SS / 7203.T / 005930.KS / 2330.TW / NABIL.NP
doc_typeNoReport type to filter on. Defaults to annual.annual
exchangeNoExchange code (from list_exchanges). Use with stock_code when the code isn't ticker-shaped.
stock_codeNoExact stock_code from list_stocks. Use with exchange.
list_sectionsAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesReport id, from list_reports items[].id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does meaningful work: it discloses the exact return shape (`sections` and `section_details` with title/has_tables/chars/estimated_tokens) and explains how to use estimated_tokens and has_tables. It does not state permissions or that this is a read-only, non-mutating operation, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the payoff (sizes before pulling), then describes the return shape and the follow-up. Slightly dense with the parenthetical aside about RAG pipelines, but nearly every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description correctly compensates by enumerating the returned fields and their meaning, and it links to the next tool in the workflow. Nothing needed to invoke or interpret this call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is only one parameter, so the schema already documents document_id fully (including its provenance from list_reports). The description adds no syntax or format detail for it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (sections of a report) plus the scope (with size, in order). It is clearly distinguishable from get_section, which pulls a single chapter, and from list_reports, which enumerates reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the call as a prerequisite step ('before you decide what to pull') and routes the agent to the follow-up tool: 'Then call get_section with a heading keyword.' The when-to-use and the alternative are both named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_stocksInspect

List the stocks on one exchange, including the report count per company.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn only the first N companies (default 20) to keep the response short.
exchangeYesExchange code, e.g. bj / br / by / jpx / koe / ksc / lk / lse / nasdaq / np / nyse / otc / pk / rs / sse / szse / tpex / twse

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedlist_stocks1 field changed
      • changedInput schema / properties / exchange / description
        Previous value: -"Exchange code, e.g. bj / br / by / jpx / koe / ksc / lk / lse / nasdaq / np / nyse / otc / sse / szse / tpex / twse"New value: +"Exchange code, e.g. bj / br / by / jpx / koe / ksc / lk / lse / nasdaq / np / nyse / otc / pk / rs / sse / szse / tpex / twse"
  2. 2 tool updates
    • Changedlist_reports4 fields changed
      • addedInput schema / properties / exchange
        Added value: +{
        +  "description": "Exchange code (from list_exchanges). Use with stock_code when the code isn't ticker-shaped.",
        +  "type": "string"
        +}
      • addedInput schema / properties / stock_code
        Added value: +{
        +  "description": "Exact stock_code from list_stocks. Use with exchange.",
        +  "type": "string"
        +}
      • changedInput schema / properties / symbol / description
        Previous value: -"FMP-style symbol, e.g. AAPL / 600519.SS / 7203.T / 005930.KS / 2330.TW"New value: +"FMP-style symbol, e.g. AAPL / 600519.SS / 7203.T / 005930.KS / 2330.TW / NABIL.NP"
      • removedInput schema / required
        Removed value: -[
        -  "symbol"
        -]
    • Changedlist_stocks1 field changed
      • changedInput schema / properties / exchange / description
        Previous value: -"Exchange code, e.g. nyse / nasdaq / cboe / sse / szse / bj / jpx / ksc / koe / knx / twse / tpex / lse"New value: +"Exchange code, e.g. bj / br / by / jpx / koe / ksc / lk / lse / nasdaq / np / nyse / otc / sse / szse / tpex / twse"
  3. 1 tool update
    • Changedlist_stocks1 field changed
      • changedInput schema / properties / exchange / description
        Previous value: -"Exchange code, e.g. nyse / nasdaq / cboe / sse / szse / bj / jpx / ksc / koe / knx / twse / tpex"New value: +"Exchange code, e.g. nyse / nasdaq / cboe / sse / szse / bj / jpx / ksc / koe / knx / twse / tpex / lse"
  4. 6 tool updates
    • First observedget_report
    • First observedget_section
    • First observedlist_exchanges
    • First observedlist_reports
    • First observedlist_sections
    • First observedlist_stocks

Publisher details

Operator
DataSinking
Operator website
https://datasink.ing
Vendor relationship
First-party
Restrictions
Requires an API key (free tier available, 3 req/s; $31/year paid tier for higher limits). No regional or admin restrictions.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural language queries over financial reports, with multimodal retrieval across text, tables, and charts via an agentic RAG system.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to analyze Korean corporate filings from DART with token-efficient footnote parsing, financial anomaly detection, and historical stock price correlation.
    4
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to analyze Korean financial disclosures (DART) with insider trading signals, accounting risk scores, Buffett-style quality checklists, and automatic conversion of HWP/PDF attachments to markdown.
    15
    345 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Financial data and research MCP for AI agents: filings with full-text and fact search, statements as reported, earnings, insider and institutional ownership, corporate events, executives, analyst data, company discovery and research signals for US, China and Japan equities. Every figure traced to its filing. Browser sign-in.
    8
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.