Finnhub MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Quotes, company profiles, fundamentals, earnings and IPO calendars, plus market and company news.
15 tools: 4 do something that can't be undone, 8 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone4Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http finnhub https://finnhub.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "finnhub_company_news" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
The server marks "finnhub_insider_transactions" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
The server marks "finnhub_earnings_calendar" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
The server marks "finnhub_ipo_calendar" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Can't be undone 4Claude Code: ask
finnhub_company_newsLatest company news for a symbol over a date range (up to 1 year back).1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "finnhub_company_news" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Latest company news for a symbol over a date range (up to 1 year back). Finnhub REST: GET /company-news.
Annotations the server declares
- title: Company news
- readOnlyHint: true
finnhub_earnings_calendarUpcoming and historical earnings release calendar, optionally filtered by date range and/or symbol.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "finnhub_earnings_calendar" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Upcoming and historical earnings release calendar, optionally filtered by date range and/or symbol. Finnhub REST: GET /calendar/earnings.
Annotations the server declares
- title: Earnings calendar
- readOnlyHint: true
finnhub_insider_transactionsInsider transactions (Form 3/4/5 filings) for a company, optionally within a date range.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "finnhub_insider_transactions" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Insider transactions (Form 3/4/5 filings) for a company, optionally within a date range. Finnhub REST: GET /stock/insider-transactions.
Annotations the server declares
- title: Insider transactions
- readOnlyHint: true
finnhub_ipo_calendarIPO calendar for a date range — upcoming and recent initial public offerings.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "finnhub_ipo_calendar" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it IPO calendar for a date range — upcoming and recent initial public offerings. Finnhub REST: GET /calendar/ipo.
Annotations the server declares
- title: IPO calendar
- readOnlyHint: true
Changes things 8Claude Code: ask
finnhub_basic_financialsKey financial metrics for a company — valuation, margins, growth, per-share and 52-week ratios.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Key financial metrics for a company — valuation, margins, growth, per-share and 52-week ratios. Finnhub REST: GET /stock/metric.
Annotations the server declares
- title: Basic financials
- readOnlyHint: true
finnhub_company_profileGeneral company profile — name, country, currency, exchange, industry, market cap, share outstanding, IPO date, logo and more.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it General company profile — name, country, currency, exchange, industry, market cap, share outstanding, IPO date, logo and more. Provide at least one of `symbol`, `isin` or `cusip`. Finnhub REST: GET /stock/profile2.
Annotations the server declares
- title: Company profile
- readOnlyHint: true
finnhub_earnings_surprisesHistorical quarterly EPS surprises — actual vs.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Historical quarterly EPS surprises — actual vs. estimated EPS by period. Finnhub REST: GET /stock/earnings.
Annotations the server declares
- title: Earnings surprises
- readOnlyHint: true
finnhub_market_newsGeneral latest market news by category.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it General latest market news by category. Finnhub REST: GET /news.
Annotations the server declares
- title: Market news
- readOnlyHint: true
finnhub_peersPeer companies for a symbol (same country and GICS sub-industry).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Peer companies for a symbol (same country and GICS sub-industry). Finnhub REST: GET /stock/peers.
Annotations the server declares
- title: Company peers
- readOnlyHint: true
finnhub_price_targetAnalyst price targets for a symbol — high / low / median / mean target.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Analyst price targets for a symbol — high / low / median / mean target. Note: this is a premium-tier Finnhub endpoint (may return 403 on the free plan). Finnhub REST: GET /stock/price-target.
Annotations the server declares
- title: Price target
- readOnlyHint: true
finnhub_quoteReal-time quote for a stock — current price (c), change (d), percent change (dp), high (h), low (l), open (o), previous close (pc) and unix timestamp (t).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Real-time quote for a stock — current price (c), change (d), percent change (dp), high (h), low (l), open (o), previous close (pc) and unix timestamp (t). Finnhub REST: GET /quote.
Annotations the server declares
- title: Real-time quote
- readOnlyHint: true
finnhub_recommendation_trendsAnalyst recommendation trends over time — counts of strong buy / buy / hold / sell / strong sell by period.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Analyst recommendation trends over time — counts of strong buy / buy / hold / sell / strong sell by period. Finnhub REST: GET /stock/recommendation.
Annotations the server declares
- title: Recommendation trends
- readOnlyHint: true
Only reads 3Claude Code: allow
finnhub_market_statusCurrent market open/closed status and session for an exchange.No findings
Why it is in this group
- The name "finnhub_market_status" says "status": a word for reading.
Description, as the server wrote it Current market open/closed status and session for an exchange. Finnhub REST: GET /stock/market-status.
Annotations the server declares
- title: Market status
- readOnlyHint: true
finnhub_stock_symbolsList all symbols supported on an exchange.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it List all symbols supported on an exchange. Finnhub REST: GET /stock/symbol.
Annotations the server declares
- title: Stock symbols
- readOnlyHint: true
finnhub_symbol_searchSearch for stock symbols by name or ticker — returns best-matching symbols with descriptions and types.No findings
Why it is in this group
- The name "finnhub_symbol_search" says "search": a word for reading.
Description, as the server wrote it Search for stock symbols by name or ticker — returns best-matching symbols with descriptions and types. Finnhub REST: GET /search.
Annotations the server declares
- title: Symbol search
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http finnhub https://finnhub.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__finnhub__finnhub_symbol_search",
"mcp__finnhub__finnhub_stock_symbols",
"mcp__finnhub__finnhub_market_status"
],
"ask": [
"mcp__finnhub__finnhub_quote",
"mcp__finnhub__finnhub_company_profile",
"mcp__finnhub__finnhub_company_news",
"mcp__finnhub__finnhub_market_news",
"mcp__finnhub__finnhub_basic_financials",
"mcp__finnhub__finnhub_recommendation_trends",
"mcp__finnhub__finnhub_earnings_surprises",
"mcp__finnhub__finnhub_price_target",
"mcp__finnhub__finnhub_peers",
"mcp__finnhub__finnhub_insider_transactions",
"mcp__finnhub__finnhub_earnings_calendar",
"mcp__finnhub__finnhub_ipo_calendar"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as finnhub. Review it before you use it.