Search and analyze global news coverage and US television transcripts via the GDELT Project's real-time APIs via MCP. STDIO or Streamable HTTP.
The GDELT MCP server demonstrates solid definition quality with clear, detailed descriptions and well-structured parameter schemas. All 6 tools have explicit descriptions exceeding 100 characters, comprehensive parameter documentation, and typed input schemas. Tool naming follows the verb_noun convention consistently (all prefixed with 'gdelt_get_'). However, output schemas are not explicitly documented in the tool definitions, they are described only in the prose descriptions, not as formal JSON Schema output definitions. This is a notable gap against the rubric baseline that 100% of A+ tools document return types. Parameter descriptions are consistently strong (averaging 150-250 characters each with format constraints, examples, and usage guidance). Error handling guidance is present in descriptions (e.g., 'unknown_series error', 'unknown_point error') but lacks structured error classification and recovery patterns. No evidence of secrets in parameters. All tools are read-only (low security risk). The server shows good composition: each tool has a distinct responsibility and tool outputs include chaining IDs (query echoed, series/point labels returned for follow-up calls). Minor concerns: some parameters like 'points' in gdelt_get_coverage_timeline accept array input but the validation and rejection of non-matching values is mentioned only in prose, not enforced schema constraints.
Break down news coverage volume over time by source language or source country, returning a multi-series time series (one series per language or country). Shows which countries or languages drove early vs. late coverage — useful for tracing how a story propagated geographically or across language communities. Returns up to 10 series by total volume and aggregates the rest into an "Other" bucket, naming every series it folded in there under otherSeriesLabels — pass any of those labels back as the series input to get that series complete, ranked or not. Values are normalized: each point is the topic's share of media output, not an absolute article count. Small media markets with concentrated coverage therefore rank above large markets with diverse output — a high value means the topic dominated that source's coverage, not that it published the most articles. Use breakdownBy "country" with the signal-detection chain to map geographic attention, or "language" to detect non-English media surges.
Retrieve a time series showing when news coverage of a topic spiked, or how average tone shifted over time. Use mode "volume" for normalized coverage intensity (% of all global coverage per timestep). Use mode "volume_with_articles" for the same signal plus the top articles that drove each spike — this is the primary signal-detection mode: a single call reveals both the spike and its cause, avoiding a follow-up gdelt_search_articles call. Use mode "tone" for average sentiment score per timestep (negative = hostile/fearful, positive = celebratory). Date resolution is inferred from returned intervals: 15 minutes or hours for short windows, days for longer ones. In volume_with_articles mode the text surface shows the first 3 article links per timestep next to that timestep's true article count; name a timestep's date in points to render its full list. Note: DOC API covers only the last 3 months.
Get the tonal distribution of articles matching a query as a histogram (bins approximately -30 to +30). Unlike a single average tone score, the histogram reveals whether coverage is uniformly negative, bimodal (some articles extremely positive and some extremely negative), or clustered near neutral. Each bin includes representative article URLs. Distinct from gdelt_get_coverage_timeline (mode: tone) — this is a snapshot distribution across all matching articles, not a time series. Use gdelt_get_coverage_timeline with mode "tone" to see how sentiment shifted over time.
Output schemas not formally documented. Tool descriptions explain what is returned in prose (e.g., 'Returns up to 10 series by total volume...otherSeriesLabels') but no structured JSON Schema output definitions are provided. This forces LLMs to infer the response structure from natural language, increasing hallucination risk and token waste on clarification.
Error handling lacks structured categorization. Tool descriptions mention error types ('unknown_series error', 'unknown_point error') in prose, but no explicit error classification (retryable vs. user-fixable vs. fatal) or recovery guidance structure is visible. LLMs may not reliably extract the recommended next step.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Retrieve the top matching TV news clips (up to 3,000) for a query from the Internet Archive's Television News Archive. Each clip includes show name, station, air timestamp, a 15-second transcript excerpt, and a direct link to view the full one-minute clip. Use after gdelt_search_tv to read the actual transcript content driving a coverage spike. 3,000 is a hard per-call ceiling and GDELT offers no cursor: when a query fills it, split the run into narrower startDatetime/endDatetime windows — the response hands back the exact windows to use. Archive coverage spans 2009–October 2024.
Get the top co-occurring words and phrases from TV news clips matching a query — the vocabulary framing a topic on television. Returns the most frequent non-stopword terms from matching clips, with relative frequency scores (0–100, where 100 = the query term itself). Use to understand narrative framing, identify related concepts mentioned alongside a topic, or generate follow-up search terms. TV data spans 2009–October 2024.
Retrieve trending topics, keywords, and phrases currently dominating US television news across national networks. No query required — returns the top memes of the present news cycle. Updated every 15 minutes. Note: the GDELT TV archive feed stopped updating around October 2024; results from this endpoint reflect that most-recent archived data rather than a live feed.
Parameter validation constraints rely on prose description rather than schema enforcement. For example, startDatetime/endDatetime must be paired and follow YYYYMMDDHHMMSS format; timespan minimum is '15min'; but JSON Schema does not expose pattern, minLength, or conditional constraints (oneOf/dependentRequired). This allows invalid inputs past schema validation.
gdelt_get_tv_trending has no required parameters (empty input schema). While this is correct for the use case (no query needed), the description 'No query required, returns the top memes of the present news cycle' is only 62 characters and lacks guidance on when to call this vs. the search/timeline tools or how to use the output for follow-up actions.