关于 Edgar
Edgar 是用于查询美国上市公司申报文件和 SEC 结构化数据的 MCP 服务,提供企业概览、XBRL 趋势、同业及子公司查询,也可检索产品收入和申报附件。
主要功能
- 01包含申报文件和 XBRL 数据的企业概览
- 02搜索申报文件并读取内容
- 03获取 XBRL 数据及概念时间序列
- 04按 SIC 代码查找同业公司
- 05解析母公司与子公司实体
- 06提取产品收入和申报附件
适用场景
- 01查看上市公司的最新财务概况
- 02追踪各报告期的收入变化
- 03比较同一行业的公司
- 04调查子公司、产品或披露信息
MCP 相关
向 MCP 客户端提供 SEC EDGAR 企业、XBRL、同业、子公司、产品收入和附件查询工具。README 说明可通过 Pipeworx 网关连接,并提供可引用的资源 URI。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/edgar/mcpclaude mcp add --transport http pipeworx-io-edgar https://gateway.pipeworx.io/edgar/mcp{"mcpServers":{"pipeworx-io-edgar":{"type":"http","url":"https://gateway.pipeworx.io/edgar/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-edgar":{"type":"http","url":"https://gateway.pipeworx.io/edgar/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-edgar":{"type":"http","url":"https://gateway.pipeworx.io/edgar/mcp"}}}{"mcpServers":{"pipeworx-io-edgar":{"serverUrl":"https://gateway.pipeworx.io/edgar/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
SEC EDGAR — 上市公司申报文件
美国证券交易委员会的申报文件数据库。美国的每家上市公司都会在此提交文件,每份文件都带有时间戳且不可更改,每项披露(收入、债务、风险因素、高管薪酬、并购活动、内幕交易)都采用结构化形式,便于机器检索。免费且权威。
这是 Pipeworx 的一部分——一个将 AI Agent 连接到 1882+ 个实时数据源的 MCP 网关。这是独立、非官方的集成,与上游提供方无关联,未获其认可,也非由其发布。
这对 AI Agent 为什么重要
如果你的 Agent 要回答任何有关美国上市公司的问题——财务状况、法律风险、知识产权、高管变动、近期重大事件——答案都在 EDGAR 中。数据采用结构化格式(XBRL),因此无需解析 PDF。
两种关键工作流,以及一次调用完成两者的方式:
0. 快照(一次调用)。“给我一份 Apple 的 SEC 概况。” → edgar_company_snapshot({ticker_or_cik: "AAPL"}) → CIK + 近期实质性申报文件(默认包括 10-K/10-Q/8-K/20-F/40-F/6-K/DEF 14A;除非你指定 form_type: "all",否则会排除 Form 4 噪声)+ 最新年度报告中的主要 XBRL 数据(收入、净收入、资产、现金、EPS……)。这一步合并了工作流 1 和 2:解析 → 列出 → 拉取,而需要深入数据的用户原本要手动分三次调用来完成这一连串操作。没有 XBRL 的申报方(例如基金或信托)仍会返回其申报文件,并附上 financials_status: "unavailable" 及原因。edgar_ticker_to_cik 现在会返回一个指向此处的 next 提示。
1. 申报文件工作流。“给我看看 Apple 最近的 10-Q。” → edgar_ticker_to_cik("AAPL") → edgar_company_filings(cik) → 返回申报文件列表,包含接收编号、表格类型和申报日期。
2. 概念工作流。“Apple 过去 4 个季度的收入趋势如何?” → edgar_company_concept(cik, "Revenues") → 返回按期间划分的 XBRL 标记值时间序列。
3. 同行/竞争对手工作流。“谁是 Apple 的竞争对手?” → edgar_companies_by_sic({ticker_or_cik: "AAPL"}) → 解析 Apple 自身的 SIC 代码(3571,电子计算机),并返回该代码下的其他 SEC 申报方,优先列出有上市股票代码的同行。也可以直接传入 sic 代码而不是公司,直接浏览某个行业。
4. 实体解析工作流(母公司 ↔ 子公司)。sponsor_to_filer({sponsor: "Merck Sharp and Dohme"}) 会将子公司/运营实体名称解析到其上市母公司(MRK)。filer_to_sponsors({ticker_or_cik: "MRK"}) 则反向查询——返回母公司最新 10-K 中 Exhibit 21 披露的完整子公司列表,并附上司法管辖区和申报来源信息。传入 name_filter,即可核查某个候选名称,无需读取完整列表。
5. 产品级收入。“Keytruda 创造了多少收入?” → edgar_product_revenue({ticker_or_cik: "MRK", product_filter: "Keytruda"})。edgar_company_concept/edgar_company_facts 仅提供未按维度细分的 XBRL 总额——产品/分部明细以 XBRL 维度(“Keytruda [Member]”)标记,这些 API 无法显示。此工具会直接读取 SEC 自行呈现的该维度数据财务报告,从收入细分附注中提取数据,并提供引用信息(接收编号、申报日期、报告 URL)。未指定 form_type 时,它会依次解析 10-K、20-F、40-F,因此外国私人发行人也能以相同方式使用(edgar_product_revenue({ticker_or_cik: "NVS", product_filter: "Entresto"}) 会读取 Novartis 的 20-F);实际使用的表格类型会通过 resolved_form 返回。并非所有申报方都会在 XBRL 中标记产品级收入——Neurocrine 按主要客户披露收入,而 United Therapeutics 只披露收入确认政策;两者都会明确返回 not_found,而不是空数组。
6. 永远不会进入 XBRL 的运营 KPI(新闻稿)。 “Tesla 2026 年第三季度的汽车交付量和产量”/“Tesla 部署了多少储能”。公司的季度生产、交付和发货/部署 KPI 会在其新闻稿中披露——该新闻稿是附在 8-K 后的附件——而不是结构化财务报表中的内容,因此 edgar_company_concept/edgar_company_facts 正确地不会返回任何结果。edgar_filing_exhibit_text({ticker_or_cik: "TSLA", filed: "2026-10"}) 会直接读取附件文本(8-K 自身的主文档通常只会写“请参阅所附附件”,其中不包含任何数字),并默认读取 EX-99.* 附件,这是 Item 2.02/7.01 业绩或 KPI 新闻稿的通用惯例。传入 search 查询具体数据(例如 “vehicle deliveries”、“Megapack”、“same-store sales”),无需通读整篇新闻稿。这适用于任何美国申报人的 8-K 新闻稿,而不只是 Tesla 的新闻稿。
这两种流程通常都会先调用 edgar_ticker_to_cik 或 resolve_entity({type: "company", value: "AAPL"}),以获取规范的 10 位 CIK。
身份验证
无需身份验证。SEC EDGAR 是免费的公开服务,无需身份验证。Pipeworx 会转发礼貌的 User-Agent 标头,以遵守 SEC 的 API 指南。
可引用的 URI
pipeworx://edgar/company/{cik}/filings
pipeworx://edgar/company/{cik}/facts
将其嵌入输出中。即使公司重组,URI 也保持稳定——公司可能更改品牌,但其 CIK 不会改变。
值得了解的表格类型
| 表格 | 内容 | 时间 |
|---|---|---|
| 10-K | 年度报告 | 财年结束后约 60 天 |
| 10-Q | 季度报告 | 季度结束后约 45 天 |
| 8-K | 重大事件(并购、高管变动、业绩等) | 4 个工作日内 |
| DEF 14A | 代理声明(高管薪酬、公司治理) | 年度股东大会前约 6 周 |
| Form 4 | 内部人交易披露 | 交易发生后 2 个工作日内 |
| 13F | 机构持仓(管理资产规模 >1 亿美元的基金) | 季度结束后 45 天 |
| S-1 | IPO 注册文件 | 公司上市时 |
| 13D / 13G | >5% 的受益所有权披露 | 持股比例超过门槛后 10 天内 |
如需查询内部人交易,请参阅专用的 insider-trading 包——它通过更清晰的架构呈现 Form 4 / 13D / 13G 变动。
常见问题
- 概念名称变更。 SEC 申报者偶尔会更改其用于标记收入的 XBRL 概念。默认的
Revenues概念在较新的财年可能已经过时;可尝试将RevenueFromContractWithCustomerExcludingAssessedTax作为备用项。 - 期间不匹配。 不同公司的财年结束时间不同(Apple = 9 月,Microsoft = 6 月,Google = 12 月)。进行比较时,务必注明期间。
- CIK 格式。 有些端点要求使用补齐到 10 位的格式(
0000320193),有些则要求不补齐的格式(320193)。Pipeworx 两种格式都接受;edgar_ticker_to_cik中的cik_padded字段是资源 URI 的标准格式。 - 近实时,并非实时。 申报文件会在提交后几分钟内出现在 EDGAR 上,但 Pipeworx 会缓存结果。若需要突发新闻级别的时效性,请设置
Cache-Control: no-cache(适用匿名请求限额),或检查_meta.cache.fresh_until字段。 - 概念可用性各不相同。 小型申报者标记的 XBRL 概念少于大型申报者。对于公司实际上并未报告的有效概念,
edgar_company_concept可能返回空数组。使用edgar_company_facts查看公司实际报告了哪些概念。 - 此工具包中,公司参数有三种不同的拼写方式,而
edgar_company_concept全部接受。edgar_company_filings/edgar_insider_transactions/edgar_product_revenue将其命名为ticker_or_cik,edgar_fund_holdings/edgar_ticker_to_cik将其命名为ticker,而edgar_company_concept/edgar_company_facts将其命名为cik(也接受 ticker)。模型填充参数时会使用它最后读到的名称,因此edgar_company_concept将ticker和ticker_or_cik声明为cik的别名,并将metric声明为concept的别名。在此更改之前进行的测量(fleet #2058):在ask_pipeworx仲裁器从 16 个从未提问过的问题中选中此工具的 11 次情况下,有 9 次调用被网关的必需参数预检拒绝——每一次都是因为发送了ticker或ticker_or_cik,而不是cik;其中三分之一还发送了metric,而不是concept。使用cik+concept的两次调用均成功。被拒绝调用的结果记录为partial,而不是错误,因为作为单工具选择的请求若以单元素tools数组到达,就会进入扇出分支——因此,“唯一一次查找根本没有运行”与“多次查找中有一些运行了”使用的是同一个词。 - 未指定名称的申报文件,就是我们选定的申报文件;现在响应信封会说明选的是哪份(fleet #3319)。 如果省略
accession,edgar_filing_text和edgar_filing_documents会自动解析form_type中最新的申报文件,随后每个字段都会像用户指定了该文件一样描述它。2026-10-18 的实时测量:一个有依据的问题询问“Tesla 2026 年 9 月 29 日的 8-K”,最终调用了edgar_filing_text({ticker:"TSLA", form_type:"8-K", search:"credit facility"}),结果解析到 2026-10-02 的 8-K——这是另一份申报文件,含 3,061 个字符,匹配数为零;5 次尝试中有 5 次都以not_in_source拒答,而用户询问的申报文件就在同一索引中下一行,其中包含全部三个信贷额度。因此,每个响应都会包含accession_source("caller"|"auto_selected");若由我们选定,还会包含一个auto_selected区块,说明用户请求了什么、选中了什么、读取了什么及其精确匹配数,以及哪些候选文件未被读取。如果问题中提到了日期,请传入filed("2026-09-29"、"2026-09"、"September 29, 2026");对于 8-K,最新申报文件通常不是用户指的那份。若只有search可用,edgar_filing_text会跳过文本中没有精确匹配的候选文件继续查找(最多查 4 份文件,且只接受精确匹配);若没有匹配项,则回退到最新文件,并发出警告,说明其中零匹配的结果只能说明该文件中没有匹配,不能据此判断公司没有相关内容。 edgar_company_filings曾经会直接丢弃指定的accession。 它既未声明accession,也未声明include_primary_text,因此调用者即使指定了一份申报文件,也会得到与未指定时相同的未筛选列表——HTTP 200,看起来像是成功完成。这正是 fleet #3319 问题最终失败的原因:有依据的调用链最后一次尝试将请求路由到此处,参数为{accession:"0001628280-26-063820", ticker:"TSLA", include_primary_text:true}(AEblob12——路由器已解析出正确的 8-K),但提取模型收到的是一份通用的 10 行申报文件列表,其中没有任何信贷额度金额。现在这两个参数都已正式支持,filed也同样支持;单行结果会在narrowed_note中说明,而申报者从未提交过的 accession 会明确报出not_found:错误,而不是返回未筛选列表。fiscal_year和fiscal_period既是筛选条件,也是响应字段。 它们是values中每一行的两个字段名,而描述中“匹配请求的 fiscal_year 和 fiscal_period”的建议曾导致参数填充器将它们作为参数发送;由于当时未声明这两个参数,它们会被静默丢弃,调用者于是收到全部 89-230 个报告期间,却看不出筛选条件已被忽略。现在它们已是正式的可选筛选条件:传入其中一个或两个,values/latest就会按条件筛选,并附带period_filter区块回显已应用的条件。筛选条件无匹配项时,会返回零行,并列出申报者实际报告的财年和期间,而不会回退到所有期间——fiscal_year是申报者自己的标签(NVDA 的 FY2024 于 2024 年 1 月结束),因此,按日历年思考的调用者应看到这些标签,而不是收到相邻财年的编号。- 如果未同时考虑以下两点,
edgar_search_filings会忽略上游的size/limit,并静默丢弃只指定一端的日期筛选条件(fleet #3251)。 EDGAR 的搜索索引(efts.sec.gov)无论请求的size是多少,都会返回固定页面,最多包含 100 条结果——已通过实时验证——因此该工具现在会自行按调用者指定的limit截断结果,并将total_hits(实际匹配数)与returned(返回数)分开报告;如果固定页面包含的结果多于请求数量,则会在note中说明。另一方面,如果startdt/enddt只设置了一个,efts 会静默忽略dateRange=custom(筛选条件不会生效,结果会包含从 2001 年起的申报文件)——现在只传入start_date或end_date时,另一端会默认设为相应边界(EDGAR 全文覆盖范围的起始日期 2001-01-01,或今天),避免筛选条件失效。传入entity(ticker、公司名称或 CIK;别名为ticker_or_cik/cik/ticker),即可将全市场搜索限定到单个申报者——解析方式与edgar_ticker_to_cik解析公司的方式相同,并包含针对不在company_tickers.json中的已退市/非上市申报者的回退处理。由于 efts 的响应缓存按q/日期/forms/from建立键,而不包含ciks/entityName(reference_efts_cache_key_leak,fleet #619——按ciks筛选的请求可能收到缓存的未筛选结果,且正常返回 200),实体筛选会在q中附加一个否定式缓存破坏令牌,并在客户端重新检查每一行是否匹配请求的 CIK;若某行不匹配而被丢弃,会通过entity_filter_guard_dropped报告,而不会静默消失。该工具不会返回文本片段——EDGAR 的索引不提供文本片段——因此,请将结果的accession传给edgar_filing_text,并将search设置为查询内容,以查找匹配段落;不要让此工具代你获取每条命中结果的文档(SEC 会通过一个共享出口 IP 对整个服务群进行限流)。
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"edgar": {
"url": "https://gateway.pipeworx.io/edgar/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/edgar/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、
discover_tools、search_within、remember/recall,以及网关级的其他工具。因此,你看到的工具数量会多于表中的数量:目前,单个工具包端点除了该工具包自有的工具外,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其确切范围,也是当天情况的权威依据。
这是刻意为之,并非意外地进行多路复用。元工具让限定范围的连接也能回答此工具包无法涵盖的问题——通过可跨整个目录路由的 ask_pipeworx 实现——无需添加第二个 MCP 服务。目前无法挂载不包含这些元工具的工具包端点;如果额外的架构定义消耗的上下文超过路由带来的价值,请连接一次完整网关,而不是连接多个工具包端点。
也可以连接到完整的 Pipeworx 网关,直接获取每个工具包的工具,而不只是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关和相同的 1882+ 个数据源。唯一的区别在于直接列出哪个工具包的工具;从任一端点调用 ask_pipeworx 都能访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/edgar_search_filings \
-H 'Content-Type: application/json' \
-d '{"query":"artificial intelligence","form_type":"10-K","start_date":"2024-01-01","end_date":"2024-12-31","limit":20}'
首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/edgar_search_filings。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。
独立运行(无需网关账户)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关往返:
{
"mcpServers": {
"edgar": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-edgar"]
}
}
}
或者直接运行,确认它能正常启动:
npx -y @pipeworx/mcp-edgar
它通过 stdin/stdout 使用 MCP 协议,并且只会对此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接额外提供的任何共享元工具。相同的源代码、相同的工具,但没有 ask_pipeworx 路由功能。
使用 ask_pipeworx
你可以用通俗易懂的语言提问,而不是直接调用工具——此功能既适用于上面的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Edgar data" })
网关会自动选择合适的工具并填写参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。