China Disclosures
China Disclosures MCP — non-SEC Chinese biotech deals and HK/STAR IPO financing, read straight out…
What can you do with China Disclosures?
hkex_licensing_deals(query?, since?, until?, limit?)— biotech/pharmahkex_ipo_filings(query?, since?, until?, limit?)— Hong Kong IPO / listingcninfo_disclosure_search(query, board?, since?, until?, limit?)— full-textcn_uscc_validate(code)— offline validator/decoder for China's 18-character
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http china-disclosures 'https://gateway.pipeworx.io/china-disclosures/mcp'
{
"mcpServers": {
"china-disclosures": {
"type": "http",
"url": "https://gateway.pipeworx.io/china-disclosures/mcp"
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
@pipeworx/china-disclosures
Non-SEC Chinese biotech deals and HK/STAR IPO financing — licensing agreements and IPOs with no US-listed party, read straight out of the HKEX and CNINFO exchange disclosure feeds — plus an offline validator/decoder for China's company identifier (Unified Social Credit Code). Keyless.
Part of Pipeworx — an MCP gateway connecting AI agents to 1875+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
Tools
hkex_licensing_deals(query?, since?, until?, limit?)— biotech/pharma licensing and collaboration deals disclosed by HKEX-listed companies, including deals with no US-listed party at all (e.g. a Chinese HKEX-listed biotech out-licensing to an Indian, Japanese, or European partner). Sourced from HKEXnews filings titled "License Agreement" or "Licensing Agreement".hkex_ipo_filings(query?, since?, until?, limit?)— Hong Kong IPO / listing financing filings — the "GLOBAL OFFERING" prospectus and formal notice every company files with HKEX when it lists. Not biotech-specific; filter withquery.cninfo_disclosure_search(query, board?, since?, until?, limit?)— full-text search over CNINFO, the official disclosure feed for both Chinese A-share exchanges (Shenzhen + Shanghai, STAR Market included). Covers A-share-listed companies with zero HK/US nexus — the other half of the gap.cn_uscc_validate(code)— offline validator/decoder for China's 18-character Unified Social Credit Code (统一社会信用代码, GB 32100-2015), the single identifier every registered Chinese organization carries. Checks length, character set, and the official check-digit algorithm; when valid, decodes the registration authority, entity type, and province (GB/T 2260, province-level). No network call. Validates FORMAT ONLY — a format-valid code is not proof a real company holds it.
Why this exists, and why china-pharma / pharma-deals don't already cover it
china_licensing_deals (china-pharma) and pharma_licensing_deals (pharma-deals)
are both SEC 8-K based: they see a deal only if at least one party is US-listed.
A China-to-China or China-to-Japan deal between two companies with no US listing
is real, disclosed, and structurally invisible to either tool. Demand log,
2026-09-13 scouting pass: 3+ real asks for exactly that class of deal, plus
HK/STAR biotech IPO financing.
Two more exchanges' own disclosure layers close the gap, both probed live 2026-09-13:
- HKEX — any Hong Kong-listed company discloses a material licensing deal or
its own IPO under HKEX listing rules the same day, and HKEXnews' public
title-search JSON endpoint (
titleSearchServlet.do) serves those filings without a key. This is the same endpointnmpa_drug_approvals(china-pharma) already uses for NMPA approvals — same trick, different title term. - CNINFO (cninfo.com.cn) — the official disclosure feed for SZSE + SSE
A-shares, STAR Market included.
hisAnnouncement/queryis a POST endpoint, no auth, plain browser UA — verified live returning 20,703 matches forsearchkey=许可(license/licence), dated as recent as the day of the probe.
Traps
- HKEX
titleSearchServlet.doignoresfrom/toentirely whensearchType=1andtitleis set — verified across three different date windows (a 9-month range, a 1-month range, and a single day in 1990) on three different title terms ("License Agreement", "Licensing Agreement", "Global Offering"): identical result set every time. It is a rolling most-recent-titles window, not a date-filtered query. Both HKEX tools fetch the unbounded window and applysince/untilthemselves, client-side — a window before the reachable range returnsfound: falsewith an explicit hint naming the actual reachable dates, never a silently-empty "nothing that period". CNINFO's board/segment filter looks like it should be guessable and isn't. An initial probe of
category=/plate=kcbfor STAR Market returned HTTP 200 with the full unfiltered result set — a silent no-op, not an error. The real parameter,plate=shkcp, was found by watching the disclosure search page's OWN network request when its 科创板 (STAR Market) checkbox is selected in the browser — the same recipe china-exchange-data used for SZSE's report catalogs. Verified as a REAL filter, not another no-op: unfilteredsearchkey=许可returnstotalAnnouncement: 20703;plate=shkcpreturns306, every one of them a 688xxx (STAR Market) code.Unfiltered vs. filtered, same search term, live 2026-09-13:
plate="" (all SZSE+SSE) → totalAnnouncement: 20703 plate="shkcp" (STAR Market) → totalAnnouncement: 306 (all secCode 688xxx)Only
star(shkcp) andchinext(szcy) are exposed asboardvalues — both confirmed the same way. Other segments (main board, GEM) were not observed this way and are deliberately left unmapped rather than guessed; omitboardto search all boards.- CNINFO's
seDaterange param genuinely filters server-side (unlike HKEX'sfrom/to) — confirmed by comparing a 12-day window (1 hit) against a disjoint historical month (0 hits) for the identical search term and board. - Don't translate a query before searching CNINFO. It is a Chinese
full-text index; searching the English translation of a Chinese term returns
nothing, and reads as "no disclosures" rather than "wrong language" (see
reference_bilingual_entity_names— never translate-then-search). - HKEX title search returns duplicate rows for one event. A Global Offering
typically produces both a "Listing Documents" row (the prospectus PDF) and an
"Announcements and Notices" row (the formal notice) for the same listing —
both are returned, tagged with
doc_category, rather than silently deduplicated into one.
Coverage limits, stated honestly
hkex_licensing_deals/hkex_ipo_filings: require the Asian party to be HKEX-listed (Main Board or GEM). A private-to-private deal, or one between two A-share-only companies, is invisible here — usecninfo_disclosure_searchfor the A-share side.cninfo_disclosure_search: requires an A-share-listed party (Shenzhen or Shanghai, including STAR Market). A company listed only overseas (HK, US, or privately held) does not appear.- A deal or listing with neither an HKEX-listed nor an A-share-listed nor an SEC-filing party (china-pharma / pharma-deals) is not visible to any tool in this catalog.
- Both HKEX tools only reach HKEXnews' current rolling title-search window
(recently, roughly the last several weeks to a couple of months, depending on
how common the phrase is) — see the trap above.
cninfo_disclosure_searchhas no such limit; itssince/untilgenuinely reach back in time.
Auth
None. Keyless on all four tools; cn_uscc_validate makes no network call at all.
Data sources
hkex_licensing_deals/hkex_ipo_filings:https://www1.hkexnews.hk/search/titleSearchServlet.do(HKEXnews public title search) and the linked filing PDFs underhttps://www1.hkexnews.hk/.cninfo_disclosure_search:https://www.cninfo.com.cn/new/hisAnnouncement/query(CNINFO's public disclosure search) and PDFs underhttps://static.cninfo.com.cn/.cn_uscc_validate: no source call. The check-digit algorithm is China's own published national standard (GB 32100-2015); the registration-authority and entity-type tables are small published lookups from the same standard; the province decode is the public GB/T 2260 administrative-division code list (province level only — prefecture/city is not decoded).
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": {
"china-disclosures": {
"url": "https://gateway.pipeworx.io/china-disclosures/mcp"
}
}
}
What this endpoint actually serves
tools/list at https://gateway.pipeworx.io/china-disclosures/mcp returns the tools in the table
above plus the shared Pipeworx meta-tools — ask_pipeworx,
discover_tools, search_within, remember/recall and the rest of the
gateway-wide set. So the tool count you see is larger than this table: a
single-pack endpoint currently lists roughly 30 shared tools alongside the
pack's own. The connection's initialize response states its exact scope, and
is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a
scoped connection answer a question this pack does not cover — via
ask_pipeworx, which routes across the whole catalog — without you adding a
second MCP server. There is currently no way to mount a pack endpoint without
them; if the extra schemas cost you more context than the routing is worth,
connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
Both URLs reach the same gateway and the same 1875+ data sources. The
only difference is which pack's tools are listed directly; ask_pipeworx
reaches all of them from either one.
No MCP client? Call it over HTTP
curl -X POST https://gateway.pipeworx.io/v1/tools/hkex_licensing_deals \
-H 'Content-Type: application/json' \
-d '{}'
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/hkex_licensing_deals. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
Standalone (no gateway account)
This package also runs as a local stdio MCP server — no Pipeworx account, no gateway round-trip:
{
"mcpServers": {
"china-disclosures": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-china-disclosures"]
}
}
}
Or run it directly to confirm it starts:
npx -y @pipeworx/mcp-china-disclosures
It speaks MCP over stdin/stdout and answers initialize/tools/list/tools/call
for only this pack's tools — none of the shared meta-tools the gateway
connection above adds. Same source, same tools, no ask_pipeworx routing.
Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:
ask_pipeworx({ question: "your question about China Disclosures data" })
The gateway picks the right tool and fills the arguments automatically.
More
License
MIT
Frequently asked questions
What is China Disclosures?
China Disclosures MCP — non-SEC Chinese biotech deals and HK/STAR IPO financing, read straight out…
How do I install China Disclosures?
It runs as a remote server. In Claude Code: claude mcp add --transport http china-disclosures 'https://gateway.pipeworx.io/china-disclosures/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does China Disclosures need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is China Disclosures open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains China Disclosures?
It is published by pipeworx-io. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.