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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:c92ecf69cbd7c7adf0dbadd588c32a66727ee816f97961d3efa29523441167a6 | sha256sum