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
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");