Finnhub

finnhub.io · Developer / Data APIs modeIntegrated

Last probed 2026-10-07 04:18 UTC · Provisional

Finnhub — Self-serve stock market data API.

72 / 100triageInterrupt Score(range 41–91 · 9 properties unassessed)How much automated use this service interrupts — the badge-driving metric. Unassessed properties are provisionally scored at 50%; evidence-graded successes at 25%.
Custody / RiskUnknown
ConfidenceProvisional

Verdict: Discover, activate, and operate are only partly probed. Manage isn't probed yet.

  1. DiscoverIncomplete
  2. ActivateIncomplete
  3. OperateIncomplete
  4. ManageNot yet probed

Capability parity

Each stage answers one question about what an agent can do unattended. Stages are ordered by the credential-gateway dependency: Activate issues the keys that unlock Operate and Manage. A row marked “Not yet probed” means no probe has tried that capability yet — a different ledger from the “unassessed” properties under Findings, where no probe tier capable of catching that interrupt has run.

Discover

Can an agent find and read it, no account?

Incomplete

Assessment incomplete - not yet probed: Read what it does and how to use it; Read pricing & limits without login.

  • Be found by a retrieval agentEasy

    Retrieval access present.

    Evidence
    Path tried
    robots.txt / sitemap / discovery headers
    Where it stalled
    completed
    Evidence tier
    Tier 1 (unauth probe)
    Verification
    Evidence-only — graded from passive signal, not live-verified.
    Backing checks
    retrieval_bot_access
  • Read what it does and how to use itNot yet probed

    No machine-readable docs found - llms.txt, AGENTS.md, and schema.org checks all failed or are absent.

  • Read pricing & limits without loginNot yet probed

    Public pricing was not confirmed - the page was absent, gated, or unreadable.

Activate

Can an agent sign up and walk away with the keys it needs?

Incomplete

Assessment incomplete - not yet probed: Obtain an API / MCP access credential; Obtain a management / admin key.

  • Create an account self-serveEasy

    Signup inspected — no blocker found.

    Evidence
    Path tried
    signup flow
    Where it stalled
    completed
    Evidence tier
    Tier 1 (unauth probe)
    Verification
    Evidence-only — graded from passive signal, not live-verified.
  • Obtain an API / MCP access credentialNot yet probed

    No self-serve credential signal detected - key issuance not yet probed.

  • Obtain a management / admin keyNot yet probed

    No scoped or administrative key path was confirmed after activation.

  • Accept the terms without a bot-banEasy

    No bot-prohibition signal found.

    Evidence
    Path tried
    ToS / policy scan
    Where it stalled
    completed
    Evidence tier
    Tier 0 (passive scan)
    Verification
    Evidence-only — graded from passive signal, not live-verified.

Operate

Can an agent do the service's actual jobs — call, transact, pay?

Incomplete

Assessment incomplete - not yet probed: Call the primary service over MCP / API.

  • Call the primary service over MCP / APINot yet probed

    No machine interface found by passive checks, and no live Tier-2 call attempted.

  • Complete a transaction / checkoutNot applicable

    Integrated tool — the API call is the transaction, no separate checkout.

  • Pay via an agent rail (x402 / ACP / AP2)Easy

    Agent-payment metadata present.

    Evidence
    Path tried
    payment protocol / oauth metadata
    Where it stalled
    completed
    Evidence tier
    Tier 1 (unauth probe)
    Verification
    Evidence-only — graded from passive signal, not live-verified.
    Backing checks
    oauth_metadata

Manage

Can an agent administer the account and provision resources?

Not yet probed

No probe has attempted this stage yet: Provision / scale / tear down a service; Change account details / set budget / rotate keys; View usage & billing; Cancel / export / delete (offboard).

  • Provision / scale / tear down a serviceNot yet probed

    Not probed - provisioning is not part of the probe suite yet.

  • Change account details / set budget / rotate keysNot yet probed

    Not probed - account admin is not part of the probe suite yet.

  • View usage & billingNot yet probed

    Authenticated usage and billing access was not confirmed.

  • Cancel / export / delete (offboard)Not yet probed

    No self-serve cancellation, export, or deletion path was confirmed.

Interrupt tier: Moderate-Interrupt — derived from 1 finding; interrupt score 72 / 100 — the badge-driving metric. (range 41–91 · 9 unassessed)

Every tool starts at 100. Each interrupt found subtracts a penalty of base weight × timing × hardness × evidence — the multiplier values below come from the same rubric tables the score is computed with. New snapshots also provisionally subtract 50% of the full worst-case tax for each unassessed property and 25% for evidence-graded successes not live-verified by Tier 2.

Property coverage

A check only counts as clean when a probe tier capable of detecting that interrupt actually ran and found nothing. Not tested ≠ clean.

PropertyStageStateEvidenceRequired
No Machine Interfaceoperate failedActive finding — itemized in the penalty matrix below. Tier 1 assesses this property.yes
Mandatory phone verification callactivate unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
Mailed physical code (postal)activate unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
“Contact sales” wall (no self-serve path)activate unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
Manual approval queueactivate unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
ToS clause banning automated/bot accessdiscover unassessedTier 0 (passive scan) ran but did not gather enough evidence to claim clean. Tier 0 assesses this property.no
Rate-limit-triggered manual reviewmanage unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
One-time account / payment-method provisioningmanage unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
Identity / KYC verificationactivate unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
Crypto wallet / key-custody setupoperate unassessedNo probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property.no
CAPTCHA / bot-challengeactivate successNone found — checked at Tier 0 (passive scan) + Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 0 assesses this property.no
Email OTP verificationactivate successNone found — checked at Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 1 assesses this property.no
SMS / phone OTP verificationactivate successNone found — checked at Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 1 assesses this property.no
Mandatory redirect to vendor’s own siteoperate successNone found — checked at Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 1 assesses this property.no
SSO-only signup, no API-key issuanceactivate successNone found — checked at Tier 1 (unauth probe) (evidence-graded; not yet live-verified by a Tier 2 probe) Tier 1 assesses this property.no
Interrupt foundBase weight× Timing× Hardness× Evidence= Penalty
Starting score100
No Machine InterfaceoperateNeither an MCP server nor a usable API machine interface was found after Tier 0 and Tier 1 candidate checks.9×1one-time setup×2.5hard×0.8Tier 1 (unauth probe)inferred−9
Total penalty−9
Full unknown tax 203 — capped at 25 (point score uses 50% of the capped value)−203
Evidence-graded tax (successes not live-verified by a Tier 2 probe) 35.4 — capped at 25 (point score uses 25% of the capped value)−35.4
Raw score = 100 − 9 = 91
Point score = 91 − 50% × 25 − 25% × 25 = 72.3 → 72
72

inferred = detected from passive signals, not a directly observed interrupt — penalized at half weight

How we scored this

Machine-readability checks 34 / 100

Four check groups, equal weight: machine interfaces, browsing efficiency, element discoverability, and discovery/agent access. Each check carries an evidence grade (proven / plausible / emerging) — an honesty label that never weights the score. What these mean →

  • Unauthenticated API error is structured JSONplausibleNot provided
  • Unauthenticated API returns auth guidance (401/403 or documented)plausibleNot provided
  • API exposes rate-limit headersplausibleNot provided
  • API key obtainable without human interactionplausibleNot checked — no OpenAPI spec found; self-serve API-key path indeterminate from Tier 1
  • llms.txtemergingNot provided
  • llms-full.txtemergingNot provided
  • AGENTS.mdemergingNot provided
  • A2A agent cardemergingNot provided
  • MCP server (well-known or official registry)plausibleNot provided
  • OpenAPI/Swagger specplausibleNot provided
  • Rate-limit headersplausibleNot provided
  • Structured JSON error responsesplausibleNot provided
  • OAuth authorization-server metadata (RFC 8414)provenFound — finnhub.io/.well-known/oauth-authorization-server
  • API catalog (RFC 9727) (emerging)emergingNot provided
  • Agent-payment discovery (x402 / UCP) (emerging)emergingNot provided
  • Lean HTML transfer sizeplausible0 KB raw HTML (threshold 488 KB)
  • Manageable DOM sizeplausible389 DOM nodes (threshold 1500)
  • High content-to-markup densityplausible20.1% text/HTML (34 chars in 0 KB, threshold 2%)
  • Content readable without JS executionprovenNot provided
  • Clean-content alternate (RSS/Atom/feed/markdown)plausibleNot provided
  • Serves markdown on Accept: text/markdownplausibleNot provided
  • Interactive elements are semanticplausible72/72 semantic (100%); 0 div/span click targets
  • Form fields have accessible namesplausibleNot checked — no form fields on the representative page
  • Inputs carry autocomplete hintsplausibleNot checked — no autocomplete-eligible inputs
  • WebMCP tools (modelContext API)emergingNot provided
  • AI retrieval/search fetchers allowed (robots.txt)provenno retrieval-fetcher blocks in robots.txt
  • Sitemap (indexability)plausibleNot provided
  • schema.org JSON-LD in raw HTMLplausibleNot provided
  • Content-Signal directives (robots.txt)emergingNot provided
  • Web Bot Auth key directory (emerging)emergingNot provided
  • Discovery Link headers on homepage (emerging)emergingNot provided
  • Pricing visible without loginNot checked — homepage returned HTTP 429
  • robots.txt AI-crawler accessplausibleno AI-crawler blocks in robots.txt

Evidence & history

Last probed 2026-10-07 04:18 UTC. The raw JSON is the archival record.

DateScoreBadgeRubric version
2026-10-07 04:18 UTC72Moderate-Interrupt (current)rubric v2026.4
2026-10-07 04:18 UTC72Moderate-Interruptrubric v2026.4
2026-09-07 01:51 UTC63Moderate-Interruptrubric v2026.4
2026-09-07 01:46 UTC63Moderate-Interruptrubric v2026.4
2026-08-09 23:47 UTC63Moderate-Interruptrubric v2026.4
2026-08-09 23:47 UTC63Moderate-Interruptrubric v2026.4
2026-08-09 17:13 UTC63Moderate-Interruptrubric v2026.4
2026-08-09 05:24 UTC70Moderate-Interruptrubric v2026.3
2026-08-09 05:24 UTC70Moderate-Interruptrubric v2026.3
2026-08-09 05:16 UTC70Moderate-Interruptrubric v2026.3
2026-08-09 05:16 UTC70Moderate-Interruptrubric v2026.3
2026-08-09 05:13 UTC70Moderate-Interruptrubric v2026.3
2026-08-09 05:13 UTC88Low-Interruptrubric v2026.3
2026-08-09 03:14 UTC88Low-Interruptrubric v2026.3
2026-08-09 01:48 UTC88Low-Interruptrubric v2026.2
2026-08-09 01:45 UTC88Low-Interruptrubric v2026.2
2026-07-10 07:16 UTC100Low-Interruptrubric v2026.1

Alternatives in Developer / Data APIs

Other Developer / Data APIs tools in the same mode (integrated), ranked by Overall LLM-Friendliness (the mean of Interrupt Score and Machine-Readability) — comparable to this listing because they share its usage mode.

Embed this rating

Copy this snippet to display your Interrupt Index seal on your site — the seal image and link stay in sync with your latest probe automatically. Pick the variant that matches your site’s theme.

Light (default)

<a href="https://interruptindex.com/tools/finnhub"><img src="https://interruptindex.com/badge/finnhub.svg" alt="Finnhub — Interrupt Index agent-readiness rating" height="64"></a>

Dark

<a href="https://interruptindex.com/tools/finnhub"><img src="https://interruptindex.com/badge/finnhub.svg?theme=dark" alt="Finnhub — Interrupt Index agent-readiness rating" height="64"></a>