Qanvo Stock Screener MCP
This official MCP server allows AI assistants and agents to screen global stocks, options, ETFs, and crypto using plain English queries. It provides access to validated market data, enabling users to create interactive screens with sparklines, metrics, and filters. The server supports setting one-click email alerts and integrates directly with the Qanvo app for saving and sharing screens.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://qanvo.app/mcpWhat you can do with it
- Screen global stocks, options, ETFs and crypto in plain English
- Set email alerts on any screen
- Open interactive Qanvo Screener inside the chat
- Access validated market data for AI agents
Source and maintenance
Protocol and capabilities
- Server
- qanvo 1.2
- MCP protocol
- 2025-06-18
- Tools
- 19 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {},
"logging": {},
"resources": {},
"extensions": {
"io.modelcontextprotocol/ui": {}
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
19 advertised
delete_alert — Delete an alert
Delete an alert permanently (its screen and saved research stay). To stop emails temporarily, use update_alert with enabled=false instead.
{
"type": "object",
"required": [
"alert_id"
],
"properties": {
"alert_id": {
"type": "integer",
"description": "alert_id to delete."
}
}
}{
"title": "Delete an alert",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}qanvo_app_sparklines — Screen sparklines (app)
App only: ~3 months of daily closes for rows of a saved screen result.
{
"type": "object",
"required": [
"session_id",
"query_id",
"listing_ids"
],
"properties": {
"query_id": {
"type": "string"
},
"session_id": {
"type": "string"
},
"listing_ids": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}{
"title": "Screen sparklines (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}qanvo_app_share — Share link (app)
App only: a public link to the screen on display (today's matches, re-run live for whoever opens it).
{
"type": "object",
"required": [
"session_id",
"query_id"
],
"properties": {
"query_id": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
}{
"title": "Share link (app)",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}update_alert — Change or pause an alert
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).
{
"type": "object",
"required": [
"alert_id"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null,
"description": "New name."
},
"enabled": {
"type": [
"boolean",
"null"
],
"default": null,
"description": "false pauses the alert, true resumes it."
},
"alert_id": {
"type": "integer",
"description": "alert_id from list_alerts or create_alert."
},
"query_id": {
"type": [
"string",
"null"
],
"default": null,
"description": "query_id of a refined version of the alert's screen (same session)."
},
"schedule": {
"type": [
"string",
"null"
],
"default": null,
"description": "New schedule: after_close, pre_open or weekly."
},
"notify_when": {
"type": [
"string",
"null"
],
"default": null,
"description": "changes or always."
}
}
}{
"title": "Change or pause an alert",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_alert — Create an email alert
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.
{
"type": "object",
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null,
"description": "A short name for the alert; defaults to the screen's title."
},
"market": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional market (ISO country code such as US, GB, IN); also sets whose trading hours the schedule follows."
},
"prompt": {
"type": [
"string",
"null"
],
"default": null,
"description": "The screen in plain English. Omit when passing query_id and session_id."
},
"query_id": {
"type": [
"string",
"null"
],
"default": null,
"description": "query_id of an earlier market_query result to alert on."
},
"schedule": {
"type": "string",
"default": "after_close",
"description": "after_close (default), pre_open or weekly."
},
"session_id": {
"type": [
"string",
"null"
],
"default": null,
"description": "session_id of that result."
},
"notify_when": {
"type": "string",
"default": "changes",
"description": "changes (default: only when stocks enter or leave) or always."
}
}
}{
"title": "Create an email alert",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}qanvo_app_columns — Screen columns (app)
App only: catalog columns for the rows of a saved screen result (view tabs, column chooser).
{
"type": "object",
"required": [
"session_id",
"query_id",
"columns"
],
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string"
}
},
"query_id": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
}{
"title": "Screen columns (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}refine_market_query — Refine a screen
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.
{
"type": "object",
"required": [
"query_id",
"session_id",
"instruction"
],
"properties": {
"market": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional market (ISO country code); use the same one as the query being refined."
},
"query_id": {
"type": "string",
"description": "query_id of the result to refine."
},
"session_id": {
"type": "string",
"description": "session_id of that result."
},
"instruction": {
"type": "string",
"description": "The refinement in plain English."
}
}
}{
"title": "Refine a screen",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}qanvo_app_share_email — Email a screen (app)
App only: emails the screen on display (top matches and a live link) to an address the user typed. 10 a day.
{
"type": "object",
"required": [
"session_id",
"query_id",
"to"
],
"properties": {
"to": {
"type": "string"
},
"note": {
"type": [
"string",
"null"
],
"default": null
},
"query_id": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
}{
"title": "Email a screen (app)",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}qanvo_app_result — Screen result (app)
App only: a saved screen result in the account, for hosts that don't pass a result's _meta to the app.
{
"type": "object",
"required": [
"session_id",
"query_id"
],
"properties": {
"market": {
"type": [
"string",
"null"
],
"default": null
},
"query_id": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
}{
"title": "Screen result (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}describe_metrics — Look up metric definitions
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.
{
"type": "object",
"properties": {
"search": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional search text."
}
}
}{
"title": "Look up metric definitions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_alerts — List email alerts
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.
{
"type": "object",
"properties": {}
}{
"title": "List email alerts",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}market_query — Screen the market
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.
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"market": {
"type": [
"string",
"null"
],
"default": null,
"description": "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": {
"type": "string",
"description": "The market question in plain English."
},
"session_id": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional session id from a previous result to group queries."
}
}
}{
"title": "Screen the market",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}qanvo_app_alert_create — Create alert (app)
App only: saves the screen on display as an email alert.
{
"type": "object",
"required": [
"session_id",
"query_id",
"name",
"schedule",
"notify_when"
],
"properties": {
"name": {
"type": "string"
},
"market": {
"type": [
"string",
"null"
],
"default": null
},
"query_id": {
"type": "string"
},
"schedule": {
"type": "string"
},
"session_id": {
"type": "string"
},
"notify_when": {
"type": "string"
}
}
}{
"title": "Create alert (app)",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}qanvo_app_alert_options — Alert options (app)
App only: the alert schedules for a market, with when each next runs, and the plan's alert limit.
{
"type": "object",
"properties": {
"market": {
"type": [
"string",
"null"
],
"default": null
}
}
}{
"title": "Alert options (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}qanvo_app_thresholds — Edit screen thresholds (app)
App only: changes a screen's numeric thresholds (an edited filter chip) and reruns the same SQL. No AI, no credits.
{
"type": "object",
"required": [
"session_id",
"query_id",
"values"
],
"properties": {
"market": {
"type": [
"string",
"null"
],
"default": null
},
"values": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"query_id": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
}{
"title": "Edit screen thresholds (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}qanvo_app_security — Security detail (app)
App only: one listing's drill-down (screening row, prices, quarters, earnings, news).
{
"type": "object",
"required": [
"listing_id"
],
"properties": {
"listing_id": {
"type": "integer"
}
}
}{
"title": "Security detail (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}qanvo_app_alerts — Alerts (app)
App only: the account's alerts.
{
"type": "object",
"properties": {}
}{
"title": "Alerts (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}qanvo_app_alert_update — Update alert (app)
App only: points an existing alert at the screen on display, or changes its schedule or name.
{
"type": "object",
"required": [
"alert_id"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null
},
"enabled": {
"type": [
"boolean",
"null"
],
"default": null
},
"alert_id": {
"type": "integer"
},
"query_id": {
"type": [
"string",
"null"
],
"default": null
},
"schedule": {
"type": [
"string",
"null"
],
"default": null
},
"notify_when": {
"type": [
"string",
"null"
],
"default": null
}
}
}{
"title": "Update alert (app)",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}qanvo_app_catalog — Metric catalog (app)
App only: the screenable metrics for the column chooser.
{
"type": "object",
"properties": {}
}{
"title": "Metric catalog (app)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
qanvo-screen
Qanvo Screener: an interactive, sortable grid of a screen's results with view tabs, extra columns, sparklines, alerts and a refine box
ui://qanvo/screen/v230-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 386 ms
- 95th percentile latency
- 386 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 386 ms · metadata changed · 19 tool(s), 1 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http qanvo-stock-screener-mcp https://qanvo.app/mcpCodex
codex mcp add qanvo-stock-screener-mcp --url https://qanvo.app/mcpCursor
{
"mcpServers": {
"qanvo-stock-screener-mcp": {
"url": "https://qanvo.app/mcp"
}
}
}Cline
{
"mcpServers": {
"qanvo-stock-screener-mcp": {
"type": "streamableHttp",
"url": "https://qanvo.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"qanvo-stock-screener-mcp": {
"type": "http",
"url": "https://qanvo.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http qanvo-stock-screener-mcp https://qanvo.app/mcpClaude Desktop
{
"mcpServers": {
"qanvo-stock-screener-mcp": {
"url": "https://qanvo.app/mcp"
}
}
}Windsurf
{
"mcpServers": {
"qanvo-stock-screener-mcp": {
"serverUrl": "https://qanvo.app/mcp"
}
}
}Let your agent find its tools
Find servers like Qanvo Stock Screener MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Qanvo Stock Screener MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.