Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted 4 min ago
teppi

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Check what sourced data Streaming Lens holds on a company, market, country or topic — WITHOUT returning the values. Returns how many datapoints match, which reports they sit in, which countries and years they cover, the confidence mix, when the most recent one was updated, and one sample datapoint with its metric name, unit, country, source and confidence but its value withheld. Use this to tell a user whether the answer to their question exists in the database and what it would take to read it. Matching is word-bounded, so short acronyms do not match inside longer words. Free access — no API key required. Read-only: it never returns the values, and the response says which reports hold them.", "inputSchema": { "additionalProperties": false, "properties": { "country": { "description": "Restrict to one country as spelled in the data (e.g. \"Nigeria\").", "type": "string" }, "query": { "description": "Company, market, country, platform or topic (e.g. \"ReelShort\", \"mobile money\", \"Nigeria\", \"micro-drama\").", "maxLength": 60, "minLength": 3, "type": "string" }, "report_slug": { "description": "Restrict to one report silo (e.g. \"vertical-invasion-2026\", \"africa-streaming-2026\").", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "check_data_coverage", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "Get chart-ready data for Plotly or any charting library. Report charts require auth. Newsletter charts (expert_network, topic_heatmap, engagement_funnel, geo_coverage, keyword_trends, article_bridge, expert_leaderboard, timeline) are available without signing in.", "inputSchema": { "properties": { "category": { "description": "Category filter — applies to category_breakdown, top_metrics, coverage, export_table", "type": "string" }, "chart_type": { "description": "Chart type to retrieve", "enum": [ "silo_overview", "category_breakdown", "top_metrics", "coverage", "confidence", "country", "timeline", "year_distribution", "export_table", "citation_graph", "expert_network", "topic_heatmap", "engagement_funnel", "geo_coverage", "keyword_trends", "article_bridge", "expert_leaderboard" ], "type": "string" }, "country": { "description": "Country filter — applies to export_table (e.g. \"Nigeria\", \"NG\")", "type": "string" }, "limit": { "description": "Max rows (default 20, max 200). For topic_heatmap/keyword_trends: top N keywords.", "maximum": 200, "minimum": 1, "type": "number" }, "silo": { "description": "Report slug filter (e.g. \"africa-streaming-2026\"). Required for export_table. Omit for all active silos on other chart types.", "type": "string" } }, "required": [ "chart_type" ], "type": "object" }, "name": "get_chart_data", "outputSchema": { "additionalProperties": true, "properties": { "chart_type": { "description": "The chart type that was rendered.", "type": "string" }, "data": { "description": "Plotly-ready data array.", "items": { "type": "object" }, "type": "array" }, "layout": { "description": "Plotly layout hints.", "type": "object" }, "report_slug": { "type": "string" } }, "type": "object" } }, { "description": "Search the tools available to your account by keyword. Returns matching tools with their names, descriptions and input schemas: the same tools tools/list advertises to you, nothing more. Use it to find which tool fits a request. Keywords can be: a tool name fragment (e.g. \"chart\"), a domain (africa, vertical, piracy, creator, sports), or an action (list, get, compare).", "inputSchema": { "properties": { "limit": { "description": "Max tools to return (default 8, max 20).", "maximum": 20, "minimum": 1, "type": "number" }, "query": { "description": "Whitespace-separated keywords; case-insensitive.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_tools", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "Get a Streaming Radar article by sr_articles ID, published_pieces ID, or edition number. Returns the published body when available; internal briefs return metadata only. Free access — no API key required.", "inputSchema": { "properties": { "id": { "description": "Article UUID", "type": "string" }, "number": { "description": "Edition number (e.g. 42)", "type": "number" } }, "type": "object" }, "name": "sr_get_article", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "List Streaming Radar newsletter articles with optional filters. Returns title, subtitle, status, type, views, open_rate, editorial_angle, and clickable links. Free access — no API key required.", "inputSchema": { "properties": { "limit": { "description": "Max results (default 20, max 50)", "maximum": 50, "minimum": 1, "type": "number" }, "offset": { "description": "Pagination offset (default 0)", "minimum": 0, "type": "number" }, "status": { "description": "Filter by status: published, draft, archived", "enum": [ "published", "draft", "archived" ], "type": "string" }, "type": { "description": "Filter by content type: edition, analysis, special", "type": "string" } }, "type": "object" }, "name": "sr_get_articles", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "Get a single expert by ID or name (partial match), including their linked articles. Free access — no API key required.", "inputSchema": { "properties": { "id": { "description": "Expert UUID", "type": "string" }, "name": { "description": "Expert name (partial match, e.g. \"Ludovic\")", "type": "string" } }, "type": "object" }, "name": "sr_get_expert", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "List experts cited in the Streaming Radar newsletter with optional filters by tier or country. Free access — no API key required.", "inputSchema": { "properties": { "country": { "description": "ISO 3166-1 alpha-2 country code (e.g. \"NG\", \"KE\", \"ZA\")", "type": "string" }, "limit": { "description": "Max results (default 20, max 50)", "maximum": 50, "minimum": 1, "type": "number" }, "tier": { "description": "Expert tier (1 = top, 2 = mid, 3 = emerging)", "enum": [ 1, 2, 3 ], "type": "number" } }, "type": "object" }, "name": "sr_get_experts", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "Get published articles since a given date, ordered by publication date descending. Only published articles are returned. Free access — no API key required; the views and open_rate fields are returned only with an admin key.", "inputSchema": { "properties": { "limit": { "description": "Max results (default 20, max 50)", "maximum": 50, "minimum": 1, "type": "number" }, "since_date": { "description": "ISO 8601 date or datetime (e.g. \"2026-02-01\" or \"2026-02-01T00:00:00Z\")", "type": "string" } }, "required": [ "since_date" ], "type": "object" }, "name": "sr_get_new_since", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "List tags used in the Streaming Radar newsletter, optionally filtered by category. Free access — no API key required.", "inputSchema": { "properties": { "category": { "description": "Tag category (e.g. \"company\", \"country\", \"topic\", \"format\")", "type": "string" }, "limit": { "description": "Max results (default 50)", "maximum": 200, "minimum": 1, "type": "number" } }, "type": "object" }, "name": "sr_get_tags", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "Search Streaming Radar articles, or — with mode=coverage — check whether a topic is already covered in the published corpus using semantic similarity.\n\nmode=search (default): case-insensitive whole-query substring match on article metadata, plus indexed full-text search of published piece bodies. Multi-word body queries require all terms. Use short queries for names. Free access, no API key required.\nmode=coverage: semantic anti-redite + auto-citation check over the published corpus. Returns a channel-weighted verdict (DÉJÀ TRAITÉ / EFFLEURÉ / NEUF — only PUBLISHED pieces can block; briefs are non-blocking signals), plus citable hits (url + excerpt) for self-citation. Also returns a facts array: passages already published in the body of a piece that carry the same rare terms as the query (non-blocking). Free access.", "inputSchema": { "properties": { "channels": { "description": "mode=coverage only — restrict to channels (substack, linkedin_story, linkedin_post, guest_article, vdtv, brief). Default: all.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Max results (default 10, max 30) — mode=search only", "maximum": 30, "minimum": 1, "type": "number" }, "mode": { "description": "search (default) = case-insensitive substring match on title, subtitle and editorial angle (not full-text) | coverage = semantic corpus coverage check", "enum": [ "search", "coverage" ], "type": "string" }, "query": { "description": "mode=search: short name or phrase; metadata matches a contiguous substring, published bodies match all search terms. mode=coverage: free-text description of the angle or topic to check.", "minLength": 2, "type": "string" }, "top_k": { "description": "Number of vector neighbours to retrieve (default 10, max 30) — mode=coverage only", "maximum": 30, "minimum": 1, "type": "number" } }, "required": [ "query" ], "type": "object" }, "name": "sr_search_articles", "outputSchema": { "additionalProperties": true, "properties": { "articles": { "items": { "type": "object" }, "type": "array" }, "count": { "type": "integer" } }, "type": "object" } }, { "description": "List all available genre tiers (Proven / Growing / Emerging) and hybrid combinations for the vertical drama story bible generator.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "story_list_genres", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } }, { "description": "List all target markets with audience profiles and top genres for the vertical drama story bible generator.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "story_list_markets", "outputSchema": { "additionalProperties": true, "description": "Tool-specific result object. Inspect the `content` array for human-readable text and structured data.", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:cc440feef7992928c86502dbf35d2f94f53ba3b7e8e6ff4f3155e829b377dbbc | sha256sum