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

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": "You are connected to Mukoko News, a Pan-African news platform covering news sources across Africa (call get_stats for live coverage). All data comes from MongoDB Atlas. Tools are task-oriented: get_briefing for \"what's happening in X\", track_story for developing stories, get_location_news for place-specific news, compare_locations for side-by-side country comparison, get_source_view for a publication's perspective. List tools return excerpts only; get_article returns the full article body inline as markdown (truncated at ~8000 characters with a link to continue in the Mukoko app). Open data analytics: get_trending_analytics (trending topics), detect_surge (sudden coverage spikes vs 7-day baseline), get_content_analytics (category/country breakdown). Personalised: get_my_feed requires a WorkOS bearer token. All tools understand country codes (ZW, KE, NG), country names, region names (East Africa, Southern Africa, West Africa, North Africa), and major city names.", "tools": [ { "description": "Compare news coverage between 2–4 African countries or regions side by side.", "inputSchema": { "properties": { "limit": { "description": "Max articles per location, 1–10 (default 5)", "type": "number" }, "locations": { "description": "2–4 country codes, country names, or region names", "items": { "type": "string" }, "maxItems": 4, "minItems": 2, "type": "array" }, "topic": { "description": "Narrow comparison to a topic (optional)", "type": "string" } }, "required": [ "locations" ], "type": "object" }, "name": "compare_locations", "outputSchema": null }, { "description": "Detect sudden spikes in news coverage — compares last 24h against 7-day baseline. Surfaces unusual increases like crime up 5× in Bulawayo or a football surge in Ghana.", "inputSchema": { "properties": { "limit": { "description": "Max surges to return, 1–20 (default 10)", "type": "number" }, "location": { "description": "Country, region, or city (optional — omit for continent-wide)", "type": "string" } }, "type": "object" }, "name": "detect_surge", "outputSchema": null }, { "description": "Drain the ENTIRE un-enriched article backlog, not just one batch. RESTRICTED to platform-team accounts (WorkOS bearer issued inside the platform-team org). Fire-and-forget: asks the pipeline worker to enrich un-enriched articles in batches (oldest first) until the backlog is clear, running independently of the automatic 10-minute sweep. Returns immediately; use trigger_enrichment for a single targeted batch instead.", "inputSchema": { "properties": {}, "type": "object" }, "name": "drain_enrichment_backlog", "outputSchema": null }, { "description": "Search articles by keyword, tag, category, or country. Results carry short excerpts, word counts, and app links only — call get_article with a result's id to read the full article body inline.", "inputSchema": { "properties": { "category": { "description": "Category slug or name (optional)", "type": "string" }, "country": { "description": "Country code (optional)", "type": "string" }, "limit": { "description": "Max results, 1–20 (default 10)", "type": "number" }, "q": { "description": "Keyword or phrase (optional)", "type": "string" }, "tag": { "description": "Tag name (optional)", "type": "string" } }, "type": "object" }, "name": "find_stories", "outputSchema": null }, { "description": "Read a single article by ID or slug. Returns the full article body inline as markdown (truncated at ~8000 characters with a link to continue in the app) plus source metadata and the Mukoko app URL. Use this after a list tool (get_briefing, find_stories, …) to read an article without leaving the conversation.", "inputSchema": { "properties": { "id": { "description": "Article _id or slug", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_article", "outputSchema": null }, { "description": "Answer \"What's happening in [place/topic]?\" — top story, recent articles, and trending topics in one call. Accepts country codes (ZW, KE), region names (East Africa, Southern Africa), category topics (politics, business), or omit focus for a pan-African overview. Returns short excerpts with word counts and app links only — call get_article with an article id to read a full article body inline.", "inputSchema": { "properties": { "focus": { "description": "Country code, region, category, or topic (optional)", "type": "string" }, "limit": { "description": "Max articles, 1–12 (default 8)", "type": "number" } }, "type": "object" }, "name": "get_briefing", "outputSchema": null }, { "description": "Open data breakdown of news coverage by category, country, and keyword for a given period.", "inputSchema": { "properties": { "location": { "description": "Country, region, or city (optional)", "type": "string" }, "period": { "description": "Time window (default: week)", "enum": [ "today", "week", "month" ], "type": "string" } }, "type": "object" }, "name": "get_content_analytics", "outputSchema": null }, { "description": "News from a specific place in Africa. Accepts country codes, country names, region names, or city names.", "inputSchema": { "properties": { "category": { "description": "Category to filter (optional)", "type": "string" }, "limit": { "description": "Max articles, 1–20 (default 10)", "type": "number" }, "location": { "description": "Country code, country name, region, or city", "type": "string" } }, "required": [ "location" ], "type": "object" }, "name": "get_location_news", "outputSchema": null }, { "description": "Personalised news feed based on the authenticated user's article likes and saves. Requires Authorization: Bearer <WorkOS access token>.", "inputSchema": { "properties": { "limit": { "description": "Max articles, 1–20 (default 12)", "type": "number" } }, "type": "object" }, "name": "get_my_feed", "outputSchema": null }, { "description": "See how a specific news source is covering a topic.", "inputSchema": { "properties": { "limit": { "description": "Max articles, 1–20 (default 8)", "type": "number" }, "source": { "description": "Publication name (partial match)", "type": "string" }, "topic": { "description": "Topic to filter by (optional)", "type": "string" } }, "required": [ "source" ], "type": "object" }, "name": "get_source_view", "outputSchema": null }, { "description": "Platform statistics: total articles, active sources, and today's output.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_stats", "outputSchema": null }, { "description": "Open analytics: trending topics, categories, keywords, and sources for any location or period. Part of Mukoko's open data policy.", "inputSchema": { "properties": { "limit": { "description": "Max results per section, 1–20 (default 10)", "type": "number" }, "location": { "description": "Country code, region, or city (optional)", "type": "string" }, "period": { "description": "Time window (default: today)", "enum": [ "today", "week", "month" ], "type": "string" } }, "type": "object" }, "name": "get_trending_analytics", "outputSchema": null }, { "description": "List all news categories with article counts.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_categories", "outputSchema": null }, { "description": "List active news sources. Optionally filter by country code.", "inputSchema": { "properties": { "country": { "description": "Filter by country code (optional)", "type": "string" } }, "type": "object" }, "name": "list_sources", "outputSchema": null }, { "description": "Follow the development of a news story over time. Returns articles in chronological order showing how a story evolved. Use since to control the lookback window.", "inputSchema": { "properties": { "country": { "description": "Limit to a country code (optional)", "type": "string" }, "limit": { "description": "Max articles, 1–20 (default 10)", "type": "number" }, "since": { "description": "Lookback window (default: week)", "enum": [ "today", "week", "month" ], "type": "string" }, "topic": { "description": "Topic, keyword, event, or person name to track", "type": "string" } }, "required": [ "topic" ], "type": "object" }, "name": "track_story", "outputSchema": null }, { "description": "Manually run the AI enrichment agent over existing articles (classification, keywords, entities, quality scoring). RESTRICTED to platform-team accounts — requires a WorkOS bearer token issued inside the platform-team org. By default enriches the most recent un-enriched articles; pass article_ids to target specific ones, or reset_attempts to re-run articles that previously hit the failure cap.", "inputSchema": { "properties": { "article_ids": { "description": "Specific article IDs to (re)enrich (optional). Capped at 50.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "How many un-enriched articles to enqueue, 1–50 (default 25). Ignored when article_ids is given.", "type": "number" }, "reset_attempts": { "description": "Re-enrich even articles that already hit the failure cap (default false). Use sparingly — it re-bills AI.", "type": "boolean" } }, "type": "object" }, "name": "trigger_enrichment", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:c92ecf69cbd7c7adf0dbadd588c32a66727ee816f97961d3efa29523441167a6 | sha256sum