Skip to main content
Glama
AKzar1el

TrendPulse - Google News & Trends

mcp-trendpulse

MCP Python License mcp-trendpulse MCP server MCPVault: verified

TrendPulse is a Python Model Context Protocol (MCP) server for researching current news and search-interest trends. It combines Google News discovery and article extraction with Google Trends analysis so MCP clients can inspect what is trending, compare keyword momentum, explore related demand, and add current-news context to research workflows.

The project currently ships as a community/self-hosted MCP server and also contains the implementation for a separate hosted TrendPulse by DigestSEO surface for remote MCP clients such as ChatGPT and Codex. The hosted layer uses a smaller, goal-oriented tool surface while the community server keeps the full low-level research toolkit available to developers.

Project status: the local/community server is usable today. The DigestSEO-hosted MCP and public OpenAI plugin are not released yet and should not be treated as available endpoints.

Engineering context: TrendPulse is part of the DigestSEO MCP ecosystem. It complements mcp-gsc for Google Search Console data, mcp-geo for AI visibility, and mcp-web-validator for technical web validation. The broader architecture is documented in the DigestSEO MCP Suite engineering case study.

TrendPulse Demand Brief

Need a fast evidence check before choosing a topic, keyword, market, product angle, or content bet? Tomi offers a human-produced TrendPulse Demand Brief for EUR 49.

For one decision, the brief covers up to five keywords/phrases and two geographic markets using TrendPulse's open-source research capabilities plus current public sources: search-interest direction, relative momentum, related demand, useful news context, and three concrete implications. Target turnaround is within 24 hours after payment is confirmed and the inputs are supplied.

See the exact scope and request format, read a public sample brief, or email info@tomiseregi.si with the subject TrendPulse Demand Brief [TP-RS1].

The paid brief is optional. The Community MCP remains free and unchanged, and the TP-RS1 marker is only an inbound attribution marker; no hidden telemetry is added to the MCP.

Related MCP server: NewsIQ MCP

What TrendPulse can do

News research

  • Search Google News by keyword, location, topic, or publisher domain.

  • Retrieve top news stories.

  • Resolve Google News links and extract article content.

  • Fall back from normal HTTP retrieval to Playwright/Chromium for difficult pages.

  • Optionally summarize article text with MCP client sampling, with local NLP as a fallback.

Trend research

  • Retrieve current trending terms for a geographic market.

  • Pull Google Trends interest-over-time data for one or more keywords.

  • Calculate keyword growth over custom windows such as 3M or 1Y.

  • Rank live trends by volume or growth.

  • Inspect interest by country, region, city, or DMA where supported.

  • Explore related queries, related topics, suggestions, and category IDs.

  • Compare Google Search, YouTube Search, News Search, Image Search, and Google Shopping trend properties where supported by the underlying provider.

Community and hosted architecture

TrendPulse is being developed with two deliberate surfaces:

Surface

Purpose

Status

Community MCP

Full Python MCP server for local use, development, self-hosting, and integrations with MCP-compatible clients.

Available in this repository

TrendPulse by DigestSEO

Managed remote MCP for ChatGPT/Codex and a future public OpenAI plugin with a smaller, task-oriented tool surface.

In development

The community server remains useful independently. The hosted edition will reuse the same core trend-research concepts while adding the deployment, reliability, authentication, observability, and product integration needed for a managed service.

The implemented hosted tool surface is intentionally higher level than the community API and centers on goals such as:

  • discover_trends

  • analyze_keyword_trend

  • compare_keyword_trends

  • discover_related_demand

  • get_trend_context

  • find_seo_opportunities

These names describe the hosted ChatGPT Apps/MCP interface; they remain separate from the current Community MCP tool names.

Installation

Run from PyPI with uvx (recommended)

TrendPulse is published on PyPI, so the shortest install path is:

uvx mcp-trendpulse

To run the current repository head instead of the published package:

uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulse

Install with pip from a checkout

git clone https://github.com/AKzar1el/mcp-trendpulse.git
cd mcp-trendpulse
python -m pip install .
python -m mcp_trendpulse

Browser fallback

News/article tools can fall back to Playwright when ordinary retrieval cannot extract a usable article. Installing the Python playwright package does not install Chromium automatically.

For local use:

playwright install chromium

For Linux environments that also require browser system dependencies:

playwright install --with-deps chromium

Trend-only operations do not inherently require Chromium.

Client configuration

Claude Desktop and Claude Code

Claude Code plugin packaging is included in .claude-plugin/plugin.json with its MCP definition in .mcp.json. The Community MCP remains local/stdin-based and runs through uvx mcp-trendpulse.

Claude Desktop

Using the published PyPI package with uvx:

{
  "mcpServers": {
    "mcp-trendpulse": {
      "command": "uvx",
      "args": ["mcp-trendpulse"]
    }
  }
}

VS Code

Install TrendPulse in VS Code

Requires uv/uvx. The install runs the published Community MCP package from PyPI over local stdio.

For workspace-level configuration, put this in .vscode/mcp.json. The same top-level servers shape is used by the VS Code user-profile mcp.json for a global configuration.

{
  "servers": {
    "mcp-trendpulse": {
      "command": "uvx",
      "args": ["mcp-trendpulse"]
    }
  }
}

ChatGPT desktop, Codex CLI, and IDE extension

OpenAI's local ChatGPT desktop and Codex clients support local stdio MCP servers and share the same MCP configuration on a Codex host. Add the published TrendPulse package once with:

codex mcp add mcp-trendpulse -- uvx mcp-trendpulse

The same local server is then available to the ChatGPT desktop app, Codex CLI, and the Codex IDE extension. In ChatGPT desktop, you can also open Settings -> MCP Servers and add an STDIO server with command uvx mcp-trendpulse, then restart the app. This runs the published Community MCP package from PyPI; it does not use the unreleased hosted TrendPulse endpoint. ChatGPT on the web is separate and does not read this local Codex MCP configuration.

Cursor and portable Agent Plugins

This repository includes an Agent Plugins 1.0 manifest at the repository root. Compatible clients such as Cursor and GitHub Copilot can load the same portable plugin.json + mcp.json package.

Cursor also supports global and project MCP configuration. Add the server to the relevant mcp.json configuration:

{
  "mcpServers": {
    "mcp-trendpulse": {
      "command": "uvx",
      "args": ["mcp-trendpulse"]
    }
  }
}

Devin CLI and Devin Desktop

Devin CLI plugins can load Claude plugin packages and Agent Plugins 1.0 packages directly from GitHub. TrendPulse already ships both compatible layouts (.claude-plugin/plugin.json + .mcp.json, and root plugin.json + mcp.json). Install it with:

devin plugins install AKzar1el/mcp-trendpulse

Devin requires a signed-in CLI session to manage plugins. The installed TrendPulse plugin starts the published Community MCP locally over stdio with uvx mcp-trendpulse; it does not use the unreleased hosted TrendPulse endpoint. The same plugin is available in Devin Desktop after installation.

Kiro

Add to Kiro

Requires uv/uvx. The install runs the published Community MCP package from PyPI; it does not use the unreleased hosted surface.

Privacy: TrendPulse Community MCP Privacy Notice ยท Support: info@tomiseregi.si

LM Studio

Add TrendPulse to LM Studio

Requires uv/uvx. LM Studio runs the published Community MCP package locally over stdio; no hosted TrendPulse service is required.

ChatGPT web and other cloud MCP clients

The repository now includes a dedicated stateless Streamable HTTP ASGI entry point at mcp_trendpulse.asgi:app. This is separate from the Community stdio entry point, which remains unchanged.

For controlled local/private testing you can run the ASGI app with Uvicorn or use the provided container. See deploy/README.md for the hardened container, Host/Origin allowlists, Chromium sandbox requirements, health/readiness endpoints, and reverse-proxy notes.

The DigestSEO-hosted endpoint and public ChatGPT app are still not released. Hosted deployments now support fail-closed Clerk OAuth authentication; do not expose the remote transport publicly unless Clerk issuer/JWKS/audience settings, the public base URL, and the Host/Origin allowlists are configured for that deployment.

Configuration

TrendPulse loads environment variables from the process environment and from a local .env file when present.

Useful variables include:

HTTP_PROXY=http://your-proxy-address:port
HTTPS_PROXY=http://your-proxy-address:port
GOOGLE_NEWS_LANGUAGE=en
GOOGLE_NEWS_COUNTRY=US
GOOGLE_TRENDS_DELAY=2.0

GOOGLE_NEWS_LANGUAGE and GOOGLE_NEWS_COUNTRY select the Google News language/edition used by all news-discovery tools; defaults remain en and US. GOOGLE_TRENDS_DELAY controls the request delay used by the current Trends provider. Proxy variables can be useful when the upstream service rate-limits or blocks a particular network.

Remote deployments also support TRENDPULSE_HTTP_PATH, TRENDPULSE_HTTP_ALLOWED_HOSTS, TRENDPULSE_HTTP_ALLOWED_ORIGINS, and TRENDPULSE_BROWSER_SANDBOX. The container enables Chromium sandboxing explicitly; local Community runs retain the Playwright-compatible default unless you opt in.

Do not commit secrets, private proxy credentials, or machine-specific .env files.

MCP tools

The community MCP server currently exposes 16 tools.

News tools

Tool

Purpose

get_news_by_keyword

Find recent news articles matching a keyword.

get_news_by_location

Find recent news associated with a location.

get_news_by_topic

Find recent news for a supported Google News topic.

get_top_news

Retrieve top Google News stories.

get_news_by_site

Find recent news from a specific publisher domain.

get_article_content

Download, validate, extract, and optionally summarize one article URL.

Trend tools

Tool

Purpose

get_trending_terms

Retrieve current trending terms for a geographic target.

get_trends

Retrieve interest-over-time points for one or more keywords.

get_growth

Calculate search-interest growth over requested windows.

get_ranked_trends

Rank current trends by growth or volume.

get_top_trends

Retrieve a top-trends feed without supplying a keyword.

get_interest_by_region

Compare keyword interest across geographic regions.

get_related_queries

Retrieve top and rising related search queries.

get_related_topics

Retrieve top and rising related Google Trends topics.

get_suggestions

Resolve autocomplete/topic suggestions for a query.

get_categories

Search or page through Google Trends category IDs and names before using cat.

Example: explicit trend window

get_trends accepts an explicit timeframe. Supplying one is preferable when you need reproducible comparisons.

{
  "keyword": ["technical SEO audit", "AI SEO audit"],
  "geo": "US",
  "source": "google search",
  "timeframe": "today 12-m",
  "cat": 0
}

Supported provider ranges include standard windows such as today 12-m and today 5-y, relative windows such as today 90-d, all, and exact date ranges such as 2021-01-01 2026-01-01.

Google Trends values are normalized interest scores. Do not interpret a 0-100 interest series as absolute search volume.

CLI

The separate Click CLI exposes a smaller news-oriented command set than the MCP server:

uv run mcp-trendpulse-cli --help

Current CLI commands:

brief-pack
keyword
location
top
topic
trending

brief-pack emits the deterministic trend/growth evidence table used for Demand Brief fulfillment. It intentionally leaves the final interpretation and recommendations to the human-produced brief.

The CLI and MCP surfaces are intentionally documented separately because they do not expose the same command set.

Development

Install the project with its development dependencies using your preferred Python environment, then run the unit suite:

python -m pytest

The default pytest configuration excludes live integration tests.

Run live provider tests explicitly with:

python -m pytest tests/integration -m integration

Browser-marked integration tests require Playwright Chromium to be installed.

Run Ruff checks with:

ruff check .

MCP Inspector

Run the published-from-GitHub server through the MCP Inspector:

npx @modelcontextprotocol/inspector uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulse

For a local checkout:

npx @modelcontextprotocol/inspector uv run mcp-trendpulse

Packaging

A GitHub Actions workflow builds and publishes Python distributions through PyPI Trusted Publishing when a GitHub release is published. The current stable package can be run with uvx mcp-trendpulse; use the GitHub uvx --from ... form only when you intentionally want repository-head code.

Security notes

Article retrieval is an outbound network feature and is treated as untrusted input. The implementation validates HTTP(S) targets, rejects private and non-routable destinations, checks redirect targets, enforces response-size limits, and applies browser-route validation when Playwright is used.

If you deploy TrendPulse remotely, retain these controls and add deployment-level rate limiting, request timeouts, observability, and resource limits rather than relying only on application defaults.

For responsible disclosure instructions, see SECURITY.md.

Roadmap

Current production-readiness priorities are:

  1. Keep documentation, packaging metadata, and generated MCP manifests coherent with the live tool surface.

  2. Keep CI, package validation, and dependency/runtime coverage aligned with what users actually install.

  3. Preserve provider boundaries so upstream sources can be changed without rewriting the MCP layer.

  4. Harden and operate the existing stateless Streamable HTTP transport while preserving local stdio operation.

  5. Refine the existing smaller hosted tool surface for ChatGPT/Codex against real deployment and buyer evidence.

  6. Complete provider authorization and integrate the hosted service with the DigestSEO application and operational stack.

  7. Package and test the hosted MCP as an OpenAI plugin only after the managed service is production-ready.

License

MIT. See LICENSE.

Available Tools

16 tools
get_article_contentA
Read-only

Download and parse one specific news article when you already have an article URL. Use it to retrieve article text or metadata or summarize that URL; do not use it for discovery - use the news search tools instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the news article to download and parse.
full_dataNoReturn full data for the article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, and the description is consistent with those. It adds useful behavioral context beyond annotations by explaining that the tool retrieves article text or metadata and can summarize a given URL, clarifying what the operation actually performs.

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?

Two tight sentences with no filler. The core operation is front-loaded, and the exclusionary guidance is placed right after the primary use case.

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, combined with full schema coverage, a rich set of annotations, and an output schema, gives an agent everything needed to invoke the tool correctly. The only real decision pointโ€”discovery versus single-article retrievalโ€”is addressed explicitly.

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 parameters. The description adds context around the URL being a specific article URL rather than a discovery query, but it does not materially enrich the parameter semantics beyond what the schema provides.

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 specific verb and resource: download and parse one specific news article using an article URL. It also explicitly contrasts itself with the discovery-focused sibling tools, making its scope unambiguous.

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 clearly states when to use the tool (when you already have an article URL) and when not to use it ('do not use it for discovery - use the news search tools instead'). This gives an agent an explicit selection rule relative to the sibling tools.

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

get_categoriesA
Read-only

Return a bounded page of Google Trends category IDs and names for use in the cat parameter of trend tools. Use query to find categories by name and offset/limit to page through broader results; do not guess category IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum categories to return in this page.
queryNoOptional case-insensitive substring to match against category names.
offsetNoZero-based offset into the filtered category list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable context about pagination ('bounded page', 'offset/limit to page through broader results') and the warning not to guess IDs. 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?

Two sentences, zero waste. The primary purpose is front-loaded, and the usage guidance follows immediately. The warning 'do not guess category IDs' is a valuable addition that earns its place. No redundant phrasing.

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?

The tool is simple with three optional parameters and a known output schema (implied). The description covers purpose, usage, and a critical warning. For a straightforward lookup tool, nothing essential is missing. An agent can correctly invoke it with the provided information.

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 all three parameters are already documented. The description reiterates that query is for name matching and offset/limit for paging, which adds slight contextual meaning but does not introduce new semantics beyond the schema. The baseline of 3 is appropriate given full schema coverage.

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 returns a bounded page of Google Trends category IDs and names, explicitly linking them to the cat parameter of trend tools. It distinguishes itself from sibling tools by focusing solely on category data, and the verb 'Return' plus resource specification is 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 gives explicit guidance on when to use query vs offset/limit for paging, and warns against guessing category IDs, implying this tool should be used to obtain valid IDs. It lacks explicit exclusion of alternatives, but the context of 'for use in the cat parameter' clearly defines the intended use case.

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

get_growthA
Read-only

Estimate momentum for one or more known keywords across requested growth windows. Use this when percentage growth is the goal; use get_trends when the user needs the underlying historical time series.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNoGeographic region code (e.g. 'US').US
sourceNoSearch source.google search
keywordYesSearch keyword(s) to analyze; comparison lists support 1-5 keywords.
percent_growthNoTimeframes to calculate growth (e.g. ['3M', '1Y']).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds the read-only computation framing and the 'known keywords' constraint, which is useful but not extensive. It doesn't address behaviors like handling unknown keywords or data availability, but with annotations carrying the safety burden, this is adequate.

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?

Two sentences, zero waste. The core purpose is front-loaded and the routing guidance is delivered in a compact conditional. Every clause earns its place.

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 an output schema present, the description need not explain return values. It covers purpose, routing, and the percentage-growth goal; the schema covers parameters and constraints (e.g., 1-5 keywords). Nothing an agent needs to invoke this correctly is missing.

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 all four parameters are already documented. The description adds only the contextual link that percent_growth is the tool's output goal, which maps to the percent_growth parameter but adds no format or syntax details beyond 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 uses a specific verb-resource pair ('Estimate momentum for one or more known keywords across requested growth windows') and explicitly differentiates from get_trends by stating the percentage-growth focus. An agent can distinguish this tool from its 15 siblings without opening schemas.

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?

Provides explicit routing: 'Use this when percentage growth is the goal; use get_trends when the user needs the underlying historical time series.' This names the alternative and the condition that selects between them, leaving nothing to inference.

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

get_interest_by_regionA
Read-only

Return geographic Google Trends interest for one or more known keywords at country, region, city, or DMA resolution. Use this to compare where demand is strongest; use get_trends for interest over time instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
catNoCategory ID (default: 0 for all).
geoNoGeographic region code (e.g. 'US' or empty '' for worldwide).US
gpropNoGoogle property filter.
keywordsYesSearch keyword(s) to analyze.
timeframeNoTimeframe for search volume analysis (e.g., 'today 12-m').today 12-m
resolutionNoGeographic resolution.REGION
inc_low_volNoInclude regions with low search volume.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds the geographic resolution scope and the 'known keywords' nuance, which is useful but not extensive. It doesn't describe return format or pagination, but that's covered by the output schema and 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?

Two sentences with zero wasted words. The core purpose is front-loaded, and the alternative tool is named in the second sentence. This is an exemplary concise structure.

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?

The tool has 7 parameters but the schema fully describes each, and an output schema exists so return values don't need to be explained. The description covers the primary usage distinction (geographic vs. time-based) and the resolution options. It is complete for an agent to call correctly; the only minor gap is not stating that keywords must be exact known terms, but that is implied by 'known keywords' and the schema's string type.

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 all parameters already have clear descriptions. The description mentions 'known keywords' and resolution levels, but these are already implied in the schema. With full schema coverage, the baseline of 3 is appropriate; the description adds minimal extra meaning beyond what the schema provides.

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 specific verb ('Return'), a resource ('Google Trends interest'), and the scope ('geographic ... at country, region, city, or DMA resolution'). It explicitly differentiates from the sibling get_trends by noting that get_trends handles interest over time, so an agent can immediately tell this tool apart.

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 gives explicit guidance: 'Use this to compare where demand is strongest; use get_trends for interest over time instead.' This tells the agent when to use this tool and when to use an alternative, leaving nothing to inference.

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

get_news_by_keywordA
Read-only

Find recent Google News articles for a free-form keyword or phrase. Use this for ad-hoc subject searches; use get_news_by_topic for a predefined topic category or get_news_by_site for one publisher.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoNumber of days to look back for articles.
keywordYesSearch term to find articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the context of searching recent Google News, but little additional runtime behavior beyond that. It doesn't describe summarization/full_data defaults, though schema handles parameter details.

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 two sentences long, leads with the core purpose, and uses the second sentence only to route to alternatives. Every clause 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?

Given comprehensive parameter descriptions, an output schema, and read-only annotations, the definition is fully sufficient. It also positions the tool among siblings, so an agent has everything needed to select and invoke it correctly.

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 five parameters, including defaults and constraints. The description reinforces that the keyword is free-form and ad-hoc, but no extra semantics are needed.

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 starts with the verb 'Find' and a clear resource, 'recent Google News articles for a free-form keyword or phrase', and immediately distinguishes itself from get_news_by_topic and get_news_by_site. An agent can tell exactly what this tool does relative to its siblings.

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 scopes the tool to 'ad-hoc subject searches' and names the alternative tools for predefined topics and single-publisher searches. This is direct when-to-use guidance with alternatives.

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

get_news_by_locationA
Read-only

Find recent Google News articles about a place-focused location such as a city, state, or country. Use this when geography is the primary filter; use get_news_by_keyword for general subject searches.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoNumber of days to look back for articles.
locationYesName of city/state/country.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about the geographic scoping of the search, but does not disclose additional behavioral details such as result ordering, default summarization behavior, or external API dependencies. This is acceptable but not rich.

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?

Two sentences with no filler. The core purpose is front-loaded, and the comparative usage guidance is delivered economically. Every clause earns its place.

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 annotations covering safety, a fully described schema, and an output schema present, the description does everything needed for selection and invocation. It states what the tool doesaintstrikes, when to use it, and the main alternative, so nothing critical is missing.

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 parameters are already well documented in the input schema. The description does not add new parameter-level meaning beyond stating that location is geographic, which the schema also conveys. 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: 'Find recent Google News articles' and narrows scope to 'place-focused location such as a city, state, or country.' It explicitly contrasts with get_news_by_keyword, helping an agent distinguish it from siblings.

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 gives direct when-to-use guidance: 'Use this when geography is the primary filter.' It names the alternative tool for general subject searches, get_news_by_keyword, leaving no ambiguity about the main routing decision.

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

get_news_by_siteA
Read-only

Find recent Google News articles from one publisher domain. Use this when the user wants source-specific coverage; use get_news_by_keyword for cross-publisher subject search.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesDomain of the news site, e.g. 'cnn.com'.
periodNoNumber of days to look back for articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description need not repeat safety. The description adds no extra behavioral context like pagination or rate limits, but for a read-only tool with output schema, it doesn't need to. The 'recent' qualifier and 'one publisher domain' scope are more purpose than behavior.

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?

Two sentences, zero filler. The main purpose is front-loaded, and the alternative tool is named in the next clause.

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, complete parameter descriptions, and annotations covering safety, the description leaves nothing critical missing. It names the primary alternative for differentiation, and the domain-scope phrasing inherently distinguishes it from location/topic siblings.

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 fully documents the parameters. The description adds no parameter-specific meaning beyond the schema, yielding the baseline score of 3.

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?

States a specific verb and resource: 'Find recent Google News articles from one publisher domain.' It also names the sibling it is not: 'use get_news_by_keyword for cross-publisher subject search,' which differentiates it from an alternative.

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 says when to use: 'when the user wants source-specific coverage' and which alternative to choose: 'use get_news_by_keyword for cross-publisher subject search.' This provides clear decision guidance.

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

get_news_by_topicA
Read-only

Find recent Google News articles from a predefined Google News topic category. Use this for topic category browsing such as BUSINESS, TECHNOLOGY, or SPORTS; use get_news_by_keyword for a free-form query.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic to search for articles.
periodNoNumber of days to look back for articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful context about recency and predefined categories, but does not disclose behaviors such as how invalid or unknown topic values are handled. With annotation coverage present, this is adequate but not exceptional.

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?

Two sentences with no filler: the first states what the tool does, and the second provides usage routing to the sibling tool. The information is front-loaded and every word 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 annotations, complete input schema, and output schema, the definition is largely sufficient. The only notable gap is that it does not point the agent to get_categories for discovering valid predefined topic values, though the examples and 'predefined' wording partially compensate.

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 description coverage is 100%, so the parameters are already documented. The description adds meaningful semantic value to the required 'topic' parameter by clarifying it must be a predefined category and supplying concrete examples, which goes beyond the schema's generic 'Topic to search for articles.'

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 verb ('Find') and resource ('recent Google News articles from a predefined Google News topic category'), and it explicitly distinguishes the tool from get_news_by_keyword. The examples BUSINESS, TECHNOLOGY, and SPORTS make the purpose immediately recognizable.

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: 'Use this for topic category browsing' and names the exact alternative for free-form queries, get_news_by_keyword. This leaves no ambiguity about which tool fits which scenario.

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

get_suggestionsA
Read-only

Return Google Trends autocomplete suggestions for a seed keyword. Use this for lightweight autocomplete or entity candidates; use get_related_queries when you need top or rising demand signals.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesQuery string to autocomplete.
languageNoLanguage code, e.g. 'en'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds the 'lightweight' qualifier, which hints at performance characteristics but does not disclose other behavioral traits like rate limits, pagination, or response format. Since annotations are present, the burden is lower, and the description provides minimal added value beyond 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 two sentences, each earning its place. The primary purpose is front-loaded, followed by usage guidance that references a sibling tool. There is no repetition or extraneous information, making it highly concise and well-structured.

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's simplicity (2 parameters, one required), the presence of an output schema, and annotations covering safety, the description is largely complete. It explains the tool's function and when to use it over get_related_queries. A minor gap is that it does not explicitly state that the output is a list of suggestions, but the output schema and tool name make this evident. Overall, an agent has sufficient context to call it correctly.

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 fully documents both parameters (keyword and language). The description mentions 'seed keyword' but that is essentially the same as the keyword parameter, adding no new syntax, formatting, or semantic details beyond the schema. Thus, the description does not significantly enhance parameter understanding.

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 specific action ('Return Google Trends autocomplete suggestions') and identifies the resource ('seed keyword'). It also distinguishes itself from the sibling tool get_related_queries by referencing its purpose and scope, making it clear what this tool does and what it does not.

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 explicitly provides when-to-use ('lightweight autocomplete or entity candidates') and when-to-use-alternative ('use get_related_queries when you need top or rising demand signals'). This directly routes the agent to the correct tool based on the need, with a named alternative.

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

get_top_newsA
Read-only

Return general headline and top-news stories from Google News without a keyword or topic seed. Use this for a broad news snapshot; use the keyword, location, topic, or site tools when the user gives a filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoNumber of days to look back for top articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds that results come from Google News and are unfiltered, but it does not describe details like result aggregation, freshness, or the relationship between full_data and summarize. With annotations present, this is adequate but not rich.

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?

Two sentences with no filler. The core behavior is front-loaded, and the usage guidance adds meaningful routing information without redundancy.

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 read-only news tool with a complete input schema, an output schema, and strong annotations, the description covers the essential context: what it returns, when to use it, and which sibling to use instead when a filter is present. Nothing critical is missing for an agent to invoke it correctly.

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 documents all four parameters. The description does not add parameter-specific semantics, but it does clarify the absence of a keyword/topic seed, which helps explain why no such parameter exists. 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 states a specific verb and resource: 'Return general headline and top-news stories from Google News without a keyword or topic seed.' It clearly distinguishes this from the sibling keyword, location, topic, and site news tools by emphasizing the lack of filters.

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 says to use this tool for 'a broad news snapshot' and to use the keyword, location, topic, or site tools when the user gives a filter. This provides direct when-to-use and when-not-to-use guidance with named alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.2.37
    • Changedget_categories3 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 50,
        +  "description": "Maximum categories to return in this page.",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Zero-based offset into the filtered category list.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "anyOf": [
        +    {
        +      "minLength": 1,
        +      "pattern": ".*\\S.*",
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional case-insensitive substring to match against category names."
        +}
  2. 7 tool updatesv0.2.30
    • Changedget_news_by_keyword2 fields changed
      • addedInput schema / properties / keyword / minLength
        Added value: +1
      • addedInput schema / properties / keyword / pattern
        Added value: +".*\\S.*"
    • Changedget_news_by_location2 fields changed
      • addedInput schema / properties / location / minLength
        Added value: +1
      • addedInput schema / properties / location / pattern
        Added value: +".*\\S.*"
    • Changedget_news_by_site2 fields changed
      • addedInput schema / properties / site / minLength
        Added value: +1
      • addedInput schema / properties / site / pattern
        Added value: +".*\\S.*"
    • Changedget_news_by_topic2 fields changed
      • addedInput schema / properties / topic / minLength
        Added value: +1
      • addedInput schema / properties / topic / pattern
        Added value: +".*\\S.*"
    • Changedget_related_queries2 fields changed
      • addedInput schema / properties / keyword / minLength
        Added value: +1
      • addedInput schema / properties / keyword / pattern
        Added value: +".*\\S.*"
    • Changedget_related_topics2 fields changed
      • addedInput schema / properties / keyword / minLength
        Added value: +1
      • addedInput schema / properties / keyword / pattern
        Added value: +".*\\S.*"
    • Changedget_suggestions2 fields changed
      • addedInput schema / properties / keyword / minLength
        Added value: +1
      • addedInput schema / properties / keyword / pattern
        Added value: +".*\\S.*"
  3. 7 tool updatesv0.2.22
    • Changedget_growth4 fields changed
      • changedInput schema / properties / keyword / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "maxItems": 5,
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / keyword / description
        Previous value: -"Search keyword(s) to analyze."New value: +"Search keyword(s) to analyze; comparison lists support 1-5 keywords."
      • changedInput schema / properties / source / description
        Previous value: -"Search source: 'google search', 'youtube search', etc."New value: +"Search source."
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "google search",
        +  "youtube search",
        +  "news search",
        +  "image search",
        +  "google shopping"
        +]
    • Changedget_interest_by_region5 fields changed
      • changedInput schema / properties / gprop / description
        Previous value: -"Google property filter (e.g., '', 'youtube', 'news', 'images', 'froogle')."New value: +"Google property filter."
      • addedInput schema / properties / gprop / enum
        Added value: +[
        +  "",
        +  "youtube",
        +  "news",
        +  "images",
        +  "froogle"
        +]
      • changedInput schema / properties / keywords / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "maxItems": 5,
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / resolution / description
        Previous value: -"Geographic resolution: 'COUNTRY', 'REGION', 'CITY', or 'DMA'."New value: +"Geographic resolution."
      • addedInput schema / properties / resolution / enum
        Added value: +[
        +  "COUNTRY",
        +  "REGION",
        +  "CITY",
        +  "DMA"
        +]
    • Changedget_ranked_trends4 fields changed
      • changedInput schema / properties / sort / description
        Previous value: -"Field to sort by: 'wow_pct_change', 'volume'."New value: +"Field to sort by."
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "wow_pct_change",
        +  "volume"
        +]
      • addedInput schema / properties / source / const
        Added value: +"google search"
      • changedInput schema / properties / source / description
        Previous value: -"Search source: 'google search'."New value: +"Search source."
    • Changedget_related_queries2 fields changed
      • changedInput schema / properties / gprop / description
        Previous value: -"Google property filter (e.g., '', 'youtube', 'news', 'images', 'froogle')."New value: +"Google property filter."
      • addedInput schema / properties / gprop / enum
        Added value: +[
        +  "",
        +  "youtube",
        +  "news",
        +  "images",
        +  "froogle"
        +]
    • Changedget_related_topics2 fields changed
      • changedInput schema / properties / gprop / description
        Previous value: -"Google property filter (e.g., '', 'youtube', 'news', 'images', 'froogle')."New value: +"Google property filter."
      • addedInput schema / properties / gprop / enum
        Added value: +[
        +  "",
        +  "youtube",
        +  "news",
        +  "images",
        +  "froogle"
        +]
    • Changedget_top_trends2 fields changed
      • changedInput schema / properties / type / description
        Previous value: -"Type of trends: 'Google Trends' (realtime), 'Daily Trends' (daily)."New value: +"Type of trends feed."
      • addedInput schema / properties / type / enum
        Added value: +[
        +  "Google Trends",
        +  "Daily Trends"
        +]
    • Changedget_trends6 fields changed
      • changedInput schema / properties / data_mode / description
        Previous value: -"Legacy resolution hint used only when timeframe is omitted: 'weekly', 'daily', 'monthly'."New value: +"Legacy resolution hint used only when timeframe is omitted."
      • addedInput schema / properties / data_mode / enum
        Added value: +[
        +  "weekly",
        +  "daily",
        +  "monthly"
        +]
      • changedInput schema / properties / keyword / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "maxItems": 5,
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / keyword / description
        Previous value: -"Search keyword(s) to analyze."New value: +"Search keyword(s) to analyze; comparison lists support 1-5 keywords."
      • changedInput schema / properties / source / description
        Previous value: -"Search source: 'google search', 'youtube search', 'news search', 'image search', 'google shopping'."New value: +"Search source."
      • addedInput schema / properties / source / enum
        Added value: +[
        +  "google search",
        +  "youtube search",
        +  "news search",
        +  "image search",
        +  "google shopping"
        +]
  4. 14 tool updatesv0.2.13
    • Changedget_article_content1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_categories1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_growth1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_interest_by_region1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_news_by_keyword1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_news_by_location1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_news_by_site1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_news_by_topic1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_ranked_trends1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_suggestions1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_top_news1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_top_trends1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_trending_terms1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
    • Changedget_trends1 field changed
      • removedOutput schema / description
        Removed value: -"Generic wrapper for non-object return types."
  5. 16 tool updates
    • First observedget_article_content
    • First observedget_categories
    • First observedget_growth
    • First observedget_interest_by_region
    • First observedget_news_by_keyword
    • First observedget_news_by_location
    • First observedget_news_by_site
    • First observedget_news_by_topic
    • First observedget_ranked_trends
    • First observedget_related_queries
    • First observedget_related_topics
    • First observedget_suggestions
    • First observedget_top_news
    • First observedget_top_trends
    • First observedget_trending_terms
    • First observedget_trends

TDQS

A4.4/5.0

Scored across 16 tools

Disambiguation5/5

Each tool has a distinct purpose with clear boundaries. Overlapping tools like get_top_trends vs. get_ranked_trends and get_trending_terms vs. get_trends are explicitly differentiated in their descriptions, ensuring agents can select correctly.

Naming Consistency5/5

All tools follow a consistent 'get_' + noun pattern, with modifiers like 'top', 'trending', 'ranked', or 'by_' for filters. The naming is uniform and predictable, making the tool surface easy to navigate.

Tool Count4/5

At 16 tools, it is slightly above the typical well-scoped range of 3-15, but still reasonable given the breadth of news and trends functionality. Each tool earns its place, covering distinct discovery, analysis, and retrieval operations.

Completeness5/5

The tool set covers the full lifecycle of news and trend exploration: discovery (by keyword, location, topic, site, top news), current and historical trends, ranking, growth, regional interest, related queries/topics, suggestions, and article content retrieval. No obvious gaps exist for the stated purpose.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing news article mention volume data, weekly series, growth percentages, and a live Google News feed as an AI tool.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An AI-powered news aggregator MCP server that fetches live news from multiple sources, provides AI summaries via Claude, and performs sentiment analysis and trending topic detection.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A persistent news intelligence MCP server that enables AI agents to fetch, store, deduplicate, embed, and semantically query news from Google News across 141 countries and 41 languages.
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that exposes Google Trends data via BigQuery, enabling LLMs to query top search terms, rising terms, and compare term interest over time for different countries.
    -