GDELT

liveNewsMedia

Global Database of Events, Language, and Tone — 100+ languages, 15-min refresh. Article search, tone timelines, volume timelines. No auth.

4tools
0msauth
free tier50 calls/day

Tools

search_articles

News coverage of a topic from ~100k sources in 65 languages, via GDELT.

No parameters required.

▶Try it
timeline_tone

Day-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_volume

Day-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_distribution

Sentiment 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.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/gdelt/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
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.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("search_articles", {});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("global database of events, language, and tone — 100+ languages, 15-min refresh");