Skip to main content
Glama

Server Details

Search and analyze global news coverage and US TV transcripts via the GDELT Project APIs.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/gdelt-mcp-server
GitHub Stars
2
Server Listing
@cyanheads/gdelt-mcp-server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 9 of 9 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource or analytic view: article search, TV search, TV clips, TV context, TV trending, station listing, coverage timeline, coverage breakdown, and tone distribution. Where overlap exists (coverage_timeline mode:tone vs tone_distribution), the descriptions explicitly call out the difference, so an agent can select correctly.

Naming Consistency5/5

All tools follow a consistent gdelt_verb_noun pattern (get_, search_, list_), using lowercase with underscores. The verb and object combination is predictable and readable, with no mixed conventions.

Tool Count5/5

With 9 tools spanning search, retrieval, and analytics, the count is well within the ideal range. Each tool serves a distinct purpose without redundancy, making the set easy to navigate.

Completeness4/5

The tool surface covers the major GDELT DOC and TV APIs, including article search, TV search and clips, contextual analysis, and coverage metrics. Missing are the GDELT Events API and direct article-by-ID retrieval, but these are not core to the described workflows, and the 3-month DOC limit is an API constraint rather than a tool gap.

Available Tools

9 tools
gdelt_get_coverage_breakdownGet GDELT Coverage BreakdownA
Read-only
Inspect

Break down news coverage volume over time by source language or source country, returning a multi-series time series (one series per language or country). Shows which countries or languages drove early vs. late coverage — useful for tracing how a story propagated geographically or across language communities. Returns up to 10 series by total volume and aggregates the rest into an "Other" bucket, naming every series it folded in there under otherSeriesLabels — pass any of those labels back as the series input to get that series complete, ranked or not. Values are normalized: each point is the topic's share of media output, not an absolute article count. Small media markets with concentrated coverage therefore rank above large markets with diverse output — a high value means the topic dominated that source's coverage, not that it published the most articles. Use breakdownBy "country" with the signal-detection chain to map geographic attention, or "language" to detect non-English media surges.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query using GDELT syntax. Same operators as gdelt_search_articles: phrases, boolean OR, sourcecountry:, sourcelang:, domain:, theme:.
seriesNoExact series labels to additionally return in full, e.g. ["Portuguese", "Vietnamese"]. Take them verbatim from otherSeriesLabels (the series folded into "Other") or topSeries[].label in a response, or from the label list an unknown_series error prints. Each one comes back complete under selectedSeries, on top of the usual top-10 overview; a label that matches nothing is rejected rather than silently skipped. Omit to get the overview alone.
timespanNoTime window relative to now, e.g. "24h", "7d", "1m". Ignored when startDatetime/endDatetime are set. Maximum 3 months.
breakdownByYesBreakdown dimension: "language" for source language time series, "country" for source country time series.
endDatetimeNoEnd datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240131235959). Must pair with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240101000000). Must pair with endDatetime; supplying only one of the two is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeNoRecovery hint when no breakdown data was returned. Absent on successful responses.
topSeriesYesTop 10 series by total coverage volume.
totalCountYesTotal number of series returned before truncation to top 10.
breakdownByYesBreakdown dimension used for this response.
endDatetimeNoEchoed end datetime when provided (YYYYMMDDHHMMSS).
startDatetimeNoEchoed start datetime when provided (YYYYMMDDHHMMSS).
dateResolutionYesTemporal resolution of data points.
effectiveQueryYesEchoed query string for use in follow-up calls.
selectedSeriesNoComplete, untruncated time series for each label requested via the series input, in the order requested. Omitted when series was not supplied.
otherAggregatedNoCombined time series for all series beyond the top 10. Omitted when all series fit.
otherSeriesLabelsNoLabel of every series folded into otherAggregated, ranked by total volume — the identities the "Other" bucket would otherwise dissolve. Pass any of them to the series input to retrieve that series' complete data. Omitted when all series fit in the top 10.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the readOnlyHint annotation by disclosing key behaviors: values are normalized ('each point is the topic's share of media output, not an absolute article count'), the ranking implication ('Small media markets with concentrated coverage therefore rank above large markets'), and the 'Other' bucket aggregation with verbose labels. It also explains error handling for bad series labels in the schema, but the main description adds significant interpretive context. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: core function, use cases, bucket behavior, normalization caveat, and mode-specific guidance. It is front-loaded with the primary purpose in the first sentence, and no redundant or filler content is present. The length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, an output schema exists, and annotations declare read-only/open-world hints, the description still adds essential context: the normalization semantics, the 'Other' bucket behavior, and the practical interpretations for 'country' vs. 'language'. This fully equips an agent to select and invoke the tool correctly without needing to infer hidden behaviors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description adds meaning beyond the schema by explaining how to use the series parameter ('pass any of those labels back as the series input to get that series complete, ranked or not') and how breakdownBy choice affects interpretation (geographic vs. language surge). This supplemental guidance elevates it above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Break down news coverage volume over time by source language or source country, returning a multi-series time series.' This clearly distinguishes it from siblings like gdelt_get_coverage_timeline (which likely shows an overall timeline) and gdelt_get_tone_distribution (tone analysis). The verb 'break down' and the breakdownBy dimension make the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete usage guidance: 'Use breakdownBy "country" with the signal-detection chain to map geographic attention, or "language" to detect non-English media surges.' It also explains how to drill down into 'Other' series by passing labels back via the series parameter. However, it does not explicitly state when not to use this tool or name alternatives, so it stops short of the full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_get_coverage_timelineGet GDELT Coverage TimelineA
Read-only
Inspect

Retrieve a time series showing when news coverage of a topic spiked, or how average tone shifted over time. Use mode "volume" for normalized coverage intensity (% of all global coverage per timestep). Use mode "volume_with_articles" for the same signal plus the top articles that drove each spike — this is the primary signal-detection mode: a single call reveals both the spike and its cause, avoiding a follow-up gdelt_search_articles call. Use mode "tone" for average sentiment score per timestep (negative = hostile/fearful, positive = celebratory). Date resolution is automatically chosen based on timespan: hours for short windows, days for longer ones. In volume_with_articles mode the text surface shows the first 3 article links per timestep next to that timestep's true article count; name a timestep's date in points to render its full list. Note: DOC API covers only the last 3 months.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoTimeline mode: "volume" returns normalized coverage % per timestep, "volume_with_articles" returns volume plus top articles per spike (best for signal detection), "tone" returns average sentiment score per timestep.volume
queryYesSearch query using GDELT syntax. Same operators as gdelt_search_articles: phrases, boolean OR, sourcecountry:, sourcelang:, domain:, theme:, tone<.
pointsNoTimestep dates whose complete article list should be rendered in the text surface, e.g. ["2024-01-05T12:00:00Z"]. Take them verbatim from series[].data[].date in a prior response, or from the list an unknown_point error prints. Only affects volume_with_articles rendering — every timestep already carries its full article list in structuredContent regardless. Timesteps not named here show their first 3 links; a date matching no timestep is rejected rather than silently ignored.
timespanNoTime window relative to now, e.g. "24h", "7d", "1m". Ignored when startDatetime/endDatetime are set. Maximum 3 months.
smoothingNoSmoothing window in timesteps (0 = none, 1–5 = moving average width). Reduces noise for spotty topics.
endDatetimeNoEnd datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240131235959). Must pair with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240101000000). Must pair with endDatetime; supplying only one of the two is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYesTimeline mode used for this response.
noticeNoRecovery hint when no timeline data was returned. Absent on successful responses.
seriesYesOne or more time series (typically one for volume/tone, one per label for breakdowns).
totalCountYesTotal number of data points across all series.
endDatetimeNoEchoed end datetime when provided (YYYYMMDDHHMMSS).
startDatetimeNoEchoed start datetime when provided (YYYYMMDDHHMMSS).
dateResolutionYesTemporal resolution of the data points — hour for short windows, day for longer.
effectiveQueryYesEchoed query string for use in follow-up calls.
expandedPointsNoTimestep dates whose full article list is rendered in the text surface instead of the first 3, echoing the points input. Omitted when points was not supplied. Purely a rendering concern — structuredContent carries every article for every timestep either way.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the readOnly/openWorld annotations: automatic date-resolution selection, rendering behavior of article links (first 3 vs full list via points), handling of unknown timesteps, and the 3-month DOC API coverage limit. These details meaningfully inform invocation and interpretation without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a dense paragraph but front-loaded with the core purpose and mode guidance. Every sentence carries useful information, though the prose could be broken into bullets for readability. No wasted words, but slightly long given the redundant mode explanations already present in the schema descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description does not need to explain return values, and it covers key constraints (3-month limit, automatic date resolution, text-surface behavior, unknown_point errors). It provides enough operational context for correct use alongside seven parameters and rich annotations, making the tool complete to invoke blindly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description enriches the mode semantics (especially volume_with_articles as 'primary signal-detection mode') and explains the points parameter's rendering effects. It does not deeply explain smoothing or datetime pairing, as the schema already covers those, so it earns a 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Retrieve a time series') and clarifies the tool's scope via three distinct modes (volume, volume_with_articles, tone). It distinguishes itself from siblings by emphasizing time-series output and explicitly references gdelt_search_articles as an alternative that this tool can make unnecessary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance for each mode ('Use mode "volume" for...', 'Use mode "volume_with_articles" for...', 'Use mode "tone" for...'). It also names an alternative tool (gdelt_search_articles) and explains when this tool avoids a follow-up call, satisfying the when/when-not/alternatives criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_get_tone_distributionGet GDELT Tone DistributionA
Read-only
Inspect

Get the tonal distribution of articles matching a query as a histogram (bins approximately -30 to +30). Unlike a single average tone score, the histogram reveals whether coverage is uniformly negative, bimodal (some articles extremely positive and some extremely negative), or clustered near neutral. Each bin includes representative article URLs. Distinct from gdelt_get_coverage_timeline (mode: tone) — this is a snapshot distribution across all matching articles, not a time series. Use gdelt_get_coverage_timeline with mode "tone" to see how sentiment shifted over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query using GDELT syntax. Same operators as gdelt_search_articles: phrases, boolean OR, sourcecountry:, sourcelang:, domain:, theme:.
timespanNoTime window relative to now, e.g. "24h", "7d", "1m". Ignored when startDatetime/endDatetime are set. Maximum 3 months.
endDatetimeNoEnd datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240131235959). Must pair with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240101000000). Must pair with endDatetime; supplying only one of the two is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeNoRecovery hint when no tone data was returned. Absent on successful responses.
summaryYesSummary statistics derived from the histogram.
histogramYesTone histogram sorted from most negative to most positive bin.
totalCountYesTotal number of articles across all histogram bins.
endDatetimeNoEchoed end datetime when provided (YYYYMMDDHHMMSS).
startDatetimeNoEchoed start datetime when provided (YYYYMMDDHHMMSS).
effectiveQueryYesEchoed query string for use in follow-up calls.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the bar is lower. The description adds valuable behavioral context: bins are approximately -30 to +30, each bin includes representative article URLs, and the result is a snapshot distribution across all matching articles. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: defining the histogram, explaining why it's useful, and differentiating from the timeline tool. It is front-loaded with the core purpose and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema and complete parameter schema coverage, the description covers the remaining context: the nature of the histogram, the semantic difference from a single tone score, and the alternative tool for time-series analysis. It is complete for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description references 'query' but does not add new semantic detail beyond the schema, meeting the baseline but not exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: getting the tonal distribution of articles as a histogram, with a specific bin range (-30 to +30). It explicitly distinguishes itself from gdelt_get_coverage_timeline (mode: tone), making its unique function clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance by contrasting with a single average tone score and with gdelt_get_coverage_timeline. It even names the alternative tool and mode ('tone') for time-series sentiment analysis, which is a clear exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_get_tv_clipsGet GDELT TV ClipsA
Read-only
Inspect

Retrieve the top matching TV news clips (up to 3,000) for a query from the Internet Archive's Television News Archive. Each clip includes show name, station, air timestamp, a 15-second transcript excerpt, and a direct link to view the full one-minute clip. Use after gdelt_search_tv to read the actual transcript content driving a coverage spike. 3,000 is a hard per-call ceiling and GDELT offers no cursor: when a query fills it, split the run into narrower startDatetime/endDatetime windows — the response hands back the exact windows to use. Archive coverage spans 2009–October 2024.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: relevance (default), dateDesc (newest first), dateAsc (oldest first).relevance
queryYesSearch query for TV transcript content. Same TV operators as gdelt_search_tv: station:CNN, network:CBS, market:"National", show:"Anderson Cooper", context:"vaccine".
stationsNoStation IDs to filter to (e.g. ["CNN", "FOXNEWS"]). The GDELT TV API requires at least one station — supply it here, or embed a station: selector directly in query. Omitting both is rejected; it does not fall back to all stations. Use gdelt_list_tv_stations to see valid IDs.
timespanNoTime window, e.g. "1m", "6m". Ignored when startDatetime/endDatetime are set. TV data spans 2009–October 2024.
maxRecordsNoMaximum number of clips to return (1–3000). 3000 is GDELT's hard per-call ceiling, not a page size — there is no cursor past it, so a query that fills 3000 must be split into narrower startDatetime/endDatetime windows instead.
endDatetimeNoEnd datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20200131235959). Must pair with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20200101000000). Must pair with endDatetime; supplying only one of the two is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
clipsYesMatching TV clips sorted per the sort parameter.
noticeNoDisclosure that the maxRecords cap was reached and more clips may exist, naming the route to them — a higher maxRecords below the 3000 ceiling, or a narrower date window at it. Absent when the full result set fit under the cap.
totalCountYesNumber of clips returned.
effectiveQueryYesEchoed query string for use in follow-up calls.
continuationWindowsNoThe queried window halved, to re-run this query against one pair at a time when maxRecords is at its 3000 ceiling. The halves overlap by one second so no clip falls through the seam; a clip aired on that second can come back in both, so de-duplicate by archiveUrl. Absent unless the ceiling was reached with a window that is both known and wide enough to divide.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite readOnlyHint and openWorldHint annotations, the description adds critical behavioral context: the hard 3,000-per-call ceiling, the lack of a cursor, and the instruction to split queries using time windows. It also discloses the archive's coverage span (2009–October 2024) and the response's behavior of returning exact windows to use. This goes well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet information-dense. It front-loads the core purpose, then supplies relevant usage context, a key limitation, and a temporal boundary. Each sentence earns its place without redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 params, output schema), the description covers the tool's purpose, its role in the workflow (after gdelt_search_tv), the pagination limitation, and the archive's time span. The output schema handles return-value details, so the description remains focused on behavior and constraints, making it complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema documentation covers 100% of parameters with detailed descriptions, so baseline is 3. The description adds semantic value by linking the maxRecords ceiling to the startDatetime/endDatetime splitting strategy, which is not explicitly stated in the schema. This helps the agent understand how the parameters interact in practice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Retrieve') and resource ('top matching TV news clips'), and specifies what each clip includes. It also distinguishes the tool from siblings like gdelt_get_coverage_breakdown or gdelt_get_tv_trending by focusing on transcript content, making the tool's unique purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use after gdelt_search_tv', providing clear sequencing/context. It also gives practical guidance for handling the 3,000-clip ceiling by splitting into narrower startDatetime/endDatetime windows. However, it doesn't explicitly contrast with alternative sibling tools (e.g., when not to use gdelt_get_tv_context), so it stops short of full alternative differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_get_tv_contextGet GDELT TV ContextA
Read-only
Inspect

Get the top co-occurring words and phrases from TV news clips matching a query — the vocabulary framing a topic on television. Returns the most frequent non-stopword terms from matching clips, with relative frequency scores (0–100, where 100 = the query term itself). Use to understand narrative framing, identify related concepts mentioned alongside a topic, or generate follow-up search terms. TV data spans 2009–October 2024.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for TV transcript content. Same TV operators as gdelt_search_tv: station:CNN, network:CBS, market:"National", show:"Anderson Cooper", context:"vaccine".
stationsNoStation IDs to filter to (e.g. ["CNN", "FOXNEWS"]). The GDELT TV API requires at least one station — supply it here, or embed a station: selector directly in query. Omitting both is rejected; it does not fall back to all stations. Use gdelt_list_tv_stations to see valid IDs.
timespanNoTime window, e.g. "1m", "6m". Ignored when startDatetime/endDatetime are set. TV data spans 2009–October 2024.
endDatetimeNoEnd datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20200131235959). Must pair with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20200101000000). Must pair with endDatetime; supplying only one of the two is rejected. TV data spans 2009–October 2024.

Output Schema

ParametersJSON Schema
NameRequiredDescription
wordsYesCo-occurring terms sorted by score descending.
noticeNoRecovery hint when no context was found. Absent on successful responses.
totalCountNoNumber of clips from which co-occurrences were computed. Absent when the upstream API does not return a clip count.
effectiveQueryYesEchoed query string for use in follow-up calls.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, which covers safety. The description adds valuable behavioral detail beyond annotations: returns non-stopword terms, relative frequency scores 0–100 with 100 meaning the query term itself, and the TV data timespan (2009–October 2024). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: first sentence states purpose, second explains output format, third gives usage scenarios, and fourth adds temporal scope. No wasted sentences; every line earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, rich input schema, and annotations, the description covers purpose, output semantics, use cases, and data span. It doesn't need to explain return values or safety (already in schema/annotations). Slight repetition of the data span in the schema is minor, but overall the description is suitably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the input schema already provides rich parameter details (e.g., query operators, station requirements, datetime format rules). The description adds minimal parameter-specific meaning beyond 'matching a query,' so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get the top co-occurring words and phrases from TV news clips matching a query' and explains what it returns. It distinguishes itself from siblings like gdelt_search_tv (search results) and gdelt_get_tv_clips (clips) by focusing on vocabulary/framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: 'Use to understand narrative framing, identify related concepts mentioned alongside a topic, or generate follow-up search terms.' It does not explicitly name alternatives or exclusion criteria, but the use-case guidance is clear enough for an agent to decide when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_list_tv_stationsList GDELT TV StationsA
Read-only
Inspect

List all television stations available for TV search with their market, network, monitoring start date, and monitoring end date. Stations with an end date within the last 24 hours are flagged as active; stations with earlier end dates are discontinued. Use before querying to verify a station was active during the target time period, or to discover valid station IDs for the stations parameter in other TV tools. Most station monitoring ended October 2024 when the Internet Archive TV feed stopped updating.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
stationsYesAll TV stations sorted by station ID.
totalCountYesTotal number of stations in the list.
activeCountYesNumber of stations currently flagged as active.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description aligns with that. It adds valuable behavior beyond annotations: the flagging logic for active/discontinued stations based on 24-hour thresholds, and the critical context that monitoring ended October 2024. This transparency helps the agent interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, each delivering critical information: purpose, active/discontinued interpretation, usage context, and monitoring end date. It is front-loaded with the main purpose and contains no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless listing tool with an output schema, the description fully covers what the tool does, how to interpret its results, when to use it, and an important external constraint (Internet Archive TV feed ending). The output schema handles return format specifics, so no additional return-value explanation is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter semantics are a non-issue. The baseline for no parameters is 4, and the description appropriately focuses on the output semantics (what station metadata is returned and how to interpret the dates).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear verb and resource: 'List all television stations available for TV search' and specifies the returned fields (market, network, monitoring dates). It is distinct from sibling tools like search_tv or get_tv_clips, as it focuses on station metadata, not content or analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use before querying to verify a station was active during the target time period, or to discover valid station IDs.' It does not explicitly mention when not to use it or name alternatives, but the guidance is specific and actionable within the context of sibling TV tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_search_articlesSearch GDELT ArticlesA
Read-only
Inspect

Search the last 3 months of global news coverage (65+ languages) using the GDELT DOC API. Returns up to 250 articles with URL, title, source domain, language, country, publication date, and social image URL. Query supports full GDELT syntax: phrases ("bird flu"), boolean OR ((flu OR pandemic)), source country (sourcecountry:china), source language (sourcelang:spanish), domain (domain:who.int), GKG theme (theme:DISEASE_OUTBREAK), tone filter (tone<-5 for negative), proximity (near20:"flu virus"), and repeat (repeat3:"outbreak"). 250 is a hard per-call ceiling and GDELT offers no cursor: when a query fills it, split the run into narrower startDatetime/endDatetime windows — the response hands back the exact windows to use. Note: this API covers only the most recent 3 months — use gdelt_search_tv for historical TV transcripts back to 2009.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: relevance (default), date (newest first), social (most socially shared).relevance
queryYesSearch query. Supports GDELT operators: phrases ("bird flu"), boolean OR ((flu OR pandemic)), sourcecountry:china, sourcelang:spanish, domain:who.int, theme:DISEASE_OUTBREAK, tone<-5, near20:"flu virus", repeat3:"outbreak".
timespanNoTime window relative to now, e.g. "24h", "7d", "1m". Ignored when startDatetime/endDatetime are set. Maximum is 3 months (the full DOC API window). Defaults to the full 3-month window.
maxRecordsNoMaximum number of articles to return (1–250). 250 is GDELT's hard per-call ceiling, not a page size — there is no cursor past it, so a query that fills 250 must be split into narrower startDatetime/endDatetime windows instead.
endDatetimeNoEnd of date range in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240131235959). Must be supplied together with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart of date range in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20240101000000). Must be supplied together with endDatetime; supplying only one of the two is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeNoDisclosure that the maxRecords cap was reached and more articles may exist, naming the route to them — a higher maxRecords below the 250 ceiling, or a narrower date window at it. Absent when the full result set fit under the cap.
articlesYesMatching articles sorted per the sort parameter.
timespanNoEchoed timespan parameter when provided.
totalCountYesNumber of articles returned in this response.
effectiveQueryYesEchoed query string for use in follow-up calls.
continuationWindowsNoThe queried window halved, to re-run this query against one pair at a time when maxRecords is at its 250 ceiling. The halves overlap by one second so no article falls through the seam; an article published on that second can come back in both, so de-duplicate by url. Absent unless the ceiling was reached with a window that is both known and wide enough to divide.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnlyHint and openWorldHint annotations, the description adds crucial behavioral context: the hard 250 per-call ceiling, absence of cursor pagination, the need to split runs into narrower windows, and that the response returns the exact windows to use. This goes well beyond annotations and no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical but every sentence carries meaningful information: scope, fields, query syntax, ceiling behavior, and sibling alternative. It is well front-loaded with the core purpose, and the density of actionable content justifies the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully accounts for the tool's complexity: it explains the return fields, query operators, pagination limitations, date window handling, and relationship to sibling tools. With the output schema also present, an agent has everything needed to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the 250 limit in relation to maxRecords, mandating startDatetime/endDatetime pairing, and providing rich query syntax examples that the schema only lists without contextual detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource ('Search the last 3 months of global news coverage using the GDELT DOC API') and differentiates from siblings by naming the TV search alternative. It lists return fields, making the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides both when to use this tool (for recent 3 months of news) and when to use an alternative ('use gdelt_search_tv for historical TV transcripts back to 2009'). Also gives operational guidance on splitting queries when hitting the 250-article ceiling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdelt_search_tvSearch GDELT TV NewsA
Read-only
Inspect

Search US television news closed captions (2009–October 2024, 150+ stations) for spoken mentions of a query. Returns a normalized per-station time series showing relative airtime devoted to the topic. Use the stations parameter to select networks (e.g. ["CNN", "FOXNEWS", "MSNBC"]) — the TV API requires at least one station, supplied either there or as a station: selector inside query. TV query also supports in-query operators: station:CNN, network:CBS, market:"National", show:"Anderson Cooper 360", context:"vaccine". Important: most station monitoring ended October 2024 — use gdelt_list_tv_stations to verify active date ranges before querying recent events.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for TV transcript content. Supports TV operators: station:CNN, network:CBS, market:"National", show:"Anderson Cooper", context:"vaccine". Boolean OR and phrase operators also work.
stationsNoStation IDs to filter to (e.g. ["CNN", "FOXNEWS", "MSNBC"]). The GDELT TV API requires at least one station — supply it here, or embed a station: selector directly in query. Omitting both is rejected; it does not fall back to all stations. Use gdelt_list_tv_stations to see valid station IDs.
timespanNoTime window, e.g. "1m", "6m", "1y". Ignored when startDatetime/endDatetime are set. TV data spans 2009–October 2024.
normalizeNoWhen true (default), values are normalized as % of total airtime, enabling cross-station comparison. When false, returns raw coverage volume.
smoothingNoSmoothing window in timesteps (0 = none). Reduces noise for sporadic topics.
endDatetimeNoEnd datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20200131235959). Must pair with startDatetime; supplying only one of the two is rejected.
startDatetimeNoStart datetime in GDELT format YYYYMMDDHHMMSS — exactly 14 digits, no separators (e.g. 20200101000000). Must pair with endDatetime; supplying only one of the two is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noticeNoRecovery hint when no TV coverage was found. Absent on successful responses.
seriesYesOne series per station or combined national coverage.
timeRangeYesDate range spanned by the returned data.
normalizedYesTrue when values are normalized coverage percentages.
totalCountYesNumber of station series returned.
dateResolutionYesTemporal resolution of data points.
effectiveQueryYesEchoed query string for use in follow-up calls.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, openWorld), the description discloses a major limitation (station monitoring ended October 2024), a hard requirement (must provide at least one station, omitting both is rejected), and a pairing constraint for startDatetime/endDatetime. It also clarifies normalization vs. raw values. These are non-obvious behaviors an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet information-dense. It front-loads the core purpose, then explains return value, gives concrete operator examples, and closes with a critical caveat. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a rich output schema, the description still covers essential context: coverage timeframe, 150+ stations, station requirement, operator syntax, normalization behavior, and the October 2024 shutdown. It also links to a sibling tool for coverage validation, making it self-sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all 7 parameters with detailed descriptions (100% coverage), so the description adds little semantic value beyond the schema. The main description reinforces the station: operator and station requirement, but these are already documented in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search US television news closed captions... for spoken mentions of a query.' It clearly differentiates from siblings like gdelt_search_articles (TV vs. articles) and gdelt_list_tv_stations (search vs. list). The return type (normalized per-station time series) further pins down the function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool (for TV closed captions), gives operational prerequisites (station required, either via parameter or query selector), and recommends the alternative gdelt_list_tv_stations to verify coverage date ranges. This is concrete, actionable usage guidance beyond mere purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides access to the GDELT DOC 2.0 API for searching global news articles and images across 65 languages with customizable timespans and query options.
    Last updated
    2
    27
    2
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    A remote, read-only MCP server for global media intelligence using GDELT DOC 2.0 API, enabling search and analysis of multilingual news coverage, tone, and attention trends.
    Last updated
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.