Pan-African news & analytics for Zimbabwe and 15 African countries: briefings and trends.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Compare news coverage between 2–4 African countries or regions side by side.
2–4 country codes, country names, or region names
Max articles per location, 1–10 (default 5)
Narrow comparison to a topic (optional)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Compare news coverage between 2–4 African countries or regions side by side.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max articles per location, 1–10 (default 5) |
| topic | string | Narrow comparison to a topic (optional) |
| locations* | array | 2–4 country codes, country names, or region names |
{
"type": "object",
"required": [
"locations"
],
"properties": {
"limit": {
"type": "number",
"description": "Max articles per location, 1–10 (default 5)"
},
"topic": {
"type": "string",
"description": "Narrow comparison to a topic (optional)"
},
"locations": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 2,
"description": "2–4 country codes, country names, or region names"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max surges to return, 1–20 (default 10) |
| location | string | Country, region, or city (optional — omit for continent-wide) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max surges to return, 1–20 (default 10)"
},
"location": {
"type": "string",
"description": "Country, region, or city (optional — omit for continent-wide)"
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| q | string | Keyword or phrase (optional) |
| tag | string | Tag name (optional) |
| limit | number | Max results, 1–20 (default 10) |
| country | string | Country code (optional) |
| category | string | Category slug or name (optional) |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Keyword or phrase (optional)"
},
"tag": {
"type": "string",
"description": "Tag name (optional)"
},
"limit": {
"type": "number",
"description": "Max results, 1–20 (default 10)"
},
"country": {
"type": "string",
"description": "Country code (optional)"
},
"category": {
"type": "string",
"description": "Category slug or name (optional)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | Article _id or slug |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Article _id or slug"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| focus | string | Country code, region, category, or topic (optional) |
| limit | number | Max articles, 1–12 (default 8) |
{
"type": "object",
"properties": {
"focus": {
"type": "string",
"description": "Country code, region, category, or topic (optional)"
},
"limit": {
"type": "number",
"description": "Max articles, 1–12 (default 8)"
}
}
}Open data breakdown of news coverage by category, country, and keyword for a given period.
| Argument | Type | Description |
|---|---|---|
| period | string | Time window (default: week) |
| location | string | Country, region, or city (optional) |
{
"type": "object",
"properties": {
"period": {
"enum": [
"today",
"week",
"month"
],
"type": "string",
"description": "Time window (default: week)"
},
"location": {
"type": "string",
"description": "Country, region, or city (optional)"
}
}
}News from a specific place in Africa. Accepts country codes, country names, region names, or city names.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max articles, 1–20 (default 10) |
| category | string | Category to filter (optional) |
| location* | string | Country code, country name, region, or city |
{
"type": "object",
"required": [
"location"
],
"properties": {
"limit": {
"type": "number",
"description": "Max articles, 1–20 (default 10)"
},
"category": {
"type": "string",
"description": "Category to filter (optional)"
},
"location": {
"type": "string",
"description": "Country code, country name, region, or city"
}
}
}Personalised news feed based on the authenticated user's article likes and saves. Requires Authorization: Bearer <WorkOS access token>.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max articles, 1–20 (default 12) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max articles, 1–20 (default 12)"
}
}
}See how a specific news source is covering a topic.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max articles, 1–20 (default 8) |
| topic | string | Topic to filter by (optional) |
| source* | string | Publication name (partial match) |
{
"type": "object",
"required": [
"source"
],
"properties": {
"limit": {
"type": "number",
"description": "Max articles, 1–20 (default 8)"
},
"topic": {
"type": "string",
"description": "Topic to filter by (optional)"
},
"source": {
"type": "string",
"description": "Publication name (partial match)"
}
}
}Platform statistics: total articles, active sources, and today's output.
No arguments.
{
"type": "object",
"properties": {}
}Open analytics: trending topics, categories, keywords, and sources for any location or period. Part of Mukoko's open data policy.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results per section, 1–20 (default 10) |
| period | string | Time window (default: today) |
| location | string | Country code, region, or city (optional) |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max results per section, 1–20 (default 10)"
},
"period": {
"enum": [
"today",
"week",
"month"
],
"type": "string",
"description": "Time window (default: today)"
},
"location": {
"type": "string",
"description": "Country code, region, or city (optional)"
}
}
}List all news categories with article counts.
No arguments.
{
"type": "object",
"properties": {}
}List active news sources. Optionally filter by country code.
| Argument | Type | Description |
|---|---|---|
| country | string | Filter by country code (optional) |
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Filter by country code (optional)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max articles, 1–20 (default 10) |
| since | string | Lookback window (default: week) |
| topic* | string | Topic, keyword, event, or person name to track |
| country | string | Limit to a country code (optional) |
{
"type": "object",
"required": [
"topic"
],
"properties": {
"limit": {
"type": "number",
"description": "Max articles, 1–20 (default 10)"
},
"since": {
"enum": [
"today",
"week",
"month"
],
"type": "string",
"description": "Lookback window (default: week)"
},
"topic": {
"type": "string",
"description": "Topic, keyword, event, or person name to track"
},
"country": {
"type": "string",
"description": "Limit to a country code (optional)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | number | How many un-enriched articles to enqueue, 1–50 (default 25). Ignored when article_ids is given. |
| article_ids | array | Specific article IDs to (re)enrich (optional). Capped at 50. |
| reset_attempts | boolean | Re-enrich even articles that already hit the failure cap (default false). Use sparingly — it re-bills AI. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "How many un-enriched articles to enqueue, 1–50 (default 25). Ignored when article_ids is given."
},
"article_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific article IDs to (re)enrich (optional). Capped at 50."
},
"reset_attempts": {
"type": "boolean",
"description": "Re-enrich even articles that already hit the failure cap (default false). Use sparingly — it re-bills AI."
}
}
}