Skip to main content
Glama

HKEx Filings

Server Details

Live HKEx (Hong Kong Stock Exchange) regulatory filings for AI agents.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
simonmak-ascent/hkex-filing-scraper
GitHub Stars
16
Server Listing
mcp-hkex-filing

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a clearly distinct operation: search_filings searches filing metadata, list_filing_facets aggregates facet counts, get_filing downloads and reads a specific document, and get_server_info reports gateway details. No two tools overlap in purpose, and the descriptions explicitly guide when to use facets versus search.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (get_filing, get_server_info, list_filing_facets, search_filings). The only slight variation is the meta tool get_server_info, but it still fits the same verb_noun convention.

Tool Count5/5

Four tools is well-scoped for a read-only filing access server. Each tool earns its place by covering search, facet discovery, document retrieval, and gateway introspection, with no redundant or missing core operations.

Completeness4/5

The surface covers the key read-only workflows: discover facets, search filings, and download/read documents. A minor gap is the lack of a direct get-by-newsId operation, though the URL from search_filings bridges that workflow.

Available Tools

4 tools
get_filingRead HKEx FilingA
Read-onlyIdempotent
Inspect

Download one HKEx document by its URL and read, page through, or search its text.

``link`` must be an HKEx document URL from search_filings (host ``www1.hkexnews.hk``);
any other host is rejected. With ``extract=True`` (default) the response includes up to
30 ``tables`` and a window of extracted ``document_text``: ``max_chars`` characters
starting at ``offset``. Long reports return ``next_offset``; call again with it to read
the next window. Pass ``query`` to search the whole document instead: the response then
lists up to 20 case-insensitive matches with their offsets and surrounding text, plus
``match_count`` — use a match offset to read that part. Set ``extract=False`` for size
and content type only.
ParametersJSON Schema
NameRequiredDescriptionDefault
linkYesHKEx document URL from a search_filings result (host www1.hkexnews.hk)
queryNoOptional text to find in the whole document; returns matches with offsets instead of a text window
offsetNoCharacter offset where the returned text window starts (use next_offset to page)
extractNoExtract text and tables; false returns size and content type only
max_charsNoMaximum characters of document_text to return in this window

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe downloaded document, with text and tables when extract is true.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, openWorld, non-destructive), it discloses host validation/rejection, the default extract behavior, the 30-table cap, the 20-match cap for queries, and the next_offset paging contract. These are concrete behavioral traits the annotations cannot express.

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?

Front-loaded purpose sentence followed by tightly scoped paragraphs, one per mode. The code-formatted parameter references make it scannable, and no sentence is redundant.

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?

Given an output schema exists, return-value documentation is not strictly required, yet the description still characterizes the response shape (tables, document_text, next_offset, matches). Combined with the annotations, nothing needed to invoke this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; however, the description adds real cross-parameter semantics the schema lacks — how offset/max_chars interact for windowing, and how query switches the response from a text window to match listings. It does not fully restate defaults, but it meaningfully enriches interpretation.

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?

Opens with a specific verb+resource ('Download one HKEx document by its URL') and enumerates the three modes of operation (read, page, search). This clearly distinguishes it from search_filings, which locates documents rather than retrieving them.

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 states the precondition that link must come from search_filings and that non-HKEx hosts are rejected, and it gives a decision rule for each mode: query to search, offset/next_offset to page, extract=False for metadata only. No alternative routing is left to inference.

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

get_server_infoGateway InfoA
Read-onlyIdempotent
Inspect

Report this live gateway's version, transport, and hard limits. Reads nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesGateway version, transport, tool list, filters, and hard limits.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; 'Reads nothing' largely restates readOnlyHint. The one piece of added context is that the response includes 'hard limits,' hinting at bounded values, but permissions, caching, or refresh behavior are not discussed.

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 short sentences, front-loaded with the payload description followed by the read-only reassurance. Every clause carries information and there is 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 zero parameters, full schema coverage, an output schema to define return values, and annotations covering the safety profile, the description has little left to explain and covers purpose adequately. Only the 'hard limits' concept and any auth/rate considerations are left implicit.

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

Parameters4/5

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

The tool takes zero parameters, so there are no parameter semantics to document; the baseline for a no-parameter tool is 4. The description correctly adds nothing about inputs because none exist.

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 ('Report') and resource ('this live gateway') plus the exact fields returned (version, transport, hard limits). It is unmistakably distinct from the filing-oriented siblings (get_filing, list_filing_facets, search_filings), which all concern filings rather than the gateway itself.

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

Usage Guidelines3/5

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

The description implies when to call it (introspecting the running gateway) and adds the note 'Reads nothing,' but it names no alternatives, prerequisites, or exclusions. Guidance is inferable rather than explicit, which fits the minimum-viable bar.

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

list_filing_facetsBrowse Filing FacetsA
Read-onlyIdempotent
Inspect

Browse what filings exist in a date window (at most 31 days) without downloading.

``from_date``/``to_date`` accept YYYY-MM-DD or DD/MM/YYYY. Returns counts of the
categories (headline categories), document types, and stock codes present in the window,
each sorted by frequency and capped at 50 values, plus the distinct counts. Optionally
narrow to one ``stock_code``. Use this to discover valid filter values before calling
search_filings; it fetches the window once and extracts no document text.
ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateYesYYYY-MM-DD or DD/MM/YYYY
from_dateYesYYYY-MM-DD or DD/MM/YYYY
stock_codeNoOptional exact HKEx stock code to narrow the facets
max_resultsNoMaximum filings to scan (default 50, cap 200)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesCounts of the window's categories, document types, and stock codes.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description goes well beyond them: the 31-day window cap, that it 'fetches the window once and extracts no document text' (cost behavior), and the exact return shape (counts by category/type/stock code, frequency-sorted, capped at 50, plus distinct counts). This is exactly the extra context annotations cannot carry.

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 tight paragraphs, front-loaded with the core purpose and constraint, then usage. Every sentence carries information: scope, formats, return shape, cap, and sibling routing with no filler.

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?

Despite an output schema existing, the description still summarizes the return shape concisely, and it fills the remaining gaps (31-day limit, no text extraction, fetch-once cost, filter-discovery purpose) so an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a constraint absent from the schema: the date range is capped at 31 days, and it clarifies that stock_code narrows the facets rather than filtering filings. It does not describe max_results semantics, which the schema already covers adequately.

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 ('Browse what filings exist in a date window') with a scope qualifier ('without downloading'), and explicitly contrasts itself with the search_filings sibling. An agent can distinguish it from search_filings and get_filing without opening any 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?

Gives an explicit routing rule: 'Use this to discover valid filter values before calling search_filings.' It names the alternative tool and the condition that selects it, so the when-to-use decision is fully determined.

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

search_filingsSearch HKEx FilingsA
Read-onlyIdempotent
Inspect

Search live HKEx filings in a date window (at most 31 days).

``from_date``/``to_date`` accept YYYY-MM-DD or DD/MM/YYYY. All filters are optional and
combine with AND semantics: ``stock_code`` matches exactly (e.g. ``01461`` or ``1461``);
``title_query``, ``category`` and ``stock_name`` are case-insensitive substrings (e.g.
category ``Dividend``); ``document_type`` matches the file type exactly (e.g. ``PDF`` or
``HTML``). Filters are applied to the fetched window, so widen ``max_results`` to catch
rarer matches. ``max_results`` caps the number of filings fetched and returned (hard cap
200). Returns the matching filings — each carrying ``fileType``, ``sizeText``,
``category`` and ``newsId`` metadata — plus the HKEx-reported total for the window. Use
list_filing_facets first to see which categories, types and codes exist in a window.
ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateYesYYYY-MM-DD or DD/MM/YYYY
categoryNoOptional case-insensitive substring of the headline category
from_dateYesYYYY-MM-DD or DD/MM/YYYY
stock_codeNoOptional exact HKEx stock code, e.g. 01461
stock_nameNoOptional case-insensitive substring of the stock short name
max_resultsNoMaximum filings to fetch and return (default 50, cap 200)
title_queryNoOptional case-insensitive substring of the filing title
document_typeNoOptional exact file type, e.g. PDF, HTML, XLS, DOC

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe filings matching the window and filters.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open world), and the description adds genuinely non-obvious behavior: filters are applied to the fetched window rather than server-side, the 31-day window limit, and the hard cap of 200 on fetched-and-returned filings. The post-fetch filtering caveat is exactly the kind of trap an agent would otherwise fall into by concluding there are no matches.

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?

The window constraint and date formats are front-loaded, and the paragraph is dense with no filler sentences. It repeats some filter semantics already present in the schema descriptions and the backtick-heavy formatting makes it slightly heavy to scan for an otherwise compact tool.

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?

For an 8-parameter search with a rich output schema and full annotations, the description covers window limits, filter semantics, result cap, returned metadata fields and the sibling to consult first. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline would be 3, but the description adds the AND-combination semantics across all optional filters and clarifies the stock_code example with and without leading zeros (01461 or 1461), which the schema does not. Match-type details (exact vs case-insensitive substring) largely duplicate the schema text.

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 (Search) and resource (live HKEx filings) plus a hard scope constraint (date window of at most 31 days). It distinguishes itself from siblings by routing facet discovery to list_filing_facets, so an agent can separate it from get_filing 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?

Explicitly tells the agent to run list_filing_facets first to discover valid categories, types and codes, and advises widening max_results when matches are rare — clear positive routing. It stops short of a when-not statement (e.g. use get_filing once a newsId is known), so it is clear context rather than full alternative/exclusion guidance.

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

Tool Schema Changelog

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

  1. 4 tool updates
    • First observedget_filing
    • First observedget_server_info
    • First observedlist_filing_facets
    • First observedsearch_filings

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides keyless access to HKEX and CNINFO exchange disclosure feeds, enabling search and retrieval of Chinese biotech licensing deals and Hong Kong/STAR IPO financing filings.
    385 npm
    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
  • F
    license
    D
    quality
    D
    maintenance
    Provides real-time stock data and AI-powered analysis for A-shares, Hong Kong stocks, and US stocks. Features sentiment analysis of financial news, deep research reports, and comprehensive market data through multiple integrated data sources.
    22
    177
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for discovering, downloading, parsing, and searching Hong Kong listed company announcements from HKEXnews through 6 structured tools.
    6
    20 PyPI
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.