Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted just now
teppi

Server definition

Hash
sha256:fbb64fc8f0174aaa18bab13ff6202125dc0cbbcba36ac0ab77d6c8ca2c7bd4df
What it is
What a remote MCP server returned when asked what it offers: 20 tools

The blob, as servednamed by its sha256

{ "instructions": "StockMarketScan exposes US equity screeners, chart patterns, options flow and per-stock research.\n\nTool selection tips:\n- One stock, broad question (\"what's going on with NVDA\") -> get_stock_report. It bundles quote, patterns, options flow, candles and screener membership in one call. Do not assemble that yourself from four tools.\n- \"Which stocks match X\" -> search_setups or search_stocks_in_screeners. Never loop get_screener_data over symbols.\n- Stock-level options flow (aggregated per symbol/day) -> get_options_flow_overview or get_options_flow_timeline.\n Contract-level detail (one row per option contract) -> get_unusual_options_activity.\n- list_screeners first when you don't know the screener slugs; the list is stable and cached.\n- explain_concept answers \"what is RSI / golden cross / vol-OI ratio\" without spending an API call quota.\n\nAccess: most tools need a paid plan. Anonymous clients get list_screeners, get_stock_info, explain_concept and ping; everything else returns NEEDS_SUBSCRIPTION with a signup link. Tools marked \"Pro only\" return TIER_UPGRADE_REQUIRED on the Basic plan.\n\nData is end-of-day/scan based US market data, not tick-level, and it is not investment advice.", "tools": [ { "description": "Return a plain-language explanation of a platform-specific term, metric, or screener. Use ONLY for terms that are specific to StockMarketScan (e.g. 'strength_score' which is our internal scoring, or 'hot_prospects' which is our curated screener). Do NOT use for generic finance terms the model already knows: answer those directly. Returns { term, title, explanation, interpretation, related_terms }.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "term": { "description": "Term to explain, e.g. 'call_put_ratio', 'golden_cross', 'consecutive_days', 'strength_score', 'vol_oi_ratio', 'streak'", "minLength": 1, "type": "string" } }, "required": [ "term" ], "type": "object" }, "name": "explain_concept", "outputSchema": null }, { "description": "Return OHLCV price candles for a single stock, oldest first. Use when you need price history to compute indicators or answer 'how much is X up this month'. date is the trading day (YYYY-MM-DD; weekly candles use the Monday). Default range is 6mo. Use larger ranges like '1y' or '2y' only when the user explicitly asks for long history; max range is 20 years. Returns { data: [{ date, open, high, low, close, volume }], meta: { as_of, pagination: { total } } }.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "interval": { "default": "1d", "description": "Daily or weekly candles", "enum": [ "1d", "1wk" ], "type": "string" }, "range": { "default": "6mo", "description": "Range: 1d, 5d, 1y, 2y, 5y, max, or {N}mo (1-240)", "type": "string" }, "symbol": { "description": "Stock ticker", "pattern": "^[A-Z0-9.^=\\-]{1,20}$", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_candles", "outputSchema": null }, { "description": "Return all chart patterns currently detected for a single stock symbol. Detectable pattern ids: double_top, double_bottom, triple_top, triple_bottom, head_shoulders, inv_head_shoulders, round_bottom, cup_handle, asc_triangle, desc_triangle, sym_triangle, channel_up, channel_down, rectangle, flag, wedge_rising, wedge_falling, abcd, gartley, bat, butterfly, crab, impulse_wave, corrective_wave. Use when the user asks 'what patterns does X have' or 'is X forming a head and shoulders'. Requires a Basic or Pro API key. Returns { data: { symbol, interval, computed_at, candle_count, patterns: [{ id, name, type, category, confidence, points, lines, target_price, last_structural_point }] } } where type is the pattern direction (bullish, bearish, neutral). Empty patterns array if none detected.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "interval": { "default": "1d", "description": "Chart interval", "enum": [ "1d", "1wk" ], "type": "string" }, "symbol": { "description": "Stock ticker, e.g. AAPL, TSLA, MSFT", "pattern": "^[A-Z0-9.^=\\-]{1,20}$", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_chart_patterns", "outputSchema": null }, { "description": "Return NYSE and NASDAQ market breadth: advancing/declining/unchanged issues, their percentages, and new highs/lows. Use when the user asks 'how's the market today' or 'is breadth strong'. Default (no params): last 7 trading days. Send either date or date_from/date_to (either end may be omitted). Returns { data: [{ data_date, exchange, advancing_issues, declining_issues, unchanged_issues, percent_advancing_issues, percent_declining_issues, percent_unchanged_issues, new_highs, new_lows }], meta: { as_of } }; all counts and percents are numbers (63 means 63%). Two rows per date (NYSE + NASDAQ). Tier: Basic+.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "date": { "description": "Single day (YYYY-MM-DD)", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_from": { "description": "Range start", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_to": { "description": "Range end", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "type": "object" }, "name": "get_market_momentum", "outputSchema": null }, { "description": "Return the daily options flow table for one trading day: aggregated call/put volume, premium, implied volatility, and consecutive-day streaks for every notable symbol. Use when the user asks 'what's the options flow today' or 'show me the largest premium'. Each row includes call_put_volume_ratio (> 1.0 means more call than put volume), consecutive_days (streak length), total_premium (dollar size), call_avg_iv/put_avg_iv. Returns { data: [...], meta: { as_of, market_stats, available_dates, pagination: { next_cursor } } }. Tier: Pro only. Basic users get 403.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "meta.pagination.next_cursor from the previous page", "minLength": 1, "type": "string" }, "date": { "description": "Trading day (YYYY-MM-DD). Default = latest available day.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "limit": { "default": 100, "description": "Rows to return (max 500)", "maximum": 500, "minimum": 1, "type": "integer" }, "sort": { "default": "streak", "description": "Sort order: streak=longest streaks first, volume=highest volume, callput=most extreme C/P, premium=biggest dollar", "enum": [ "streak", "volume", "callput", "premium" ], "type": "string" } }, "type": "object" }, "name": "get_options_flow_overview", "outputSchema": null }, { "description": "Return ranked options flow records for a date range: the records that stand out by long consecutive-day streaks, large premium, and screener confluence. Each record includes data-only performance tracking measured from a realistic entry reference: entry_price = open of the trading day AFTER signal_date (the close of signal_date is not an available fill price). max_gain_pct/max_drawdown_pct/price_change_pct are computed against entry_price; if that day's US open hasn't happened yet, these fields and entry_price are null ('pending'). This is descriptive market data for your own research, not a recommendation. If date_from/date_to omitted, returns last 60 days. Returns { data: [...], meta: { as_of, pagination: { next_cursor }, parameters: { date_from, date_to } } }. Dates are YYYY-MM-DD and numbers are JSON numbers. Tier: Pro only.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "meta.pagination.next_cursor from the previous page", "minLength": 1, "type": "string" }, "date_from": { "description": "Start date (YYYY-MM-DD)", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_to": { "description": "End date (YYYY-MM-DD)", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "limit": { "default": 500, "description": "Max records returned (default 500)", "maximum": 2000, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get_options_flow_ranked", "outputSchema": null }, { "description": "Return daily options market sentiment: one row per trading day. Combines NYSE/NASDAQ market breadth (advance/decline + new highs/lows) with the market-wide call/put ratio. Each row includes market_breadth_score (0-100), market_call_put_ratio, the daily filter context (bullish_only/bearish_only/mixed), bullish_count/bearish_count of flow records that day, plus a derived sentiment_score (0-100) and sentiment_label (bullish/neutral/bearish). Use when the user asks 'what's market sentiment today', 'how bullish is the market', 'show me sentiment over the last week'. If date_from/date_to omitted, returns last 60 days. Returns { data: [...], meta: { as_of, pagination } }. Tier: Pro only.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "meta.pagination.next_cursor from the previous page", "minLength": 1, "type": "string" }, "date_from": { "description": "Start date (YYYY-MM-DD)", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_to": { "description": "End date (YYYY-MM-DD)", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "type": "object" }, "name": "get_options_flow_sentiment", "outputSchema": null }, { "description": "Return the historical options flow for a single stock: most recent days first. Use when the user asks 'show me X's options flow history' or 'how long has X been bullish'. Returns { data: [daily rows, newest first], meta: { as_of, pagination: { next_cursor } } }. Tier: Pro only.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "meta.pagination.next_cursor from the previous page", "minLength": 1, "type": "string" }, "limit": { "default": 60, "description": "Days of history (max 365)", "maximum": 365, "minimum": 1, "type": "integer" }, "symbol": { "description": "Stock ticker", "pattern": "^[A-Z0-9.^=\\-]{1,20}$", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_options_flow_timeline", "outputSchema": null }, { "description": "Return the rows of a single stock screener for its latest snapshot. Use this when the user asks about a specific screener like 'hot prospects' or 'golden cross'. Common slugs: hot-prospects, golden-cross, death-cross, rsi-oversold, rsi-overbought, defensive-stocks, dividend-prospects, j-pattern, nearing-6-month-highs, week-52-high-top-picks, top-penny-pops, strong-volume-gains, top-tech-stocks, fundamentally-fine, income-and-growth, best-reits. If you don't know the slug, call list_screeners first. Numbers are JSON numbers (percent_change 1.25 means +1.25%), dates are YYYY-MM-DD. Returns { data: [rows], meta: { as_of, screener, pagination: { next_cursor, total } } }. For the next page pass meta.pagination.next_cursor as cursor.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "meta.pagination.next_cursor from the previous page. Omit for the first page.", "minLength": 1, "type": "string" }, "limit": { "default": 50, "description": "Rows per page (max 500)", "maximum": 500, "minimum": 1, "type": "integer" }, "slug": { "description": "The screener slug, e.g. 'hot-prospects', 'golden-cross', 'rsi-oversold'", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_screener_data", "outputSchema": null }, { "description": "Return basic metadata for a stock: full company name, exchange, industry, last price, and daily percent change. Use this when you first encounter a symbol and need to identify it. Lighter than get_stock_report (composite) or get_candles (full history). Returns { data: { symbol, symbol_name, last_price, percent_change, exchange, industry }, meta: { as_of } }; percent_change 1.27 means +1.27%. Returns NOT_FOUND for unknown tickers.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "symbol": { "description": "Stock ticker, e.g. AAPL", "pattern": "^[A-Z0-9.^=\\-]{1,20}$", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_stock_info", "outputSchema": null }, { "description": "Return a comprehensive report on a single stock in one call: metadata, screener appearances, chart patterns, options flow, signal status, price summary, and upcoming earnings. THIS IS THE PREFERRED FIRST TOOL when a user asks about a single stock. It replaces 5-7 separate tool calls (get_stock_info + get_chart_patterns + get_options_flow_timeline + get_options_flow_ranked + screener lookups + get_candles). Do NOT also call the primitives after calling this: the composite already has everything. Parallel fetch under the hood, graceful partial failures (if one source errors, that section returns null with a note). Returns { symbol, as_of, info, screeners, patterns, options_flow, signal, candle_summary, overall_bias }. overall_bias is a heuristic hint, not financial advice.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "interval": { "default": "1d", "description": "Pattern detection interval", "enum": [ "1d", "1wk" ], "type": "string" }, "symbol": { "description": "Stock ticker, e.g. AAPL", "pattern": "^[A-Z0-9.^=\\-]{1,20}$", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_stock_report", "outputSchema": null }, { "description": "Return AI-computed connections between trending topics across categories (tech → patents, tech → funding, etc). Useful for spotting meta-trends. Use when the user asks 'what trends are connected' or 'show me cross-category signals'. Use one of latest, date, or days. Returns { data: [{ date, source_category, source_topic, target_category, target_topic, strength, rationale }], meta: { as_of } }. Tier: Pro only.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "date": { "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "days": { "default": 14, "maximum": 90, "minimum": 1, "type": "integer" }, "latest": { "default": false, "type": "boolean" }, "limit": { "default": 200, "description": "Max connections returned (default 200)", "maximum": 1000, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get_trend_connections", "outputSchema": null }, { "description": "Return AI-detected trending topics in tech & science, patents, or funding events. Use when the user asks 'what's trending in tech' or 'show me patent trends'. Use one of latest, date, or days. Returns { data: [{ date, topic, weight }], meta: { as_of } } where weight is 0-1. Tier: Pro only.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "category": { "default": "techscience", "description": "Trend category", "enum": [ "techscience", "patents", "fundingevents" ], "type": "string" }, "date": { "description": "Exact date lookup", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "days": { "default": 10, "description": "Lookback window", "maximum": 180, "minimum": 1, "type": "integer" }, "latest": { "default": false, "description": "If true, only return most recent day", "type": "boolean" } }, "type": "object" }, "name": "get_trends", "outputSchema": null }, { "description": "Return individual options contracts flagged as unusual activity (Vol/OI > 1.5). Each row is one contract, not one stock. Use when the user wants contract-level detail. Filter by symbol, side (call/put/both), minimum vol/oi, minimum premium, or max days to expiration. For aggregated stock-level flow use get_options_flow_overview instead. Returns { date, count, contracts: [...], next_cursor }.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "cursor": { "description": "meta.pagination.next_cursor from the previous page", "minLength": 1, "type": "string" }, "limit": { "default": 300, "maximum": 1000, "minimum": 1, "type": "integer" }, "max_dte": { "maximum": 9007199254740991, "minimum": 0, "type": "integer" }, "min_premium_usd": { "default": 25000, "minimum": 0, "type": "number" }, "min_vol_oi": { "default": 1.5, "minimum": 0, "type": "number" }, "side": { "default": "both", "enum": [ "call", "put", "both" ], "type": "string" }, "symbol": { "description": "Filter to one symbol", "pattern": "^[A-Z0-9.^=\\-]{1,20}$", "type": "string" } }, "type": "object" }, "name": "get_unusual_options_activity", "outputSchema": null }, { "description": "Return metadata for all 24 stock screeners on the platform: slug, name, description, category, tier, whether the caller can read it, and its row fields with their JSON value types. Use this to discover which screeners are available before calling get_screener_data. Call this once per session; the list changes very rarely. Returns { data: [{ slug, name, description, category, tier, accessible, columns: [{ key, label, type, value_type }] }], meta: { caller_tier, total, accessible } }.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "list_screeners", "outputSchema": null }, { "description": "Minimal sanity check. Returns { status, version, timestamp, cache_size }. No auth needed. Use this to verify the MCP server is reachable and responsive.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "ping", "outputSchema": null }, { "description": "Find all stocks across one or more screeners that currently exhibit specific chart patterns. Much faster than calling get_chart_patterns in a loop. Use when the user asks 'which stocks have a cup and handle' or 'find me hot prospects with bullish reversal patterns'. Requires a Basic or Pro API key; unknown slugs or pattern ids and screeners above the plan are errors. Results are capped per screener group via `limit` (default 100); capped groups carry truncated: true. Returns { data: [{ screener_slug, screener_name, count, truncated, stocks: [{ symbol, symbol_name, last_price, volume, data_date, matched_patterns }] }], meta: { total_unique_stocks } }.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "interval": { "default": "1d", "description": "Chart interval", "enum": [ "1d", "1wk" ], "type": "string" }, "limit": { "default": 100, "description": "Max matching stocks per screener group (default 100)", "maximum": 500, "minimum": 1, "type": "integer" }, "pattern_ids": { "default": [], "description": "Pattern ids to filter by. Empty = all patterns. Valid ids: double_top, double_bottom, triple_top, triple_bottom, head_shoulders, inv_head_shoulders, round_bottom, cup_handle, asc_triangle, desc_triangle, sym_triangle, channel_up, channel_down, rectangle, flag, wedge_rising, wedge_falling, abcd, gartley, bat, butterfly, crab, impulse_wave, corrective_wave", "items": { "type": "string" }, "type": "array" }, "screener_slugs": { "description": "Screener slugs to search within", "items": { "type": "string" }, "maxItems": 24, "minItems": 1, "type": "array" } }, "required": [ "screener_slugs" ], "type": "object" }, "name": "search_patterns", "outputSchema": null }, { "description": "List today's options flow records for one side (bullish or bearish), ranked by a descriptive composite score (strength score + consecutive-day streak + premium size). Use when the user asks which symbols had the most notable options flow today. This is descriptive market data, not a recommendation. Summarize the first few rows rather than dumping the raw JSON. Use get_stock_report to look at a single symbol in more detail. Returns { side, date, count, setups: [{ symbol, score, signal: { type, strength, consecutive_days, call_put_ratio, total_premium } }] }.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "limit": { "default": 20, "description": "Max setups to return", "maximum": 100, "minimum": 1, "type": "integer" }, "side": { "default": "bullish", "description": "Side of setups to return", "enum": [ "bullish", "bearish" ], "type": "string" } }, "type": "object" }, "name": "search_setups", "outputSchema": null }, { "description": "Search for stocks by ticker prefix or company name. THE tool to use when the ticker is unknown ('what's the symbol for Palantir?') or ambiguous: resolve the name to a symbol here, then use get_stock_info / get_stock_report with the symbol. No API key required. Returns { data: [{ symbol, name }], meta } ordered by best match.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "limit": { "default": 10, "description": "Max results (default 10)", "maximum": 50, "minimum": 1, "type": "integer" }, "query": { "description": "Symbol prefix or part of the company name, e.g. 'Apple' or 'NVD'", "maxLength": 60, "minLength": 1, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_stocks", "outputSchema": null }, { "description": "Find stocks that appear in multiple screeners simultaneously. Useful for finding overlap across screeners. Use when the user asks 'which stocks are in both X and Y' or 'find stocks in 3+ bullish screeners'. Returns { screeners_queried, mode, count, symbols: [{symbol, screeners, match_count}] }. Intersection mode returns only stocks in ALL listed screeners; union returns stocks in ANY.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "limit": { "default": 50, "maximum": 500, "minimum": 1, "type": "integer" }, "mode": { "default": "intersection", "description": "intersection = stocks in ALL screeners; union = stocks in ANY screener", "enum": [ "intersection", "union" ], "type": "string" }, "screener_slugs": { "description": "List of screener slugs to query (1-24)", "items": { "type": "string" }, "maxItems": 24, "minItems": 1, "type": "array" } }, "required": [ "screener_slugs" ], "type": "object" }, "name": "search_stocks_in_screeners", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:fbb64fc8f0174aaa18bab13ff6202125dc0cbbcba36ac0ab77d6c8ca2c7bd4df | sha256sum