Qanvo Stock Screener
REMOTE · QANVO.APP
Screen global stocks, options, ETFs and crypto in plain English, and set email alerts on any screen.
Available components
Last scanned (3 hours ago)
Scores higher than 79% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
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 Security89
- 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 check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- 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
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3530 tokens (~113/item across 31 items; 30 tools + 1 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 Management17
- Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage85
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 56% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
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.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Nov 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “my_option_positions” rewrote its description, which is the text the model reads security
- Schema quality: 2801 → 3530 ▼ functional
- Tool coverage: 47% → 56% ▲ functional
- New tool “my_closed_option_trades” functional
- New tool “my_option_expirations” functional
- New tool “my_option_orders” functional
- New tool “my_option_payoff” functional
- New tool “my_option_premium” functional
- New tool “option_chain” functional
- “my_option_positions” added an optional parameter “account” cosmetic
- “my_option_positions” added an optional parameter “symbol” cosmetic
- 3 Nov 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: 2238 → 2801 ▼ functional
- Tool coverage: 40% → 47% ▲ functional
- New tool “my_option_positions” functional
- New tool “my_orders” functional
- New tool “my_portfolio” functional
- New tool “my_transactions” functional
- New tool “refresh_portfolio” functional
- 1 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “create_alert” rewrote its description, which is the text the model reads security
- Tool “describe_metrics” rewrote its description, which is the text the model reads security
- Tool “market_query” rewrote its description, which is the text the model reads security
- Tool coverage: 100% → 40% ▼ functional
- Schema quality: 168 → 111 ▲ functional
- Stability: unverified → 0.03 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- The server now declares the “resources” capability functional
- First check of Capabilities: pass functional
- Schema quality: excellent → good functional
- New resource “qanvo-screen” functional
- Server version: 1.1 → 1.2 functional
- New tool “qanvo_app_alert_create” functional
- New tool “qanvo_app_alert_options” functional
- New tool “qanvo_app_alert_update” functional
- New tool “qanvo_app_alerts” functional
- New tool “qanvo_app_catalog” functional
- New tool “qanvo_app_columns” functional
- New tool “qanvo_app_result” functional
- New tool “qanvo_app_security” functional
- New tool “qanvo_app_share” functional
- New tool “qanvo_app_share_email” functional
- New tool “qanvo_app_sparklines” functional
- New tool “qanvo_app_thresholds” functional
- 31 Oct 26 +40
- Transport: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Authorization: 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. security
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 100 functional
- First check of Tool coverage: 100 functional
- 28 Oct 26 0
- First check of Authorization: partial security
- 27 Oct 26 36
First indexed and scored.
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 5 Nov 2026 · Probed https://qanvo.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=qanvo.app | CN=GeoTrust TLS RSA CA G1,OU=www.digicert.com,O=DigiCert Inc,C=US | 4 Nov 2026 | 4 May 2027 | RSA 2048 | SHA256-RSA | a75e1a6001bd57adcb5355ecfd7f34b |
| SANs: qanvo.app | ||||||
| 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 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of qanvo.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| qanvo.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
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 resource_metadata="https://qanvo.app/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://qanvo.app/.well-known/oauth-protected-resource" Protected resource metadata
| Document | https://qanvo.app/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://qanvo.app/mcp |
| Authorisation server | https://login.qanvo.app/ |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://qanvo.app/mcp | Verified | 200 | |
| http (plaintext) | http://qanvo.app/mcp | HTTPS enforced | 301 | https://qanvo.app/mcp |
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 →
create_alert Create an email alert ~339
Turn a screen into an email alert. Give a plain-English screen in `prompt` (it runs like market_query and uses the same credits), or the query_id and session_id of an earlier result. Qanvo then re-runs that screen's saved query on a fixed schedule (no AI, no credits) and emails the account's address when stocks enter or leave the results, or every time. Schedules follow the market's exchange hours: "after_close" (once that day's prices are in: usually that evening for US stocks, early next morning for other markets), "pre_open" (an hour before the open, trading days) or "weekly" (first trading day, before the open). Today's list is emailed straight away. Example: prompt "stocks crossing above their 200-day average on twice their average volume", schedule "after_close". Research alerts only, not investment advice.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string|null | – | Optional market (ISO country code such as US, GB, IN); also sets whose trading hours the schedule follows. |
| name | string|null | – | A short name for the alert; defaults to the screen's title. |
| notify_when | string | – | changes (default: only when stocks enter or leave) or always. |
| prompt | string|null | – | The screen in plain English. Omit when passing query_id and session_id. |
| query_id | string|null | – | query_id of an earlier market_query result to alert on. |
| schedule | string | – | after_close (default), pre_open or weekly. |
| session_id | string|null | – | session_id of that result. |
No output schema declared.
No examples provided.
delete_alert Delete an alert ~45
Delete an alert permanently (its screen and saved research stay). To stop emails temporarily, use update_alert with enabled=false instead.
| Name | Type | Req | Description |
|---|---|---|---|
| alert_id | integer | yes | alert_id to delete. |
No output schema declared.
No examples provided.
describe_metrics Look up metric definitions ~60
Look up the canonical metrics available for screening. Without search: every metric name, grouped by category. With search (e.g. 'IV rank', 'yield'): matching metrics with format and exact definition.
| Name | Type | Req | Description |
|---|---|---|---|
| search | string|null | – | Optional search text. |
No output schema declared.
No examples provided.
list_alerts List email alerts ~44
List this account's screen alerts: name, the screen's prompt, schedule, on/paused, next check, last email and how many stocks entered or left last time.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
market_query Screen the market ~288
Screen global stocks (and crypto) with a natural-language question and get a typed dataset back. Examples: "quality large caps 15% below their 52-week high with IV rank above 60 and no earnings in 30 days", "wheel candidates with 30-delta put yield above 20% annualized", "software companies over $5B growing revenue 20%+". Returns the interpretation (how ambiguous terms were resolved), filter criteria, typed columns (with format hints: pct values are fractions, usd values are dollars), up to 200 rows, data as-of dates and warnings. Each call creates a saved research query; pass session_id to keep related queries together. You always get the full rows to analyze. Where the chat shows the interactive Qanvo Screener under the result, the user already sees every row there: give the takeaways rather than retyping the table. Where it doesn't, present the rows as usual. Research data only, not investment advice.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string|null | – | Optional market: an ISO country code such as US, GB, IN, JP or CN limits results to listings trading there (one listing per company). Omit for all markets. |
| prompt | string | yes | The market question in plain English. |
| session_id | string|null | – | Optional session id from a previous result to group queries. |
No output schema declared.
No examples provided.
my_closed_option_trades My closed option trades ~111
The user's closed option trades matched open-to-close (first in, first out): contract, side, dates, contracts, open and close amounts, realized P&L, how it ended (closed, expired, assigned), days held. Newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Rows, default 200. |
| months | integer | – | Closed within the last N months. Default 12. |
| side | string | – | all, short or long. |
| symbol | string|null | – | – |
No output schema declared.
No examples provided.
my_option_expirations My expiration ladder ~71
The user's upcoming expirations: per expiry the positions, contracts, ITM shorts, short premium open and cost to close, long value, underlyings, and earnings/ex-dividend dates falling before it.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Expiries within this many days. Default 45. |
No output schema declared.
No examples provided.
my_option_orders My option orders & premiums ~155
The user's option orders with premiums in dollars (credit +, debit -): action, contract, contracts, fill price, status, times, plus totals (credits, debits, net premium, by underlying, by day). Up to 90 days live from the brokerages; longer from synced fills. Read-only: Qanvo never places orders.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Look-back days: 1-90 live, up to 3650 from history. Default 30. |
| side | string | – | all, sell (credits) or buy (debits). Default all. |
| status | string | – | all, filled or working. Default all. |
| symbol | string|null | – | Optional underlying ticker. |
No output schema declared.
No examples provided.
my_option_payoff My P/L at expiry ~81
P&L at expiry across a price range for everything the user holds on one underlying (shares plus every option leg), with breakevens and best/worst outcome in range. Arithmetic, not a forecast.
| Name | Type | Req | Description |
|---|---|---|---|
| high | number|null | – | Optional high price. |
| low | number|null | – | Optional low price. |
| symbol | string | yes | – |
No output schema declared.
No examples provided.
my_option_positions My option positions ~111
The user's open option positions across every connected broker, priced now (mark, underlying, moneyness, intrinsic/extrinsic, premium captured, breakeven, delta, IV, theta/day, dollar delta, coverage, earnings/ex-dividend before expiry) plus portfolio totals (net theta, dollar delta, vega, short premium open vs cost to close).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string|null | – | Optional account key (A1, A2...). |
| symbol | string|null | – | Optional underlying ticker. |
No output schema declared.
No examples provided.
my_option_premium My option premium history ~99
The user's option premium history: credits, debits and net by month and by underlying, retention, contracts sold/bought, average days to expiry at open, and the closed-trade record (realized P&L, win rate, average win/loss, expired, assigned).
| Name | Type | Req | Description |
|---|---|---|---|
| months | integer | – | Months back including this one, 1-120. Default 12. |
| symbol | string|null | – | Optional underlying ticker. |
No output schema declared.
No examples provided.
my_orders My orders ~78
The user's recent orders straight from their brokerages (live): status, action, quantity, limit and execution prices. Read-only: Qanvo never places or changes orders.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Look-back in days, 1-90 (default 30). |
| state | string | – | all, open or executed (default all). |
No output schema declared.
No examples provided.
my_portfolio My portfolio ~134
The user's connected brokerage accounts, all brokers aggregated (read-only): account values, cash, margin, and each holding with weight, market value, cost basis, unrealized P&L and Qanvo market data (sector, P/E, forward P/E, dividend yield, next earnings, RSI, IV rank). Use for any question about what they own. For filtered or computed views of their holdings ("my holdings with P/E over 30", "dividend income from my stocks"), use market_query instead.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Holdings to return, largest first (default 100). |
No output schema declared.
No examples provided.
my_transactions My transactions ~121
The user's brokerage transactions, newest first (synced daily, a day late): buys, sells, dividends, interest, fees, option assignments and expirations, deposits.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Look-back in days (default 365). |
| limit | integer | – | Rows (default 200, max 1000). |
| symbol | string|null | – | Optional ticker. |
| type | string|null | – | Optional type: BUY, SELL, DIVIDEND, INTEREST, FEE, OPTIONASSIGNMENT, OPTIONEXPIRATION, CONTRIBUTION ... |
No output schema declared.
No examples provided.
option_chain Option chain ~106
One expiry of a US stock's option chain around the current price (delayed market data): per strike the call and put last trade, change, delta, theta, IV, open interest and volume, plus the available expirations. Omit expiration for the nearest.
| Name | Type | Req | Description |
|---|---|---|---|
| expiration | string|null | – | yyyy-MM-dd; omit for the nearest. |
| strikes | integer | – | Strikes around the price, 4-40. Default 16. |
| symbol | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_alert_create Create alert (app) ~70
App only: saves the screen on display as an email alert.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string|null | – | – |
| name | string | yes | – |
| notify_when | string | yes | – |
| query_id | string | yes | – |
| schedule | string | yes | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_alert_options Alert options (app) ~42
App only: the alert schedules for a market, with when each next runs, and the plan's alert limit.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string|null | – | – |
No output schema declared.
No examples provided.
qanvo_app_alert_update Update alert (app) ~81
App only: points an existing alert at the screen on display, or changes its schedule or name.
| Name | Type | Req | Description |
|---|---|---|---|
| alert_id | integer | yes | – |
| enabled | boolean|null | – | – |
| name | string|null | – | – |
| notify_when | string|null | – | – |
| query_id | string|null | – | – |
| schedule | string|null | – | – |
No output schema declared.
No examples provided.
qanvo_app_alerts Alerts (app) ~19
App only: the account's alerts.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
qanvo_app_catalog Metric catalog (app) ~22
App only: the screenable metrics for the column chooser.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
qanvo_app_columns Screen columns (app) ~53
App only: catalog columns for the rows of a saved screen result (view tabs, column chooser).
| Name | Type | Req | Description |
|---|---|---|---|
| columns | array | yes | – |
| query_id | string | yes | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_result Screen result (app) ~59
App only: a saved screen result in the account, for hosts that don't pass a result's _meta to the app.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string|null | – | – |
| query_id | string | yes | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_security Security detail (app) ~39
App only: one listing's drill-down (screening row, prices, quarters, earnings, news).
| Name | Type | Req | Description |
|---|---|---|---|
| listing_id | integer | yes | – |
No output schema declared.
No examples provided.
qanvo_app_share Share link (app) ~50
App only: a public link to the screen on display (today's matches, re-run live for whoever opens it).
| Name | Type | Req | Description |
|---|---|---|---|
| query_id | string | yes | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_share_email Email a screen (app) ~70
App only: emails the screen on display (top matches and a live link) to an address the user typed. 10 a day.
| Name | Type | Req | Description |
|---|---|---|---|
| note | string|null | – | – |
| query_id | string | yes | – |
| session_id | string | yes | – |
| to | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_sparklines Screen sparklines (app) ~54
App only: ~3 months of daily closes for rows of a saved screen result.
| Name | Type | Req | Description |
|---|---|---|---|
| listing_ids | array | yes | – |
| query_id | string | yes | – |
| session_id | string | yes | – |
No output schema declared.
No examples provided.
qanvo_app_thresholds Edit screen thresholds (app) ~70
App only: changes a screen's numeric thresholds (an edited filter chip) and reruns the same SQL. No AI, no credits.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string|null | – | – |
| query_id | string | yes | – |
| session_id | string | yes | – |
| values | object | yes | – |
No output schema declared.
No examples provided.
refine_market_query Refine a screen ~108
Modify a previous market_query result (e.g. 'only semiconductors', 'add IV rank and sort by it'). Keeps the prior filters unless the instruction changes them.
| Name | Type | Req | Description |
|---|---|---|---|
| instruction | string | yes | The refinement in plain English. |
| market | string|null | – | Optional market (ISO country code); use the same one as the query being refined. |
| query_id | string | yes | query_id of the result to refine. |
| session_id | string | yes | session_id of that result. |
No output schema declared.
No examples provided.
refresh_portfolio Refresh my portfolio ~39
Pulls the latest holdings, balances and transactions from the user's brokerages now (they also refresh on their own every 15 minutes when asked about).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
update_alert Change or pause an alert ~166
Change an alert's schedule (after_close, pre_open, weekly), when it emails (changes or always) or name, pause/resume it with enabled, or point it at a refined version of its screen with query_id (a refine_market_query result in the same session; today's list is emailed again).
| Name | Type | Req | Description |
|---|---|---|---|
| alert_id | integer | yes | alert_id from list_alerts or create_alert. |
| enabled | boolean|null | – | false pauses the alert, true resumes it. |
| name | string|null | – | New name. |
| notify_when | string|null | – | changes or always. |
| query_id | string|null | – | query_id of a refined version of the alert's screen (same session). |
| schedule | string|null | – | New schedule: after_close, pre_open or weekly. |
No output schema declared.
No examples provided.
How do I install the Qanvo Stock Screener MCP server?
Qanvo Stock Screener is a hosted endpoint at https://qanvo.app/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 · qanvo.app
claude mcp add --transport http app-qanvo-screener 'https://qanvo.app/mcp'
What is the Qanvo Stock Screener MCP server?
Qanvo Stock Screener is an MCP server listed in the public MCP registry as app.qanvo/screener. Screen global stocks, options, ETFs and crypto in plain English, and set email alerts on any screen. This page covers its hosted endpoint (https://qanvo.app/mcp).
Is the Qanvo Stock Screener MCP server safe to use?
Qanvo Stock Screener scores 79 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 Qanvo Stock Screener MCP server expose?
Qanvo Stock Screener exposes 30 tools: describe_metrics, qanvo_app_alerts, refine_market_query, qanvo_app_result, qanvo_app_alert_update, and 25 more. Their descriptions and schemas cost roughly 2,785 tokens of context every time the server is loaded.
Does the Qanvo Stock Screener MCP server require authentication?
Yes. Qanvo Stock Screener 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 Qanvo Stock Screener MCP server still maintained?
Qanvo Stock Screener is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.