GDELT

live NewsEvents

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

3 tools
0ms auth
free tier 50 calls/day

Tools

search_articles required: query

Recent matching articles. Supports advanced syntax (sourcecountry:, sourcelang:, theme:, near:).

Parameters
Name Type Description
query req string GDELT query string
timespan opt string e.g., "24h", "7d", "1m", "custom"
startdatetime opt string YYYYMMDDHHMMSS UTC
enddatetime opt string YYYYMMDDHHMMSS UTC
sort opt string HybridRel | DateDesc | DateAsc | ToneDesc | ToneAsc
max_records opt number 1-250 (default 25)
Try it
timeline_tone required: query

Daily average tone (-100..+100) over time for a GDELT query.

Parameters
Name Type Description
query req string GDELT query string
timespan opt string Default 1m
startdatetime opt string YYYYMMDDHHMMSS
enddatetime opt string YYYYMMDDHHMMSS
Try it
timeline_volume required: query

Daily article volume (% of total news) over time for a GDELT query.

Parameters
Name Type Description
query req string GDELT query string
timespan opt string Default 1m
startdatetime opt string YYYYMMDDHHMMSS
enddatetime opt string YYYYMMDDHHMMSS
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":{"query": "hello"}}}'

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", {"query":"example"});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("global database of events, language, and tone — 100+ languages, 15-min refresh");