Earnings Watch

io.github.benjamin-di由 GitHub 账号 benjamin-di 发布v0.3.3更新于 Nov 4, 2026

Verified issuer earnings calendars and results documents

已验证STDIO仅桌面效率与工作流金融

概览

AI 生成的概览

本地 MCP 服务器,为助手提供经核验的发行人财报日历、事件证据与官方业绩文件链接,并维护个人关注列表。

可以做什么
  • 查询带有时间不确定性的即将到来财报日期,并查看事件证据、修订与近期历史
  • 获取官方业绩文件链接及其核验状态,并读取基于游标的公开变更流
  • 管理个人关注列表:关注或取消关注发行人、排队登记、处理歧义
  • 规划可选的外部日历操作,并记录客户端确认的写入
  • 查看目录与维护状态,使用内置提示词和即将事件日历资源
适用场景
适合需要以引用证据而非猜测日期来跟踪公司财报日期与业绩文件,并维护个人关注列表或把财报事件同步到外部日历的场景。
运行要求
需要 Python 3.12+ 并在本地安装该软件包(例如通过 uv tool install),再配置以 stdio 运行 serve 命令的客户端。数据存于 SQLite;抓取发行人页面与模型抽取在单独的维护运行中进行。可选的模型后端需自行登录 Claude Code 或 Codex CLI;使用 OpenAI 兼容的 Codex 端点需设置 codex_base_url 与 codex_key_env。不附带发行人库或行情数据订阅。
安装前请注意
服务运行时会读取 SQLite 并更新个人关注与记录,关注列表变更会写入本地。日历更新仅由服务器规划,需由客户端通过其 Outlook 应用执行并回传确认。模型维护使用你自己的 CLI 账号及其限额与条款;请保护认证文件与数据卷。HTTP 模式使用每人独立的 bearer 令牌,须妥善保管。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Earnings Watch,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Earnings Watch

Verified issuer earnings calendars and results documents through a CLI, Python API and MCP server. Models propose dates; deterministic checks require quoted evidence and consistent issuer, period and timing. A call time never silently becomes a publication time.

Calendar updates are optional. Earnings Watch produces an operation plan; your MCP client uses its external Outlook app to apply it and acknowledges confirmed writes. No Microsoft credentials or calendar SDK are required by this package.

Maintained source and contributions: benjamin-di/earnings-watch. See Source and releases.

Requires Python 3.12+. Install the published package with uv tool install earnings-watch, or develop from a source checkout:

sh
make bootstrapuv run earnings-watch inituv run earnings-watch doctoruv run earnings-watch sources import examples/sources.yamluv run earnings-watch watch EXAMPLEuv run earnings-watch upcoming --format json

The example uses reserved domains and fictional data; replace its source URLs and issuer metadata before fetching. There is no bundled issuer universe or market-data subscription.

Maintenance and models

Serving reads SQLite and updates personal follows/ledgers; it never fetches issuer pages or calls a model. Run maintenance separately:

sh
uv run earnings-watch sweep --dry-runuv run earnings-watch sweepuv run earnings-watch sweep --docs-onlyuv run earnings-watch worker

The default backend is none: it preserves existing dates and still polls official release providers. To extract new dates, install and sign into your own Claude Code or Codex CLI, then configure it in earnings-watch.toml:

toml
[llm]backends = ["claude-code", "codex", "none"]max_calls_per_run = 20

Supported minimum versions are Claude Code 2.1.312 and Codex 0.164.0. Run earnings-watch doctor --live to check capabilities and an optional model canary. The package has no login flow. Model usage follows your CLI account's limits and terms. Only an explicit sign-in or account-limit refusal, or a configured Codex endpoint that is unreachable or failing before any output, tries the next backend; a timed-out run is not repeated in the same tick.

Codex runs with --ignore-user-config. To send it through an OpenAI Responses-compatible endpoint, set both codex_base_url and codex_key_env (the name of the environment variable holding its key) under [llm]; the key itself never goes in the file. Use https:// for any endpoint that is not on the local host. Claude Code receives ANTHROPIC_BASE_URL and CLAUDE_CODE_MAX_RETRIES from the environment, so a bounded retry count lets an unavailable endpoint fail before the task timeout.

MCP

A local client configuration, after initialization:

json
{"mcpServers":{"earnings":{"command":"earnings-watch","args":["serve","--stdio"]}}}
ToolPurpose
earnings_upcomingBounded upcoming dates with timing uncertainty
earnings_get_eventsEvidence, revisions and recent history
earnings_documentsOfficial result-document links and verification status
earnings_changesCursor-based public change feed
earnings_watchlistYour follows and registration states
earnings_watchFollow an issuer; queue registration or resolve ambiguity
earnings_unwatchRemove a manual follow
earnings_calendar_planPlan optional external calendar operations
earnings_calendar_ackRecord confirmed operations from a signed plan
earnings_statusCatalogue and maintenance status

Prompts: earnings_briefing, results_brief, sync_to_my_outlook. Resource: earnings://upcoming.ics. Exact times require verified clock and timezone evidence; otherwise calendar entries are all-day. Outlook operations never include attendees.

HTTP standalone mode uses a separate bearer token per person at /users/<id>/mcp. Gateway mode accepts a configured backend bearer and an immutable subject header from the admission gateway at /mcp. These modes are separate trust boundaries; see permissions.

Connections page and notifications

The optional Connections page provides Upcoming, Your companies, Notifications and Calendar in one place. Sign in, add companies or preview a holdings import, then subscribe to your private calendar feed. Facts are shared; holdings, watchlists, mutes, preferences and receipts are personal.

Results-out notifications are enabled for new people. Daily briefs and urgent changes are optional. Mail submission requires a separately configured transport; the server and acquisition worker never send messages themselves.

Docker Compose

sh
cp earnings-watch.example.toml earnings-watch.tomldocker compose builddocker compose run --rm server initdocker compose run --rm server users add exampledocker compose up -d

Save the returned token privately and use it only on that person's HTTP path. The server binds to loopback by default. Both images run as uid 1000; Compose drops capabilities, prevents privilege escalation and mounts the root filesystem read-only. The worker image includes pinned model CLIs; their auth volume is optional with backends=["none"]. Configure CLI sign-in outside the read-only worker before enabling model maintenance. Protect auth files and the data volume from other users.

Use --config PATH, --person ID, and --json with the CLI. Settings come from TOML and EARNINGS_WATCH_* environment variables. See operations, architecture, providers and design decisions.

Development

make check verifies lock drift, lint, formatting, types, dependency boundaries, offline tests and wheel/source builds. Tests use synthetic issuers and fake network/model/account boundaries. Real-model and real-page checks are separate operator gates. Read CONTRIBUTING.md and SECURITY.md.

See implementation status for completed capabilities, release gates and the production adapter work still required before cutover.

来源:README.md,提交 0d3c6cc

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:软件包安装失败。

版本历史

4
  1. v0.3.3最新Nov 4, 2026
  2. v0.3.1Nov 1, 2026
  3. v0.2.1Oct 31, 2026
  4. v0.1.0Oct 30, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分