Finnhub
finnhub.io · Developer / Data APIs modeIntegrated
Last probed 2026-10-07 04:18 UTC · Provisional
Finnhub — Self-serve stock market data API.
Verdict: Discover, activate, and operate are only partly probed. Manage isn't probed yet.
- DiscoverIncomplete
- ActivateIncomplete
- OperateIncomplete
- 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?
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?
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?
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?
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.
Findings
How scoring works →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.
| Property | Stage | State | Evidence | Required |
|---|---|---|---|---|
| No Machine Interface | operate | failed | Active finding — itemized in the penalty matrix below. Tier 1 assesses this property. | yes |
| Mandatory phone verification call | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Mailed physical code (postal) | activate | unassessed | No 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 | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Manual approval queue | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| ToS clause banning automated/bot access | discover | unassessed | Tier 0 (passive scan) ran but did not gather enough evidence to claim clean. Tier 0 assesses this property. | no |
| Rate-limit-triggered manual review | manage | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| One-time account / payment-method provisioning | manage | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Identity / KYC verification | activate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| Crypto wallet / key-custody setup | operate | unassessed | No probe tier that can detect this has run yet — unknown, not clean. Tier 2 assesses this property. | no |
| CAPTCHA / bot-challenge | activate | success | None 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 verification | activate | success | None 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 verification | activate | success | None 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 site | operate | success | None 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 issuance | activate | success | None 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 found | Base weight | × Timing | × Hardness | × Evidence | = Penalty |
|---|---|---|---|---|---|
| Starting score | 100 | ||||
| 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
- Confidence: Provisional (0.55) — Based on Tier 0/1 evidence only (passive checks, no live transaction attempt) — treat the number as a triage signal, not a verified outcome.
- Machine-Readability sub-score: 34 / 100 (a separate integration-ease signal — it never enters the Interrupt Score or badge).
- Some capability stages are not yet probed — shown plainly in the spine above, never as a pass.
- Rubric, tiers, confidence model, and badge thresholds →
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.
| Date | Score | Badge | Rubric version |
|---|---|---|---|
| 2026-10-07 04:18 UTC | 72 | Moderate-Interrupt (current) | rubric v2026.4 |
| 2026-10-07 04:18 UTC | 72 | Moderate-Interrupt | rubric v2026.4 |
| 2026-09-07 01:51 UTC | 63 | Moderate-Interrupt | rubric v2026.4 |
| 2026-09-07 01:46 UTC | 63 | Moderate-Interrupt | rubric v2026.4 |
| 2026-08-09 23:47 UTC | 63 | Moderate-Interrupt | rubric v2026.4 |
| 2026-08-09 23:47 UTC | 63 | Moderate-Interrupt | rubric v2026.4 |
| 2026-08-09 17:13 UTC | 63 | Moderate-Interrupt | rubric v2026.4 |
| 2026-08-09 05:24 UTC | 70 | Moderate-Interrupt | rubric v2026.3 |
| 2026-08-09 05:24 UTC | 70 | Moderate-Interrupt | rubric v2026.3 |
| 2026-08-09 05:16 UTC | 70 | Moderate-Interrupt | rubric v2026.3 |
| 2026-08-09 05:16 UTC | 70 | Moderate-Interrupt | rubric v2026.3 |
| 2026-08-09 05:13 UTC | 70 | Moderate-Interrupt | rubric v2026.3 |
| 2026-08-09 05:13 UTC | 88 | Low-Interrupt | rubric v2026.3 |
| 2026-08-09 03:14 UTC | 88 | Low-Interrupt | rubric v2026.3 |
| 2026-08-09 01:48 UTC | 88 | Low-Interrupt | rubric v2026.2 |
| 2026-08-09 01:45 UTC | 88 | Low-Interrupt | rubric v2026.2 |
| 2026-07-10 07:16 UTC | 100 | Low-Interrupt | rubric 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.
- 84triageOverallOpenWeatherMap
openweathermap.org · Developer / Data APIsMR88 - 74triageOverallupstash.com
upstash.com · Developer / Data APIsMR67 - 72triageOverallsupabase.com
supabase.com · Developer / Data APIsMR63 - 71triageOveralltavily.com
tavily.com · Developer / Data APIsMR62 - 70Overallclerk.com
clerk.com · Developer / Data APIsMR59