MCP Server

AlphaCreek SEC Filings MCP

ai.alphacreek/alphacreek-mcp
Finance & Investing Public & reachable MCP 2026-07-28

What this MCP does

Enables retrieval, navigation, and event-based searching of SEC and UK FCA company filings with citations.

get_filing_toc
Return the full filing table of contents for one filing. If artifact_document_id is omitted, resolves the single latest filing for ticker/company (and optional document_type) only. Use list_filings first to discover a specific reporting period. For FCA filings, pass filing_registry=fca_nsm; TOC node ids are HTML page element ids (e.g. pf2a, page12, pageView1) for annual ESEF reports or sec-parser ids (e.g. sp-0000001) for half-year RNS HTML reports.
Read only
Input schema
{'type': 'object', 'properties': {'ticker': {'type': 'string'}, 'company': {'type': 'string'}, 'document_type': {'oneOf': [{'enum': ['10-K', '10-Q', '20-F', '6-K', '8-K', 'annual', 'half-year', 'press'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['10-K', '10-Q', '20-F', '6-K', '8-K', 'annual', 'half-year', 'press'], 'type': 'string'}}], 'description': 'Optional document type filter (canonical values only). See Field reference for allowed values per registry.'}, 'filing_registry': {'enum': ['sec_edgar', 'fca_nsm'], 'type': 'string', 'default': 'sec_edgar', 'description': 'Filing source registry. sec_edgar — US SEC EDGAR filings. fca_nsm — UK FCA National Storage Mechanism. Omit to search both registries.'}, 'artifact_document_id': {'type': 'string'}}, 'additionalProperties': False}
get_latest_filing
Return latest filing metadata for a company or ticker. If ticker and company are omitted, return newly ingested filings newest-first. Omit filing_registry in that mode to include both SEC and FCA. Company results include one metadata object; newly ingested results include a filings list. Each row includes Filing metadata object. Includes `document_type` (Canonical document type. SEC: 10-K, 10-Q, 20-F, 6-K, 8-K. FCA: annual, half-year, press.) and, for FCA press rows, `announcement_type` (FCA press subtype when document_type is press; null for annual and half-year. Values: 1st Quarter Results, 2nd Quarter Results, 3rd Quarter Results, 4th Quarter Results, Final Results, Preliminary Results, Share Buyback, Trading Update.).
Read only
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 50, 'minimum': 1, 'description': 'Max newly ingested filings when ticker and company are omitted'}, 'ticker': {'type': 'string'}, 'company': {'type': 'string'}, 'document_type': {'oneOf': [{'enum': ['10-K', '10-Q', '20-F', '6-K', '8-K', 'annual', 'half-year', 'press'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['10-K', '10-Q', '20-F', '6-K', '8-K', 'annual', 'half-year', 'press'], 'type': 'string'}}], 'description': 'Optional document type filter (canonical values only). See Field reference for allowed values per registry.'}, 'filing_registry': {'enum': ['sec_edgar', 'fca_nsm'], 'type': 'string', 'description': 'Filing source registry. sec_edgar — US SEC EDGAR. fca_nsm — UK FCA NSM. Omit with no ticker/company to list newly ingested filings from both registries.'}}, 'additionalProperties': False}
list_filings
List available filings for a ticker (newest first) with artifact_document_id and dates. Use filing_registry=fca_nsm for UK FCA NSM reports. Use this first when you need a specific reporting period. Each row includes Filing metadata object. Includes `document_type` (Canonical document type. SEC: 10-K, 10-Q, 20-F, 6-K, 8-K. FCA: annual, half-year, press.) and, for FCA press rows, `announcement_type` (FCA press subtype when document_type is press; null for annual and half-year. Values: 1st Quarter Results, 2nd Quarter Results, 3rd Quarter Results, 4th Quarter Results, Final Results, Preliminary Results, Share Buyback, Trading Update.).
Read only
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 50, 'minimum': 1}, 'ticker': {'type': 'string'}, 'company': {'type': 'string'}, 'document_type': {'oneOf': [{'enum': ['10-K', '10-Q', '20-F', '6-K', '8-K', 'annual', 'half-year', 'press'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['10-K', '10-Q', '20-F', '6-K', '8-K', 'annual', 'half-year', 'press'], 'type': 'string'}}], 'description': 'Optional document type filter (canonical values only). See Field reference for allowed values per registry.'}, 'filing_registry': {'enum': ['sec_edgar', 'fca_nsm'], 'type': 'string', 'default': 'sec_edgar', 'description': 'Filing source registry. sec_edgar — US SEC EDGAR filings. fca_nsm — UK FCA National Storage Mechanism. Omit to search both registries.'}}, 'additionalProperties': False}
read_node_content
Return content for one or more navigation nodes in a filing. Pass one node via node_id or several via node_ids, using the node ids from TOC lines (the same values shown as NODE_ID lines in this tool's output). Returns plain MCP text: an ARTIFACT_DOCUMENT_ID header, then per-node blocks with NODE_ID, TITLE, CITATION_URL, CITATION_MARKDOWN, CONTENT_START … CONTENT_END. Each block's CITATION_URL links to the reader location for that node; CITATION_MARKDOWN is the same link as ready-to-paste markdown [TITLE](CITATION_URL). A requested TOC node may expand into more granular child NODE_ID blocks, each with its own TITLE, CITATION_URL, and CITATION_MARKDOWN. Responses that include citations end with a CITATIONS_IN_THIS_RESPONSE list.
Read only
Input schema
{'type': 'object', 'required': ['artifact_document_id'], 'properties': {'node_id': {'type': 'string', 'description': 'Single node id from TOC / NODE_ID lines. For FCA filings this is the HTML page id (e.g. pf2a, page12, pageView1).'}, 'node_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Batch read: multiple node ids for one filing (same identifiers as NODE_ID / TOC).'}, 'artifact_document_id': {'type': 'string'}}, 'additionalProperties': False}
search_sec_event_filings
Search US SEC 8-K and 6-K current-report nodes for company events and disclosures. Use this to discover issuers across a date range. Do not use this for 10-K or 10-Q filings. How to search: 1. Always pass concept_groups. Every group is required (AND). Within each group's any_of list, one alternative must match (OR). All groups match inside one filing node. Use separate groups for the main context, action or direction, business object or metric, and a causal or limiting relation when that relation is essential. 2. Optionally pass query with likely verbatim disclosure phrases. Each item is an exact adjacent-token phrase. Put alternate full phrasings in the same list. Query plus concept_groups is hybrid search: exact phrase matches receive a score boost, and concept groups recover different wording. Do not put broad topic words such as "China", "AI", "customer", or "restructuring" alone in query. 3. Add real synonyms and alternate filing language to any_of. The concept path uses English stemming, so one base form usually covers inflections (decline/declined/declining and volume/volumes). Stemming does not add synonyms (sales does not mean revenue; reduce does not mean weaken). 4. Do not search with query only. Omit query for concept-only search. If query is omitted, the search is concept-only. 5. Use date filters for time and tickers to search only selected issuers. Pass ne_tickers (or prefix a symbol with !) to omit issuers. 6. Results are candidates, not final conclusions. Call read_node_content with each promising document_id and node_id(s). Verify negation, causal claims, comparisons across periods, and numeric thresholds such as a percentage or dollar amount in the source text. Cite CITATION_MARKDOWN. When you finish an issuer, search again with the same inputs and add its ticker to ne_tickers so later hits come from other issuers. Examples of useful group dimensions include geography + weakening signal + demand metric; CapEx + reduction + guidance; AI/automation + enablement + workforce + reduction; customer + loss/concentration; data centers + exposure + monetization; or restructuring + program/charge. Do not add a group for a detail that the filing may leave implicit, because every group is mandatory. Each result is one filing node: document_id, node_id, parent_node_id, ticker, type, filing_date, match_mode, query, score, and a short snippet.
Read only
Input schema
{'type': 'object', 'required': ['concept_groups', 'start_date', 'end_date'], 'properties': {'limit': {'type': 'integer', 'default': 30, 'maximum': 50, 'minimum': 1, 'description': 'Maximum unique matches to return across all query phrases. At most 3 matches come from one filing.'}, 'query': {'oneOf': [{'type': 'string', 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 8, 'minItems': 1}], 'description': 'Optional exact disclosure phrases for hybrid search (max 8). Each phrase requires adjacent tokens in order and does not use stemming. Send complete event phrasings, not standalone topics. Omit this field for concept-only search. Examples: ["reduced capital expenditures", "lower capital spending"]; ["lost a major customer", "termination by our largest customer"]; ["workforce reduction", "reduce headcount"].'}, 'tickers': {'oneOf': [{'type': 'string', 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 50, 'minItems': 1}], 'description': 'Optional. Search only these issuers (example: ["NVDA", "MSFT"]). Prefix a symbol with ! to omit it (same as ne_tickers). Max 50. Omit to search all issuers.'}, 'end_date': {'type': 'string', 'description': 'Inclusive end date on filing_date (YYYY-MM-DD)'}, 'ne_tickers': {'oneOf': [{'type': 'string', 'minLength': 1}, {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 50, 'minItems': 1}], 'description': 'Optional. Omit these issuers (example: ["HOOD"] or ["!HOOD"]). After you finish read_node_content for a ticker, search again with that ticker here. Exclude wins if a ticker is in both lists. Max 50.'}, 'start_date': {'type': 'string', 'description': 'Inclusive start date on filing_date (YYYY-MM-DD)'}, 'concept_groups': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'any_of'], 'properties': {'name': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Short role label, such as geography, direction, business_metric, technology, or customer_event.'}, 'any_of': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 16, 'minItems': 1, 'description': 'Synonyms or short phrases for one required concept. Any one can match. Multiword values are adjacent-token phrases. English stemming applies.'}}, 'additionalProperties': False}, 'examples': [[{'name': 'capital_spending', 'any_of': ['capital expenditure', 'CapEx', 'capital spending']}, {'name': 'direction', 'any_of': ['reduce', 'lower', 'cut']}, {'name': 'forward_looking', 'any_of': ['guidance', 'outlook', 'expect']}]], 'maxItems': 6, 'minItems': 2, 'description': 'Required stemmed concept groups. Every group must match in the same node (AND). Any one alternative inside any_of can satisfy its group (OR). Use 2-5 focused groups in most searches. Supply synonyms and alternate filing terms, but omit simple inflections because English stemming handles them. Do not use this field to prove numeric thresholds, negation, causality, or changes across several filings; retrieve candidates and verify those claims with read_node_content.'}}, 'additionalProperties': False}
Added
search_sec_event_filings
2026年9月11日0:30
Added
read_node_content
2026年9月11日0:30
Added
get_filing_toc
2026年9月11日0:30
Added
list_filings
2026年9月11日0:30
Added
get_latest_filing
2026年9月11日0:30