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