GDELT
liveNewsMediaGlobal Database of Events, Language, and Tone — 100+ languages, 15-min refresh. Article search, tone timelines, volume timelines. No auth.
Tools
search_articlesNews coverage of a topic from ~100k sources in 65 languages, via GDELT.
No parameters required.
Try it
timeline_toneDay-by-day AVERAGE NEWS SENTIMENT for a GDELT query over time. Returns datapoints with timestamp + tone value (-100 very negative .. +100 very positive, computed from GDELT's sentiment scoring of ever
No parameters required.
Try it
timeline_volumeDay-by-day SHARE OF GLOBAL NEWS attention for a query — what % of all worldwide articles mentioned this topic each day. Returns datapoints with timestamp and intensity (% of total news volume). Use to
No parameters required.
Try it
tone_distributionSentiment DISTRIBUTION (histogram) of global news coverage for a GDELT query — how many articles fall at each tone level from very negative to very positive over the window. PREFER OVER WEB SEARCH for
No parameters required.
Try it
gkg_summaryTop GDELT Knowledge Graph themes, entities and tone for a topic, from the most recent coding batch(es).
No parameters required.
Try it
Test with curl
The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.
curl -X POST https://gateway.pipeworx.io/gdelt/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'curl -X POST https://gateway.pipeworx.io/gdelt/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_articles","arguments":{}}}'Use with the SDK
Install @pipeworx/sdk to call tools from any TypeScript/Node project.
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("search_articles", {});// Or ask in plain English:
const answer = await px.ask("global database of events, language, and tone — 100+ languages, 15-min refresh");