{"serverId":"mcp-registry/com.astockevent/astockevent","tools":[{"name":"get_entity_state","fixed":{"name":"get_entity_state","description":"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'.\n\nDo NOT call this to find out what happened across the market rece","inputSchema":{"type":"object","title":"get_entity_stateArguments","properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","default":null,"description":"Security code, e.g. '000029'. Must be given together with market."},"aent_":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aent","default":null,"description":"Opaque entity id taken from a previous response. Never construct or guess one. Mutually exclusive with code/market."},"locale":{"enum":["en","zh"],"type":"string","title":"Locale","default":"en","description":"Language of human-readable data labels only; errors and this description are always English."},"market":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market","default":null,"description":"One of ['SH', 'SZ', 'BJ']. Required when code is given."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":377,"tokensAfter":377},{"name":"get_event_with_context","fixed":{"name":"get_event_with_context","description":"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.\n\nDo NOT call this without an event id from a previous response: ids are opaque and cannot be guessed or constructed. Internal database identif","inputSchema":{"type":"object","title":"get_event_with_contextArguments","required":["aevt"],"properties":{"aevt":{"type":"string","title":"Aevt","description":"Opaque event id from a previous response. Must start with 'aevt_'."},"locale":{"enum":["en","zh"],"type":"string","title":"Locale","default":"en","description":"Language of data labels only."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":253,"tokensAfter":253},{"name":"get_filing_parsed","fixed":{"name":"get_filing_parsed","description":"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.\n\nThis 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 ","inputSchema":{"type":"object","title":"get_filing_parsedArguments","required":["aann_"],"properties":{"aann_":{"type":"string","title":"Aann","description":"Opaque filing id from list_company_filings, e.g. aann_Kyw46MM1gCnIaBxA."},"text_offset":{"type":"integer","title":"Text Offset","default":0,"description":"0-based offset into the filing's full text. Start at 0; then pass next_text_offset from the previous call."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":270,"tokensAfter":270},{"name":"get_related_filings","fixed":{"name":"get_related_filings","description":"Return the other filings this filing cites. Call it after list_company_filings or get_filing_parsed, with the `aann_` id they returned, when you need the paper trail around a filing rather than the filing alone.\n\nChinese listed companies print a filing number on most of their filings (e.g. 2026-047) and later filings cite it in their text. This tool follows those citations. Matching is exact and scoped to the same company — those numbers are per-company yearly counters and collide across the mar","inputSchema":{"type":"object","title":"get_related_filingsArguments","required":["aann_"],"properties":{"aann_":{"type":"string","title":"Aann","description":"Opaque filing id from list_company_filings, e.g. aann_Kyw46MM1gCnIaBxA."},"limit":{"type":"integer","title":"Limit","default":20,"description":"Max related filings to return. See limits.related_limit_max."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":255,"tokensAfter":255},{"name":"list_company_filings","fixed":{"name":"list_company_filings","description":"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.\n\nThis is the widest view we offer: it covers EVERY filing we hold for the company, not just the ones we extract.\n\nDo NOT use it to ask what a case or a plan currently amount","inputSchema":{"type":"object","title":"list_company_filingsArguments","required":["code","market"],"properties":{"code":{"type":"string","title":"Code","description":"Six-digit A-share ticker, e.g. 000029."},"limit":{"type":"integer","title":"Limit","default":20,"maximum":50,"minimum":1,"description":"1..50. Default 20."},"market":{"enum":["SH","SZ","BJ"],"type":"string","title":"Market","description":"Which exchange the ticker belongs to."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":279,"tokensAfter":279},{"name":"list_coverage","fixed":{"name":"list_coverage","description":"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.\n\nIt 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 le","inputSchema":{"type":"object","title":"list_coverageArguments","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174}],"toolsChanged":6,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}