Does mcp-yahoo-finance send data, and where? — data-flow verdict

100/100 integrity 100% evidence coverage evidence-backed Measures evidence support, not confidence — how this is scored

Verdict (the facts)

Tool
pip/mcp-yahoo-finance
Integrity axis
honest — Observed behaviour matches the tool's stated function; the egress above is the tool doing its advertised job. 'honest' is the integrity axis — it does NOT imply the data flow is irrelevant; see the data-flow axis and jurisdiction.
Data-flow axis
Sends data to fc.yahoo.com, finance.yahoo.com, guce.yahoo.com, query1.finance.yahoo.com, query2.finance.yahoo.com (US, jurisdiction tier 2) as its core function. No telemetry, analytics or error-reporting side-channel was found (full source + dependency-tree review). Where your data goes is determined by the tool's stated purpose, not by a hidden observability channel.
Disclosure
functional — No third-party telemetry, analytics or error-reporting: zero matches across the extracted sdist and the full transitive dependency set (uv.lock) for all common observability SDKs; the package has no HTTP/socket code of its own. Every destination is Yahoo-owned and reached through the yfinance dependency: the quote endpoints plus Yahoo's own cookie/crumb (fc.yahoo.com) and consent (guce.yahoo.com) handshake that yfinance performs to obtain a session. No separate vendor receives the data.
Capture self-test
verified
Severity
none — integrity axis only (undeclared exfiltration). Functional egress and disclosed metadata are reported as neutral facts and are not graded here.
Version (pinned)
0.1.3 · commit
Content hash
sha256:cd87e29e18924a56fdd83698f4d40e77a2eb4f3a1024ba51c05e6e4b47e8d48f
Signature
ed25519:h91jioF9KPFqtJ9Vd/7+Tffgx5PiB5Xd/DatFk… · Ed25519 public key · sha256:49cf8457b42a7048
Scanned
2026-06-14T00:00:00Z — Pinned to mcp-yahoo-finance@0.1.3, published 2025-05-16. This verdict applies to that exact version; a newer release would require a re-scan.
Re-verified
2026-06-14 — pinned version current
Categories
finance functional-egress US published
Observation history
1 scan(s); first seen 2026-06-14T00:00:00Z · latest 2026-06-14T00:00:00Z

Observed egress destinations

hostcountryjurisdictionclassdisclosurefrequencykind
fc.yahoo.comUStier 2sessionby purposeon launch and on every tool callYahoo cookie/crumb handshake performed by yfinance to obtain a session (Yahoo-owned)
query1.finance.yahoo.comUStier 2functionalby purposeon launch and on every tool callquote/financial-data API (ticker + date args)
query2.finance.yahoo.comUStier 2functionalby purposeon launch and on every tool callquote/financial-data API (ticker + date args)
guce.yahoo.comUStier 2sessionby purposeon launch and on every tool callYahoo consent/session handshake (Yahoo-owned, part of the yfinance session setup)
finance.yahoo.comUStier 2functionalby purposeduring the runfinancial-data fetch

Each destination is classified FUNCTIONAL (the tool's advertised job requires the call — a neutral fact about where your data goes), SESSION/AUTH (handshake with the same operator), or TELEMETRY/ERROR_REPORTING (an observability side-channel not required for the function). Disclosure is judged across the tool's full public doc surface, not just its README, and any 'undisclosed telemetry' finding is adversarially refuted before it is asserted.

Jurisdiction context: Tier 2 = third country (e.g. US): transferring EU personal data to a third country requires a transfer basis under GDPR Art. 44-49 (e.g. SCCs / EU-US Data Privacy Framework) — an obligation on you, the deployer; the tool gives no control over this flow. This is the applicable framework, not a finding that the tool violates it.

Evidence — the captured request (verify, don't just trust)

Capture self-test: verified — a beacon decoy was emitted from the tool's network context; its presence in the intercept means a 'no egress' result would have been trustworthy.

Observed: GET https://fc.yahoo.com/ ×31 — intercepted (the tool's HTTPS was terminated against the sandbox CA; the egress was then blocked by strict-egress, but the full request was captured)

Payload fields actually sent:

Captured payload sample (one event):


Captured in the sandbox run. The distinct_id (a persistent machine identifier) and the write-only, public-by-design ingestion key are truncated above; payload_fields is the union observed across the run.

Reproduce it yourself (canary-sandbox (open methodology; Docker backend)):
python -m canary.cli scan <target> --backend docker # target: pip mcp-yahoo-finance@0.1.3
Re-run it yourself: the scanner installs the pinned version, drives the tool over MCP, and intercepts all egress.

Full raw captured trace + verification: /verdict/yahoo-finance/evidence.json — every captured request (redacted), the verdict content-hash and the package checksum, for an AI or auditor that wants the underlying observation, not just the conclusion.

Disclosure check (the §824 evidence)

Read
PyPI sdist source; uv.lock full transitive set grep (zero observability matches); yfinance dependency behaviour
Quoted from the tool's own docs
“”
Match
No third-party telemetry, analytics or error-reporting: zero matches across the extracted sdist and the full transitive dependency set (uv.lock) for all common observability SDKs; the package has no HTTP/socket code of its own. Every destination is Yahoo-owned and reached through the yfinance dependency: the quote endpoints plus Yahoo's own cookie/crumb (fc.yahoo.com) and consent (guce.yahoo.com) handshake that yfinance performs to obtain a session. No separate vendor receives the data.
Residual gap
Disclosure is by stated purpose only — the package has no formal privacy/data-flow statement. Note neutrally: yfinance is an unofficial Yahoo scraper, but every host is Yahoo infrastructure.

How we know this — claims by basis

Observed — directly in the capture, reproducible

Inferred — our reasoning over the observation

Classified — our adversarially-reviewed judgment

Method

Installed and run in an isolated container; fed traceable decoy data; all outbound traffic intercepted (TLS broken via own CA, iptables transparent redirect). Endpoints, resolved geo/jurisdiction and frequency are observed facts. Capture self-test passed.

Scope

Compares the tool's declared destinations against what was observed in one sandbox run. Checks transparency / integrity for a cooperative tool, NOT resistance to deliberate evasion. "honest"/"clean" means "observed without deviation within our reach", NOT "guaranteed no hidden egress". Out of scope: exfiltration split/chunked across requests; tool-side encryption of the payload before egress; input/time/state-triggered processing not triggered in the run.


Machine-readable verdict: /verdict/yahoo-finance.json. This page describes observed behaviour and its relation to the tool's own disclosures — it is not a legal judgment. Search context: does mcp-yahoo-finance send data, mcp-yahoo-finance privacy, mcp-yahoo-finance data flow, mcp-yahoo-finance telemetry, where does mcp-yahoo-finance send data, is mcp-yahoo-finance safe, what data does mcp-yahoo-finance collect, how to disable mcp-yahoo-finance telemetry, mcp-yahoo-finance opt out tracking, mcp-yahoo-finance GDPR data residency, mcp-yahoo-finance third-party / jurisdiction.