AStockEvent

com.astockevent由 astockevent.com 發布官方發布者v0.1.0更新於 Nov 4, 2026

A-share filings: reductions, penalties, regulatory letters and stock halts. Source-linked facts.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取金融知識與記憶

概覽

AI 產生的概覽

遠端 MCP 伺服器,讓助理取得附來源連結的中國 A 股監理公告事實:減持、裁罰、問詢函與停牌。

可以做什麼
  • 查詢某公司或股東目前彙整後的狀態:仍在執行的減持計畫、未結案的裁罰、未回覆的問詢函
  • 列出某公司近期公告與來源 PDF 連結,並讀取近期公告的解析文字與表格
  • 追蹤文件脈絡:某公告引用的其他公告,以及單一事件的完整時間軸
  • 掌握近期動態:近七個北京日曆日內有公告連結的事件,或依公告類型跨公司掃描
  • 在判定資料缺漏前先查看涵蓋範圍與限制
適用情境
適合需要依據交易所官方公告取得中國 A 股公司目前且可查證狀態、而非原始事件流的場合,例如誰仍在減持、哪些裁罰案件未結、公司本週申報了什麼。
執行需求
遠端 Streamable HTTP 端點,無需安裝,也不需要 API 金鑰或註冊。有速率限制,並會在回應中告知。需要能連線至服務商端點的網路。
安裝前請注意
預發布服務,涵蓋範圍較窄,API 可能變動。解析文字僅涵蓋近期公告且可能不完整,完整原文仍需查閱來源 PDF。分頁查詢結果可能在頁與頁之間變動,應從第一頁重新開始並依事件 id 去重。僅陳述事實,不提供評等或判斷。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 AStockEvent,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.astockevent%2Fastockevent/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "astockevent": {
      "type": "http",
      "url": "https://astockevent.com/mcp/"
    }
  }
}

README

AStockEvent — MCP server for Chinese A-share regulatory filings

[License: MIT] [MCP]

Current state folded from A-share filings — not a raw event dump.

An event feed tells you a plan was announced in June and amended in August. You still have to work out what is true today. This server does that fold for you: who is still selling down, which penalty cases are open, which inquiry letters are unanswered.

Every value links back to the source PDF published by the exchange, so you can check us.


Connect

This is a remote MCP server (Streamable HTTP). There is nothing to install — point your MCP client at the URL:

https://astockevent.com/mcp/

No API key, no sign-up. Rate limits apply and the response tells you when you hit one.

Example for clients with a URL-based mcpServers configuration
json
{  "mcpServers": {    "astockevent": {      "url": "https://astockevent.com/mcp/"    }  }}

Prefer HTTP? The same data is available over REST — see astockevent.com/docs, with the machine-readable contract at /openapi.json.


Tools

ToolWhat it answers
list_coverageWhat is in scope and what the limits are. Call this before concluding data is missing.
list_company_filingsFilings held for one company, with source links and any extracted events; up to 50 per call, without list pagination.
get_filing_parsedAvailable parsed text and tables for one recent filing; long documents may be partial.
get_related_filingsCollected filings of the same company matched by explicit document references.
get_entity_stateFolded company state, or linked companies for a confirmed actor identifier.
get_event_with_contextOne event plus its whole timeline, in a single call.
whats_newEvents updated within seven days and linked to filings from the last seven Beijing calendar days, cursor-paged.
scan_recent_eventsCross-company discovery by filing type within the last seven Beijing calendar days.

Discovery includes today and uses filing dates, not the age of the case. A new filing can mention an old case. matched_filing identifies the qualifying filing and its source; root event fields describe current context. Empty windows stay empty. Scan returns effective dates, a matched count and truncation flag, with at most 100 events per page. Continue with cursor until it is null; truncated may still be true on the last page because it compares the total with that page’s size. Omit dates/phase on continuation or repeat the effective values; changing filters requires a fresh query. Expired windows are errors, never a way into history. Results can change between pages; restart polling from the first page and deduplicate by event id. Known company/entity/event queries retain their existing historical context.

Parsed text is available for filings dated at most seven Beijing calendar days ago (eight dates including today), in chunks of up to 50,000 characters. Source documents may be only partly parsed: reaching the last stored chunk does not mean the full PDF was parsed. Use the source PDF whenever you need the complete original.

Coverage

Four structured event types, with broader company-filing and source-document access. The coverage endpoint states the current scope and limits.

TypeFolded into
Share reduction by major shareholdersThe plan that is still live, and how much of its cap is used up
Administrative penalty proceedingsEach case grouped by case number, folded to its current stage
Exchange inquiry lettersReceived / replied / overdue — the state of the conversation
Ordinary A-share trading halts and resumptionsIndividual halt cycles, reasons and dates, available through event details and recent discovery

Company folded state covers reductions, penalties and regulatory letters. Stock halt cycles are available through filings, event details and scans; they are not folded into company state. Convertible-bond and preferred-share halts are outside this scope.

Call list_coverage for the authoritative, always-current answer.


Two things worth knowing

Empty is not the same as unknown. A company with no filings of a type comes back as covered, nothing found — not as an empty result. A security we do not carry comes back as not found, with a reason. Telling those two apart is the point of this service.

We report, we do not judge. Objective extractions only: no ratings, no scores, no attribution of price moves. What you build on top of the facts is yours.


Status

Pre-release. Coverage is narrow and stated honestly; the API may change. If you are using it and something is missing or wrong, we want to hear it — tell us here or email [email protected].

About this repository

This repo is the public front door: what the server is, how to connect, and the server.json descriptor for the MCP registry.

The server itself is remote — you point a client at a URL rather than installing code — so there is no server implementation to publish here. Extraction engines, crawlers and schemas live in a private repository.

License

MIT — see LICENSE.

來源:README.md,提交 c9a229a

工具

8

get_entity_state

Return what is true RIGHT NOW about one A-share listed company or one shareholder entity, folded from its regulatory filings: pending and executed share-reduction plans, administrative-penalty proceedings, and exchange inquiry letters. Call this when you need the current situation of a specific subject — for example 'is this shareholder still selling', 'is this company under investigation', 'has it replied to the inquiry letter'. Do NOT call this to find out what happened across the market recently — use scan_recent_events or whats_new for that. Do NOT pass both (code, market) and aent_; pick one addressing mode. Read the response in this order and stop at the first match: (1) found=false -> we do not cover this security/entity, do not retry; (2) visibility='hidden_unverified' -> the entity exists but its identity is not human-verified, so its name is withheld; query by code+market instead; (3) resolved_as='listed_company' -> your aent_ denoted the company itself and the request was redirected, use the returned code/market; (4) has_events=false -> the security EXISTS but had no covered filings in the covered period (this is the common case, ~85% of valid lookups) — report 'no filings in period', never 'company not found'; (5) companies=[...] -> a shareholder active across one or more companies, read each entry; (6) otherwise the state machines apply to that one company. Fields that separate 'did not happen' from 'we do not know' are load-bearing: current_holding_reason, window_status ('expired_no_closure' = the plan window lapsed with no closing filing), entity_link, entities_status, plan_pairing ('unresolved' = several open plans and we refuse to guess the pairing), and unclassified_count. Never collapse them into 'nothing there'. Values are objective extractions with a source PDF link; we never rate, score or attribute.

輸入參數codeaent_localemarket

get_event_with_context

Return one specific filing event together with its full timeline (every stage the case went through, each with its own source PDF) and which subject's state it changed. Call this after another tool handed you an event id and you need the whole thread rather than a one-line summary — for example to see how a penalty case progressed from filing to decision. Do NOT call this without an event id from a previous response: ids are opaque and cannot be guessed or constructed. Internal database identifiers are rejected. affects_state lets you jump back to get_entity_state. Its subjects[].aent_ may be null when entity resolution has not run yet or does not apply — in that case use the code and market from the same affects_state, which never depends on entity resolution. If the id is unknown you get found=false, which is an answer, not an error: do not retry.

輸入參數aevt必填locale

whats_new

Discover events with a linked filing dated within the last seven Beijing calendar days including today, and updated in the last seven days. A new filing may mention an old case; this does not imply new case progress. matched_filing gives the filing date and PDF that qualified the event; root source_pdf_url, phase and payload describe current event context. announce_ts remains the original first disclosure. Call this to follow recent disclosures. Do NOT use it for unrestricted history. Poll from the top and deduplicate event ids. To page backwards pass both cursor and cursor_aevt verbatim; these use processing time, not filing dates. Old cursors restart at the current window with clamped=true. Concurrent updates can move results between pages. end_of_window=true means no further results, including an empty first call; empty results are successful and do not prove the database is empty or ingestion is healthy. fallback_recent is always false: history never fills an empty window. Use a known company, entity or event for historical context.

輸入參數limitcursorlocalecursor_aevt

scan_recent_events

Discover one filing event type across companies using linked filing dates within the last seven Beijing calendar days including today. Dates omitted use this whole window; one omitted end uses the corresponding allowed boundary. Partial overlap is clamped; reversed or wholly outside dates are errors. effective_since/effective_until report the actual dates. A new filing mentioning an old case qualifies without claiming new case progress. Call this for market-wide recent filings. Do NOT use it for a full company state. Each event appears once, newest matching filing date first. matched_filing contains the qualifying filing id, date and its own PDF link; root source_pdf_url and phase describe current event context, not historical state at the selected date. phase filters current stage. At most 100 events per page. Pass cursor to continue; only non-null cursor means another page. Omit dates/phase on continuation or repeat their effective values; changing filters requires a fresh call. event_type must remain the same; limit/locale may change. matched_count counts the whole frozen window, so truncated can remain true on the last page. Windows that move outside the allowed dates fail with cursor_expired; restart without cursor. Results are a dynamic view, not a snapshot: new filings, stage changes or merges can move events between pages. Poll from the first page and deduplicate by aevt_. Empty results mean no matches after this position, not an empty database. coverage_since is data coverage, not permission to scan history. For a known company/entity use get_entity_state; for a known event use get_event_with_context.

輸入參數limitphasesinceuntilcursorlocaleevent_type必填

list_company_filings

List the most recent filings of ONE listed company: title, date, a direct link to the source PDF, and — where we have it — the structured extraction that filing produced. Call this to answer 'what has this company filed lately' and 'give me the original document', which is what most callers actually want before any analysis. This is the widest view we offer: it covers EVERY filing we hold for the company, not just the ones we extract. Do NOT use it to ask what a case or a plan currently amounts to — it returns documents in date order, not folded state; get_entity_state does that. Do NOT use it to sweep the market for one filing type across companies (scan_recent_events), and do NOT page through it for bulk export: it has no cursor and stops at 50 rows per call. Read with_extraction: most filings have none, because we extract a focused set of filing types — call list_coverage for the ones we support today. `extraction: null` means we have not extracted that filing — it never means the filing is unimportant. When extraction is present, pass its aevt_ to get_event_with_context for the full case timeline. Titles are returned in the original Chinese, unchanged — translating a filing title would be rewriting the fact. There is no cursor: this is a recent-filings view, not a bulk export. `published_at` is null for most filings: it is present only when the source itself supplied a timestamp, and we do not substitute our own collection time for it. Use ann_date, which is always present, for the filing date.

輸入參數code必填limitmarket必填

get_filing_parsed

Return ONE filing already parsed for you: its available normalised text and its tables as structured cells. Call it after list_company_filings, with the `aann_` id that tool returned, when you need what a filing actually says rather than just its title and PDF link. This is the step your own pipeline would otherwise have to do: a filing PDF is a layout format, not a data format, so pulling clean text and real table cells out of it is where ad-hoc extraction usually goes wrong. Tables come back as rows of cells you can read directly, not as an image or a flattened blob. It serves ONE filing per call, whose date is at most seven days before the database current date (eight calendar dates including today). Older filings are not gone — the filing itself and its source PDF link stay available from list_company_filings for the company's whole history; only the parsed text is recent-only. When that is why you got nothing, `reason` says outside_parsed_window, which is a different answer from unknown_filing. Source coverage is limited: PDFs over 150 pages are parsed only through the first 30 pages; table coverage is limited above 50 pages. Use source links for the complete original. text_chars measures stored text, not source completeness. text_truncated=false or next_text_offset=null does not mean every PDF page was parsed. Stored text arrives in slices: read `text_chars` for the stored total and call again with `next_text_offset` until it is null. Do NOT use this to sweep a company or the market — it takes a single filing id and has no cursor. Read `text_unavailable` before trusting the text. Two of its values are properties of the source file — a scan with no text layer, or a font we cannot map to Unicode — and retrying those will not help. A third, parse_failed, means the failure is ours rather than the document's, and asking again later may well work. Either way the source links are still worth opening.

輸入參數aann_必填text_offset

list_coverage

Return exactly what this server covers and the limits it enforces. Call this first, or whenever a query comes back empty and you want to know whether the filing type is even in scope, before concluding the data is incomplete. It takes no arguments and does not touch the database, so it works even when everything else is degraded. Coverage is deliberately narrow and expanding over time; the `event_types` list in the response is the authoritative answer, and stating it plainly is preferable to letting you discover the boundary by trial and error. Read `limits` instead of probing for the caps.

無需輸入參數。

版本歷史

1
  1. v0.1.0最新Oct 21, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分