Global Database of Events, Language, and Tone (free, no auth) — MCP server for searching global news articles, tracking sentiment over time, and monitoring news volume via GDELT 2.0 API
Three well-named tools with clear, actionable descriptions (150-200 chars each). All tools have complete input schemas with typed properties and descriptions. search_articles includes an enum constraint on 'sort' parameter. However, output schemas are not formally documented, only inferred from code comments. Parameter descriptions lack format constraints (e.g., YYYYMMDDHHMMSS format stated in description but not in schema). No error handling guidance or recovery paths documented. Missing tool annotations (readOnlyHint, idempotentHint). All three tools are READ_ONLY but this is not declared in the tool definition.
Search global news articles indexed by GDELT 2.0. Returns recent matches with URL, title, domain, source country, language, tone (-100..+100), and image. Use the query language: plain words AND together, "quotes" for phrases, parens for OR groups, "-word" to exclude, "sourcecountry:US" / "sourcelang:eng" / "theme:TERROR" / "near:Paris~50" for advanced filters.
Day-by-day average tone (-100 very negative .. +100 very positive) for a GDELT query over time. Returns datapoints with timestamp and tone value. Useful for tracking sentiment shifts around a topic, person, or place.
Day-by-day article volume as % of total news for a GDELT query. Returns datapoints with timestamp and intensity. Useful for spotting topic spikes and comparing news attention across periods.
Output schemas not formally documented. Code comments describe return structure but no JSON Schema provided. LLMs cannot reliably parse or chain results without explicit output schema.
Tool annotations missing. All three tools are READ_ONLY and idempotent, but readOnlyHint and idempotentHint are not declared in tool definitions. Agents cannot infer safety properties.
No error handling guidance. gdeltFetch() throws generic errors ('GDELT error', 'non-JSON'). Agents receive no recovery hints, should suggest 'check query syntax' or 'retry with different timespan'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter format constraints not in schema. 'startdatetime' and 'enddatetime' require YYYYMMDDHHMMSS format (stated in description) but no pattern or format constraint in JSON Schema. LLMs may pass invalid formats.
No pagination or result limits documented for search_articles. max_records defaults to 25 and caps at 250, but no guidance on when to paginate or how to handle large result sets. Response structure (articles array) lacks total_count or next_cursor.