GDELT
live NewsEventsGlobal 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
Response
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
Response
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
Response
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");