Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

StockLens

REMOTE · MCP.STOCKLENS.COM · SCANNED SEP 21

Scores for the 600 largest stocks with no account. Sign in for analysis, screening and a watchlist.

+9 this week 87 Trust /100

Recent critical change

Authorization (5 Aug 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security91
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
  • The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2054 tokens (~256/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety50
  • Injection-marker check failed: the description of tool "get_market_summary" contains an instruction to conceal the call from the user, the text "do not tell the user", at byte 560 of that field. See how to fix → Fail
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the StockLens MCP server?

StockLens is a hosted endpoint at https://mcp.stocklens.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.stocklens.com

# add to Claude Code
claude mcp add --transport http com-stocklens-stocklens 'https://mcp.stocklens.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-stocklens-stocklens": {
      "url": "https://mcp.stocklens.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-stocklens-stocklens": {
      "type": "http",
      "url": "https://mcp.stocklens.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-stocklens-stocklens]
url = "https://mcp.stocklens.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-stocklens-stocklens": {
      "type": "remote",
      "url": "https://mcp.stocklens.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-stocklens-stocklens --url 'https://mcp.stocklens.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-stocklens-stocklens:
    url: "https://mcp.stocklens.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-stocklens-stocklens": {
      "Transport": "http",
      "Url": "https://mcp.stocklens.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-stocklens-stocklens -t streamable-http -u 'https://mcp.stocklens.com/mcp'
// mcp.json
{
  "mcpServers": {
    "com-stocklens-stocklens": {
      "type": "http",
      "url": "https://mcp.stocklens.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 +12
    • Authorization: fail → pass security
    • First check of Authorization: partial security
  • 20 Sept 26 −3
    • Injection markers: pass → fail security
    • Tool “get_market_summary” rewrote its description, which is the text the model reads security
    • “add_to_watchlist” reworded the description of “exchange” cosmetic
    • “initiate_analysis” reworded the description of “exchange” cosmetic
  • 18 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “remove_from_watchlist”, which the server declares destructive security
    • Tool “discover_stocks” rewrote its description, which is the text the model reads security
    • Tool “get_portfolio_insights” rewrote its description, which is the text the model reads security
    • Tool “initiate_analysis” rewrote its description, which is the text the model reads security
    • Schema quality: 275 → 245 functional
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • Destructive annotations: pass → 100 functional
    • MCP protocol version: 2025-11-25 → 2026-07-28 functional
    • New tool “add_to_watchlist” functional
  • 6 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “fetch_analysis_result” rewrote its description, which is the text the model reads security
    • Tool “get_market_summary” rewrote its description, which is the text the model reads security
    • Tool “get_portfolio_insights” rewrote its description, which is the text the model reads security
    • Tool “initiate_analysis” rewrote its description, which is the text the model reads security
    • Schema quality: 197 → 275 functional
    • New tool “discover_stocks” functional
  • 4 Sept 26 0
    • Stability: 0.97 → pass security
  • 3 Sept 26 +1
    • Stability: fail → 0.97 functional
  • 26 Aug 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 84 to 88.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Probed https://mcp.stocklens.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.stocklens.com CN=GeoTrust TLS RSA CA G1,OU=www.digicert.com,O=DigiCert Inc,C=US 23 Jul 2026 23 Jan 2027 RSA 2048 SHA256-RSA 31b868b39b29d80ff3c3b0517082a07
SANs: mcp.stocklens.com
CN=GeoTrust TLS RSA CA G1,OU=www.digicert.com,O=DigiCert Inc,C=US (CA) CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US 2 Nov 2017 2 Nov 2027 RSA 2048 SHA256-RSA d07782a133fc6f9a57296e131ffd179
CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US (CA) CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US 1 Aug 2013 15 Jan 2038 RSA 2048 SHA256-RSA 33af1e6a711a9a0bb2864b11d09fae5

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of mcp.stocklens.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
stocklens.com. present 2371 13 Verified
mcp.stocklens.com. Verified address RRset verified with the apex keys
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer realm="mcp.stocklens.com", resource_metadata="https://mcp.stocklens.com/.well-known/oauth-protected-resource", scope="openid profile email"

Bearer realm="mcp.stocklens.com", resource_metadata="https://mcp.stocklens.com/.well-known/oauth-protected-resource", scope="openid profile email"

Protected resource metadata

Document https://mcp.stocklens.com/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.stocklens.com/mcp
Authorisation server https://mcp.stocklens.com

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.stocklens.com/mcp Verified 200
http (plaintext) http://mcp.stocklens.com/mcp HTTPS enforced 301 https://mcp.stocklens.com/mcp
MCP tools · 8 exposed · ~1,946 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_to_watchlist ~153

Add one stock ticker to the authenticated user's StockLens watchlist so it is tracked and scored going forward. Free tracks up to 10 stocks; Pro and Max plans track an unlimited number of stocks. If the watchlist is already at its plan capacity, the result states the limit and that plan changes happen at stocklens.com after sign-in. Does NOT execute trades, does NOT record a holding or transaction, and does NOT accept more than one ticker per call.

NameTypeReqDescription
exchangestringExchange code (e.g. NASDAQ). Optional - resolved automatically if omitted.
tickerstringyesStock ticker symbol to add to the watchlist (e.g. AAPL). Exactly one ticker per call.
NameTypeReqDescription
company_namenull|string
exchangestringyes
plan_limitnull|integeryes
scopestringyes
tickerstringyes
total_holdingsintegeryes

No examples provided.

discover_stocks ~464

Screen the StockLens nightly-analyzed universe by macro region, exchange, sector, industry, market-cap band, and trading volume, then sort by any of the 6 StockLens scores or a non-score signal, returning the top or bottom N matches. This is the only StockLens tool that ranks or compares across multiple stocks — use it for any "top N", "best/worst", "highest/lowest scored", or filtered market-wide request; never fabricate such a list from get_market_summary or general knowledge. Free accounts can browse by market cap, volume, popularity, or ticker (StockLens scores hidden) with reach capped at 100 matches; sorting by a StockLens score returns a locked result naming zero stocks, with a plan message to relay verbatim. Pro and Max plans include full score sort with precise scores; Pro reach is capped at 5,000 matches, Max is unlimited. Does NOT execute trades, does NOT give personalized recommendations, and does NOT return more stocks than the structured result actually contains.

NameTypeReqDescription
directionstringtop = highest first, bottom = lowest first. Default top.
exchange_innull|arrayRestrict to these exchanges. Omitted = no restriction.
industry_innull|arrayRestrict to these GICS industries. Omitted = no restriction.
limitintegerNumber of matches to return (the N in top/bottom N), 1-100. Default 10.
macro_innull|arrayRestrict to these macro regions. Omitted = no restriction.
market_cap_bandstringRestrict to this market-cap band. Omitted = no cap restriction.
pageinteger0-based page of results, 0-500. Default 0.
search_textstringFree-text company name/ticker search, up to 80 characters.
sector_innull|arrayRestrict to these GICS sectors. Omitted = no restriction.
sort_bystringOne of the 6 StockLens scores or a non-score signal to sort by. Default composite_score.
volume_floorstringMinimum average trading volume. Omitted = no floor.
NameTypeReqDescription
access_tierstringyes
as_of_datenull|string
config_contextobjectyes
data_sourcestringyes
effective_directionstringyes
effective_sortstringyes
hard_lockedbooleanyes
quota_remaining_todaynull|integer
reach_capped_atnull|integer
rowsnull|arrayyes
rows_returnedintegeryes
scopestringyes
scores_lockedbooleanyes
total_matchesnull|integer
upgrade_messagenull|string

No examples provided.

fetch_analysis_result ~159

Fetch the result or progress of a previously initiated StockLens analysis. Returns status (in_progress/complete/failed), progress percentage, and full result when complete. Each call returns the current state once; it does not wait for completion. While status is in_progress, retry_after_seconds is the earliest sensible time to check again — check again only if the user asks to continue. Complete results include composite score, domain breakdowns, key insights, and may include a Plus Analysis AI narrative. Does NOT start a new analysis and does NOT rank or screen stocks — call discover_stocks for a multi-stock list. Does NOT accept a ticker; only the analysis_id from initiate_analysis.

NameTypeReqDescription
analysis_idstringyesThe analysis_id returned by initiate_analysis
NameTypeReqDescription
analysis_idstringyes
error_messagenull|string
progress_pctnull|integer
resultnull|object
retry_after_secondsnull|integer
scopestringyes
statusstringyes

No examples provided.

get_market_summary ~279

Retrieve the latest StockLens composite analysis summary for a stock ticker. Returns composite score (0-100), an overall rating, per-domain scores and grades, and key strengths and challenges. No account is required for the 600 largest companies StockLens scores. A signed-in caller reaches further (Free the same 600, Pro the top 5,000, Max the whole scored universe) and always reads anything on their own watchlist, however deep it ranks. Outside that surface the call is refused with TIER_INSUFFICIENT, which is NOT a statement that the stock is unscored: do not tell the user StockLens has no analysis for it. Data is derived from the most recent nightly analysis run. Use this to quickly assess a stock before deciding whether to run a full analysis. Does NOT accept more than one ticker and does NOT rank, sort, filter, or list multiple stocks — for any "top N", "best/worst", "highest/lowest scored", or filtered multi-stock request, call discover_stocks instead; never assemble a ranking by calling this tool repeatedly and inventing an order.

NameTypeReqDescription
exchangestringExchange code (e.g. NASDAQ NYSE). Optional - resolved automatically if omitted.
tickerstringyesStock ticker symbol (e.g. AAPL MSFT TSLA)
NameTypeReqDescription
analysis_datestringyes
company_namestringyes
composite_scorenumberyes
config_contextobjectyes
data_sourcestringyes
domain_scoresnull|arrayyes
exchangestringyes
industrystringyes
key_challengesnull|array
key_strengthsnull|array
ratingnull|stringyes
scopestringyes
sectorstringyes
tickerstringyes
watchlistnull|object
watchlist_offeredboolean

No examples provided.

get_portfolio_insights ~123

Retrieve StockLens analysis summaries for the authenticated user's watchlist. Returns available composite scores and grades for watchlisted stocks; either value may be absent when no completed score exists. Returns the full watchlist up to the plan's capacity — Free tracks up to 10 stocks; Pro and Max plans track an unlimited number. Use this to give users an overview of their portfolio's analytical health. Does NOT accept a ticker or filter arguments and does NOT rank or screen stocks outside the user's own watchlist — call discover_stocks for a market-wide ranked or filtered list.

Input schema present but exposes no named parameters.

NameTypeReqDescription
aggregate_signalnull|string
scopestringyes
tier_limitedbooleanyes
total_holdingsintegeryes
watchlistnull|arrayyes

No examples provided.

initiate_analysis ~615

Initiate a full StockLens AI analysis for a specific stock. Starting a new run may consume one Analysis credit (LENS_AI) or one Plus Analysis credit (LENS_AI_PLUS, which may add AI narratives). Returns an analysis_id immediately — completion is asynchronous. Retrieve status or results with a separate fetch_analysis_result call when the user asks for them. A recent matching analysis may be reused; the receipt explicitly reports new_run_started and reused_existing without claiming an asynchronous credit charge has completed. Concurrent identical initiations receive retry guidance. Free supports the standard Analysis only; Pro and Max plans include Plus Analysis. Does NOT screen, rank, or compare across multiple stocks — call discover_stocks for any multi-stock or "top N" request. Does NOT execute trades, place orders, or move funds. Does NOT accept more than one ticker per call.

NameTypeReqDescription
analysis_emphasisstringOptional. RISK_EMPHASIS | BALANCED | FUNDAMENTAL_GROWTH_EMPHASIS. Must agree with the emphasis implied by risk_tolerance (low->RISK_EMPHASIS, medium->BALANCED, high->FUNDAMENTAL_GROWTH_EMPHASIS); a m…
depthstringAnalysis depth: standard or plus. Standard consumes an Analysis credit (LENS_AI). Plus consumes a Plus Analysis credit (LENS_AI_PLUS) and may add AI narratives. Default standard.
evidence_history_familystringOptional. SHORT_HISTORY | MEDIUM_HISTORY | LONG_HISTORY. Must agree with the family implied by time_range (short_2_wk->SHORT_HISTORY, medium_1_mo/medium_2_mo->MEDIUM_HISTORY, long_1_yr/long_2_yr->LON…
exchangestringExchange code (e.g. NASDAQ). Optional - resolved automatically if omitted.
risk_tolerancestringAnalysis focus — reweights how much the analysis weighs downside/quality risk vs. growth/fundamentals. NOT a personal risk or suitability assessment, and it never changes the company's underlying fac…
tickerstringyesStock ticker symbol (e.g. AAPL)
time_rangestringTime horizon — shapes which signals the analysis weighs most (shorter horizons favor price action, momentum and news; longer favor fundamentals and quality). Not a price forecast. One window per cali…
NameTypeReqDescription
analysis_idstringyes
credit_typestringyes
depthstringyes
estimated_secondsintegeryes
new_run_startedbooleanyes
reused_existingbooleanyes
scopestringyes
statusstringyes

No examples provided.

ping ~17

Health check — returns pong to verify MCP connectivity

Input schema present but exposes no named parameters.

NameTypeReqDescription
statusstringyesConnectivity status — "ok" when the MCP server is reachable

No examples provided.

remove_from_watchlist ~136

Remove one stock ticker from the authenticated user's StockLens watchlist. Does NOT execute trades and does NOT delete a recorded holding or its transactions — a watchlist item with recorded transactions cannot be removed through this tool. Does NOT accept more than one ticker per call.

NameTypeReqDescription
exchangestringExchange code (e.g. NASDAQ). Optional — when omitted, the ticker is matched against your own watchlist; if it is tracked on more than one exchange you will be asked which one.
tickerstringyesStock ticker symbol to remove from the watchlist (e.g. AAPL). Exactly one ticker per call.
NameTypeReqDescription
exchangestringyes
removedbooleanyes
scopestringyes
tickerstringyes
total_holdingsintegeryes

No examples provided.

Common questions

What is the StockLens MCP server?

StockLens is an MCP server listed in the public MCP registry as com.stocklens/stocklens. Scores for the 600 largest stocks with no account. Sign in for analysis, screening and a watchlist. This page covers its hosted endpoint (https://mcp.stocklens.com/mcp).

Is the StockLens MCP server safe to use?

StockLens scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the StockLens MCP server expose?

StockLens exposes 8 tools: add_to_watchlist, discover_stocks, fetch_analysis_result, get_market_summary, get_portfolio_insights, and 3 more. Their descriptions and schemas cost roughly 1,946 tokens of context every time the server is loaded.

Does the StockLens MCP server require authentication?

Yes. StockLens asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the StockLens MCP server still maintained?

StockLens is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.