mcp-trendpulse
mcp-trendpulse
TrendPulse es un servidor de Model Context Protocol (MCP) en Python para investigar noticias actuales y tendencias de interés de búsqueda. Combina el descubrimiento de Google News y la extracción de artículos con el análisis de Google Trends para que los clientes MCP puedan inspeccionar qué está en tendencia, comparar el impulso de palabras clave, explorar la demanda relacionada y añadir contexto de noticias actuales a los flujos de trabajo de investigación.
El proyecto se distribuye actualmente como un servidor MCP comunitario/autoalojado y también contiene la implementación de una superficie separada TrendPulse by DigestSEO alojado para clientes MCP remotos como ChatGPT y Codex. La capa alojada utiliza una superficie de herramientas más pequeña y orientada a objetivos, mientras que el servidor comunitario mantiene el kit completo de herramientas de investigación de bajo nivel disponible para los desarrolladores.
Estado del proyecto: el servidor local/comunitario es utilizable hoy. El MCP alojado por DigestSEO y el plugin público de OpenAI aún no se han publicado y no deben tratarse como endpoints disponibles.
Contexto de ingeniería: TrendPulse forma parte del ecosistema MCP de DigestSEO. Complementa a mcp-gsc para los datos de Google Search Console, a mcp-geo para la visibilidad en IA y a mcp-web-validator para la validación web técnica. La arquitectura general está documentada en el estudio de caso de ingeniería de DigestSEO MCP Suite.
Qué puede hacer TrendPulse
Investigación de noticias
Buscar en Google News por palabra clave, ubicación, tema o dominio de publicador.
Recuperar las noticias principales.
Resolver enlaces de Google News y extraer el contenido de los artículos.
Recurrir a Playwright/Chromium cuando la recuperación HTTP normal no funcione con páginas difíciles.
Resumir opcionalmente el texto de los artículos mediante el muestreo del cliente MCP, con NLP local como alternativa.
Investigación de tendencias
Recuperar los términos de tendencia actuales para un mercado geográfico.
Obtener datos de interés a lo largo del tiempo de Google Trends para una o más palabras clave.
Calcular el crecimiento de palabras clave en ventanas personalizadas como 3M o 1Y.
Clasificar las tendencias en vivo por volumen o crecimiento.
Inspeccionar el interés por país, región, ciudad o DMA cuando esté disponible.
Explorar consultas relacionadas, temas relacionados, sugerencias e identificadores de categoría.
Comparar las propiedades de tendencia de Google Search, YouTube Search, News Search, Image Search y Google Shopping cuando el proveedor subyacente lo admita.
Related MCP server: NewsIQ MCP
Arquitectura comunitaria y alojada
TrendPulse se está desarrollando con dos superficies intencionadas:
Superficie | Propósito | Estado |
Community MCP | Servidor MCP completo en Python para uso local, desarrollo, autoalojamiento e integraciones con clientes compatibles con MCP. | Disponible en este repositorio |
TrendPulse by DigestSEO | MCP remoto gestionado para ChatGPT/Codex y un futuro plugin público de OpenAI con una superficie de herramientas más pequeña y orientada a tareas. | En desarrollo |
El servidor comunitario sigue siendo útil de forma independiente. La edición alojada reutilizará los mismos conceptos centrales de investigación de tendencias y añadirá el despliegue, la fiabilidad, la autenticación, la observabilidad y la integración de producto necesarios para un servicio gestionado.
La superficie de herramientas alojada implementada es intencionadamente de mayor nivel que la API comunitaria y se centra en objetivos como:
discover_trendsanalyze_keyword_trendcompare_keyword_trendsdiscover_related_demandget_trend_contextfind_seo_opportunities
Estos nombres describen la interfaz alojada de ChatGPT Apps/MCP; siguen siendo independientes de los nombres actuales de las herramientas del MCP comunitario.
Instalación
Ejecutar directamente desde GitHub con uvx (recomendado)
El paquete aún no se ha publicado en PyPI, por lo que la vía de instalación más directa es:
uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulseCuando exista una versión publicada en PyPI, la forma más corta será:
uvx mcp-trendpulseInstalar con pip desde un clon del repositorio
git clone https://github.com/AKzar1el/mcp-trendpulse.git
cd mcp-trendpulse
python -m pip install .
python -m mcp_trendpulseRespaldo con navegador
Las herramientas de noticias/artículos pueden recurrir a Playwright cuando la recuperación normal no puede extraer un artículo utilizable. Instalar el paquete playwright de Python no instala Chromium automáticamente.
Para uso local:
playwright install chromiumPara entornos Linux que también requieran dependencias de sistema del navegador:
playwright install --with-deps chromiumLas operaciones que solo usan tendencias no requieren Chromium por naturaleza.
Configuración del cliente
Claude Desktop
Usando uvx directamente desde GitHub:
{
"mcpServers": {
"mcp-trendpulse": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/AKzar1el/mcp-trendpulse.git",
"mcp-trendpulse"
]
}
}
}VS Code
{
"mcp": {
"servers": {
"mcp-trendpulse": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/AKzar1el/mcp-trendpulse.git",
"mcp-trendpulse"
]
}
}
}
}Cursor
Cursor admite configuración MCP global y por proyecto. Añade el servidor a la configuración mcp.json correspondiente:
{
"mcpServers": {
"mcp-trendpulse": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/AKzar1el/mcp-trendpulse.git",
"mcp-trendpulse"
]
}
}
}ChatGPT y otros clientes MCP en la nube
El repositorio ahora incluye un punto de entrada ASGI HTTP Streamable sin estado dedicado en mcp_trendpulse.asgi:app. Este es independiente del punto de entrada stdio comunitario, que permanece sin cambios.
Para pruebas locales/privadas controladas, puedes ejecutar la aplicación ASGI con Uvicorn o usar el contenedor proporcionado. Consulta deploy/README.md para el contenedor endurecido, las listas de permisos de Host/Origin, los requisitos de sandbox de Chromium, los endpoints de health/readiness y las notas sobre el proxy inverso.
El endpoint alojado por DigestSEO y la aplicación pública de ChatGPT aún no se han publicado. Los despliegues alojados ahora admiten autenticación Clerk OAuth de cierre ante fallos; no expongas el transporte remoto públicamente a menos que estén configurados los ajustes de issuer/JWKS/audience de Clerk, la URL base pública y las listas de permisos de Host/Origin para ese despliegue.
Configuración
TrendPulse carga las variables de entorno del entorno del proceso y de un archivo local .env cuando existe.
Algunas variables útiles son:
HTTP_PROXY=http://your-proxy-address:port
HTTPS_PROXY=http://your-proxy-address:port
GOOGLE_TRENDS_DELAY=2.0GOOGLE_TRENDS_DELAY controla el retardo de solicitud que usa el proveedor de Trends actual. Las variables de proxy pueden ser útiles cuando el servicio ascendente limita la tasa o bloquea una red concreta.
Los despliegues remotos también admiten TRENDPULSE_HTTP_PATH, TRENDPULSE_HTTP_ALLOWED_HOSTS, TRENDPULSE_HTTP_ALLOWED_ORIGINS y TRENDPULSE_BROWSER_SANDBOX. El contenedor habilita explícitamente el sandbox de Chromium; las ejecuciones comunitarias locales conservan el valor predeterminado compatible con Playwright a menos que optes por activarlo.
No hagas commit de secretos, credenciales de proxy privadas ni archivos .env específicos de una máquina.
Herramientas MCP
El servidor MCP comunitario expone actualmente 16 herramientas.
Herramientas de noticias
Tool | Propósito |
| Buscar artículos de noticias recientes que coincidan con una palabra clave. |
| Buscar noticias recientes asociadas a una ubicación. |
| Buscar noticias recientes de un tema de Google News compatible. |
| Recuperar las principales noticias de Google News. |
| Buscar noticias recientes de un dominio de publicador específico. |
| Descargar, validar, extraer y opcionalmente resumir la URL de un artículo. |
Herramientas de tendencias
Tool | Propósito |
| Recuperar los términos de tendencia actuales para un objetivo geográfico. |
| Recuperar puntos de interés a lo largo del tiempo para una o más palabras clave. |
| Calcular el crecimiento del interés de búsqueda en las ventanas solicitadas. |
| Clasificar las tendencias actuales por crecimiento o volumen. |
| Recuperar un feed de principales tendencias sin proporcionar una palabra clave. |
| Comparar el interés de palabras clave entre regiones geográficas. |
| Recuperar consultas de búsqueda relacionadas principales y en ascenso. |
| Recuperar temas relacionados principales y en ascenso de Google Trends. |
| Resolver sugerencias de autocompletado/temas para una consulta. |
| Recuperar identificadores y nombres de categorías de Google Trends. |
Ejemplo: ventana de tendencia explícita
get_trends acepta un timeframe explícito. Proporcionarlo es preferible cuando necesitas comparaciones reproducibles.
{
"keyword": ["technical SEO audit", "AI SEO audit"],
"geo": "US",
"source": "google search",
"timeframe": "today 12-m",
"cat": 0
}Los rangos admitidos por el proveedor incluyen ventanas estándar como today 12-m y today 5-y, ventanas relativas como today 90-d, all, y rangos de fechas exactos como 2021-01-01 2026-01-01.
Los valores de Google Trends son puntuaciones de interés normalizadas. No interpretes una serie de interés de 0 a 100 como volumen de búsqueda absoluto.
CLI
La CLI Click independiente expone un conjunto de comandos más reducido y orientado a noticias que el servidor MCP:
uv run mcp-trendpulse-cli --helpComandos actuales de la CLI:
keyword
location
top
topic
trendingLas superficies CLI y MCP se documentan intencionadamente por separado porque no exponen el mismo conjunto de comandos.
Desarrollo
Instala el proyecto con sus dependencias de desarrollo usando tu entorno Python preferido y, a continuación, ejecuta la suite de pruebas unitarias:
python -m pytestLa configuración predeterminada de pytest excluye las pruebas de integración en vivo.
Ejecuta explícitamente las pruebas en vivo del proveedor con:
python -m pytest tests/integration -m integrationLas pruebas de integración marcadas como de navegador requieren que Playwright Chromium esté instalado.
Ejecuta las comprobaciones de Ruff con:
ruff check .MCP Inspector
Ejecuta el servidor publicado desde GitHub a través del MCP Inspector:
npx @modelcontextprotocol/inspector uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulsePara un clon local:
npx @modelcontextprotocol/inspector uv run mcp-trendpulseEmpaquetado
Ya existe un flujo de trabajo de GitHub Actions para compilar y publicar distribuciones de Python mediante PyPI Trusted Publishing cuando se publica una versión de GitHub. Hasta que exista la primera versión del paquete, usa el comando uvx --from ... de GitHub que se muestra arriba.
Notas de seguridad
La recuperación de artículos es una función de red saliente y se trata como entrada no confiable. La implementación valida destinos HTTP(S), rechaza destinos privados y no enrutables, comprueba los destinos de redirección, aplica límites de tamaño de respuesta y realiza validación de la ruta del navegador cuando se usa Playwright.
Si implementas TrendPulse de forma remota, conserva estos controles y añade limitación de tasa a nivel de despliegue, tiempos de espera de solicitud, observabilidad y límites de recursos, en lugar de depender solo de los valores predeterminados de la aplicación.
Hoja de ruta
El trabajo actual de preparación para producción se centra en:
Mantener la documentación, los metadatos de empaquetado y los manifiestos MCP generados coherentes con la superficie de herramientas actual.
Añadir integración continua para pruebas unitarias y comprobaciones estáticas.
Separar el acceso a los proveedores de la lógica de dominio de TrendPulse para que los proveedores puedan cambiarse sin reescribir la capa MCP.
Añadir un transporte HTTP remoto de producción manteniendo la operación stdio local.
Diseñar una superficie de herramientas alojada más pequeña y de alto nivel para ChatGPT/Codex.
Integrar el servicio alojado con la aplicación DigestSEO y su pila operativa.
Empaquetar y probar el MCP alojado como plugin de OpenAI solo después de que el servicio esté listo para producción.
Licencia
MIT. Consulta LICENSE.
Available Tools
16 toolsget_article_contentARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the news article to download and parse. | |
| full_data | No | Return full data for the article. If False a summary should be created by setting the summarize flag | |
| summarize | No | Generate a summary of the article, will first try LLM Sampling but if unavailable will use nlp |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 useful context about downloading/parsing and summarizing, but does not disclose behavior around invalid URLs, paywalls, or fallback outcomes. This is acceptable given the annotations, but not especially rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the core action and condition, then immediately give the routing exclusion. Every sentence earns its place and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-URL read tool with full schema coverage and an output schema, the description covers use case, scope, and alternatives. It does not discuss edge cases like malformed URLs or unavailable articles, but these are minor gaps for this simple safe-read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 three parameters well. The description adds a high-level hint about retrieving text/metadata or summarizing, but does not materially improve on the schema's own descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's specific verb ('Download and parse') and resource ('one specific news article... when you already have an article URL'). It also explicitly scopes this away from discovery, distinguishing it from sibling search/trend tools even without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use condition ('when you already have an article URL') and a clear exclusion with the alternative ('do not use it for discovery - use the news search tools instead'). This is direct and actionable for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoriesARead-only
Return Google Trends category IDs and names for use in the cat parameter of trend tools. Call this when a category filter is needed; do not guess category IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so this is clearly a safe read-only operation. The description adds context that the tool provides authoritative category identifiers for use in other trend tools, but it does not disclose additional behavioral traits such as output volume, ordering, or whether categories are pre-defined or dynamic. Given the annotations cover the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The purpose is stated first, and the usage instruction is compressed into a direct, actionable second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only lookup tool with an output schema and clear annotations, the description provides enough information for an agent to call it correctly. It states what is returned, why it is needed, and when to invoke it. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so there are no parameter semantics to clarify. The baseline for no-parameter tools is 4, and the description does usefully explain that the returned IDs are intended for the cat parameter of other trend tools, which helps an agent understand how to use the results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return'), a concrete resource (Google Trends category IDs and names), and its intended use (the cat parameter of trend tools). This clearly distinguishes it from sibling tools that retrieve news or trend data, so an agent can tell this is a lookup/reference tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call it: 'when a category filter is needed.' It also warns against guessing category IDs, which is actionable guidance that steers the agent toward this tool rather than improvising a category value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_growthARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Geographic region code (e.g. 'US'). | US |
| source | No | Search source: 'google search', 'youtube search', etc. | google search |
| keyword | Yes | Search keyword(s) to analyze. | |
| percent_growth | No | Timeframes to calculate growth (e.g. ['3M', '1Y']). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds limited behavioral context beyond that. The word 'estimate' hints at approximate computation, but the description does not detail rate limits, data freshness, or edge cases. With annotations shouldering the main safety burden, a 3 reflects adequate but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero redundancy. The primary purpose is front-loaded, and the alternative tool mention is placed second as a helpful routing cue. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a complete input schema (100% coverage), an output schema, and read-only annotations, the description sufficiently covers the tool's purpose, usage boundary, and relationship to a sibling. Nothing essential for an agent to select and call the tool correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's phrase 'growth windows' loosely aligns with the percent_growth parameter, but it does not add syntax, defaults, or formatting details beyond what the schema already provides. No additional parameter meaning is contributed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Estimate momentum') plus a clear resource ('one or more known keywords') and scope ('across requested growth windows'). It explicitly distinguishes itself from get_trends by contrasting percentage growth with underlying historical time series, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a direct selection rule: 'Use this when percentage growth is the goal; use get_trends when the user needs the underlying historical time series.' This explicitly identifies when to choose this tool over a named sibling, leaving no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interest_by_regionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| cat | No | Category ID (default: 0 for all). | |
| geo | No | Geographic region code (e.g. 'US' or empty '' for worldwide). | US |
| gprop | No | Google property filter (e.g., '', 'youtube', 'news', 'images', 'froogle'). | |
| keywords | Yes | Search keyword(s) to analyze. | |
| timeframe | No | Timeframe for search volume analysis (e.g., 'today 12-m'). | today 12-m |
| resolution | No | Geographic resolution: 'COUNTRY', 'REGION', 'CITY', or 'DMA'. | REGION |
| inc_low_vol | No | Include regions with low search volume. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds useful scope context ('known keywords', geographic resolution) but does not disclose deeper behavioral traits such as normalized scoring, empty results behavior, or API limitations beyond what the output schema and annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence states the core function and scope; the second provides usage guidance and a direct alternative. The most important routing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a 100% schema-covered parameter list, an output schema, and helpful annotations, the description only needs to clarify selection logic. It does that by identifying the geographic comparison use case and naming get_trends as the time-series alternative. No critical information for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without parameter details in the description. The description adds the 'known keywords' nuance and repeats resolution values already present in the schema, but it does not substantially enrich parameter semantics beyond structured documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Return geographic Google Trends interest' for one or more known keywords at defined resolutions. It clearly differentiates from the sibling get_trends by framing this tool as geographic/comparison-oriented rather than time-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use signal ('compare where demand is strongest') and an explicit alternative ('use get_trends for interest over time instead'). This gives an agent enough routing information without needing to inspect sibling schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_by_keywordARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Number of days to look back for articles. | |
| keyword | Yes | Search term to find articles. | |
| full_data | No | Return full data for each article. If False a summary should be created by setting the summarize flag | |
| summarize | No | Generate a summary of the article, will first try LLM Sampling but if unavailable will use nlp | |
| max_results | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 querying Google News and accepting free-form phrases, matching openWorldHint. However, it does not disclose pagination, result ordering, or how 'recent' relates to the period parameter, so behavioral richness beyond annotations is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: the first states what the tool does, and the second provides sibling routing. Every sentence earns its place, and the most important purpose information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with an output schema, full parameter documentation in the schema, and clear sibling differentiation, the description covers what an agent needs to select and invoke it. Missing details like result format are handled by the output schema, and safety is covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented. The phrase 'free-form keyword or phrase' reinforces the keyword parameter's intent but adds little beyond the schema's 'Search term to find articles.' With full schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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' for a free-form keyword or phrase. It also distinguishes itself from siblings by naming get_news_by_topic and get_news_by_site as the tools for predefined categories and single publishers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('ad-hoc subject searches') and points to concrete alternatives: get_news_by_topic for predefined topic categories and get_news_by_site for a single publisher. This gives an agent clear routing guidance without needing to inspect sibling schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_by_locationARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Number of days to look back for articles. | |
| location | Yes | Name of city/state/country. | |
| full_data | No | Return full data for each article. If False a summary should be created by setting the summarize flag | |
| summarize | No | Generate a summary of the article, will first try LLM Sampling but if unavailable will use nlp | |
| max_results | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, non-destructive, and open-world behavior. The description adds useful contextual behavior: it targets place-based Google News searches and emphasizes geography as the filter. It does not add details about return formatting, but the output schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry the essential purpose and usage routing with no filler. The core scoping statement is front-loaded, and the alternative-tool note is concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has full schema coverage, has annotations for safety, and has an output schema. The description sufficiently explains when to use it and how it differs from its sibling, so nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is adequately documented in the schema itself. The description reinforces the location-centric purpose but does not need to repeat parameter semantics; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Find'), a specific resource ('recent Google News articles'), and a clear scope ('place-focused location such as a city, state, or country'). It also explicitly distinguishes this tool from get_news_by_keyword, so an agent can differentiate them immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use guidance: geography is the primary filter. It names the alternative tool, get_news_by_keyword, for general subject searches, making the routing decision explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_by_siteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Domain of the news site, e.g. 'cnn.com'. | |
| period | No | Number of days to look back for articles. | |
| full_data | No | Return full data for each article. If False a summary should be created by setting the summarize flag | |
| summarize | No | Generate a summary of the article, will first try LLM Sampling but if unavailable will use nlp | |
| max_results | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations cover the key safety profile (readOnlyHint=true, destructiveHint=false), so the description does not need to restate that. It adds useful context about scoping to a publisher domain and recency, but it does not mention pagination, rate limits, or how results are structured beyond what the output schema likely provides. This is adequate but not especially rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the core function and scope, the second gives sibling routing. Every sentence earns its place and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only news retrieval tool with a detailed input schema and output schema, the description provides sufficient context. It specifies the domain-scoping behavior, the recency framing, and the main alternative, so an agent can decide when to call this tool and what to expect at a high level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clearly. The description adds a 'publisher domain' and 'recent' framing that loosely map to the site and period parameters, but it does not provide substantive parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving recent Google News articles from a single publisher domain, with a specific verb ('Find') and resource ('Google News articles'). It also distinguishes itself from get_news_by_keyword, making the tool's scope immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('when the user wants source-specific coverage') and directly names the alternative for cross-publisher subject search ('use get_news_by_keyword'). This gives an agent clear routing guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_by_topicARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic to search for articles. | |
| period | No | Number of days to look back for articles. | |
| full_data | No | Return full data for each article. If False a summary should be created by setting the summarize flag | |
| summarize | No | Generate a summary of the article, will first try LLM Sampling but if unavailable will use nlp | |
| max_results | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 the tool's scope ('predefined topic') and recency ('recent'), but it doesn't discuss result volume, limits, or behavior beyond what annotations and schema imply. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is stated first, followed immediately by usage guidance and the sibling distinction. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is largely complete because the output schema exists, annotations cover safety, and the description provides clear purpose and routing. However, it doesn't point the agent to get_categories for discovering valid topic values, which would be helpful since the topic field has no enum or list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minor value by giving examples of valid topic values ('BUSINESS, TECHNOLOGY, or SPORTS') and clarifying that the topic must be a predefined category, but it does not elaborate on the other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Find'), a resource ('recent Google News articles'), and a clear scope ('predefined Google News topic category'). It also distinguishes itself from the most similar sibling by naming get_news_by_keyword for free-form queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool ('for topic category browsing') and when to use the alternative ('use get_news_by_keyword for a free-form query'). This is a direct when-to-use vs. when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ranked_trendsARead-only
Return currently trending keywords ranked by week-over-week growth or volume. Use this when explicit ranked order matters; use get_top_trends for a simpler current feed and get_trends for historical series.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Geographic region code (e.g. 'US'). | US |
| sort | No | Field to sort by: 'wow_pct_change', 'volume'. | wow_pct_change |
| limit | No | Maximum number of trends to return. | |
| source | No | Search source: 'google search'. | google search |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 useful context about the temporal nature ('currently trending') and the ranking semantics ('week-over-week growth or volume'), which clarifies behavior beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the core function and ranking criteria, the second gives direct routing to alternatives. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with the fully documented schema and rich annotations, completely covers what an agent needs to know to call this tool correctly. The output schema and readOnly/openWorld hints fill in the rest, and the sibling references eliminate ambiguity about when to use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters with defaults and allowed values. The description adds context that the tool ranks by 'growth or volume', which loosely maps to the sort parameter, but it doesn't provide any parameter-specific detail beyond what the schema already contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Return') and the resource ('currently trending keywords'), with specific sorting criteria ('week-over-week growth or volume'). It also differentiates itself from sibling tools by naming get_top_trends and get_trends, so an agent can identify the correct tool without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('when explicit ranked order matters') and names alternatives for other contexts: get_top_trends for a simpler current feed and get_trends for historical series. This gives clear routing guidance beyond just the tool's function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_suggestionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Query string to autocomplete. | |
| language | No | Language code, e.g. 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 behavioral context by framing the tool as lightweight and suggesting it exposes autocomplete-style entity candidates, which helps an agent set expectations for scope and response character beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action and resource are front-loaded, and the alternative is mentioned in a single clear sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple two-parameter schema with full schema coverage, read-only annotations, and an output schema. The description fully covers the tool's purpose and the key sibling alternative, so there are no material gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 'keyword' and 'language' sufficiently. The description reinforces 'seed keyword' but adds no additional parameter semantics, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 Google Trends autocomplete suggestions for a seed keyword.' It also distinguishes itself from the sibling get_related_queries by naming the exact difference in use case, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('lightweight autocomplete or entity candidates') and when to use get_related_queries instead ('top or rising demand signals'). This gives an agent clear decision criteria without needing to inspect other tool schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_newsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Number of days to look back for top articles. | |
| full_data | No | Return full data for each article. If False a summary should be created by setting the summarize flag | |
| summarize | No | Generate a summary of the article, will first try LLM Sampling but if unavailable will use nlp | |
| max_results | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, destructiveHint=false), so the description's additional behavioral burden is low. It does add the scoping fact that no seed is required, but it does not mention pagination, default result caps, or potential data freshness limitations. This is adequate but not rich; a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. It front-loads the purpose and then immediately provides usage routing. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no required parameters, full schema descriptions, a provided output schema, and safety annotations, the description is complete. An agent can confidently select and invoke this tool based on the description alone; the schema covers invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (period, full_data, summarize, max_results) are fully documented in the schema. The description adds no parameter-level detail, which is acceptable under the baseline given the schema already handles this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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.' It also explicitly distinguishes this tool from siblings by noting it operates 'without a keyword or topic seed,' making its scope clear relative to the keyword, location, topic, and site tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this for a broad news snapshot,' and explicitly routes users to alternatives when a filter exists: 'use the keyword, location, topic, or site tools when the user gives a filter.' This is clear routing with named alternative categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_trendsARead-only
Return a bounded current topic discovery feed from Google Trends RSS, including related news where available. Use this for current top or daily trends; use get_ranked_trends when explicit ranking by growth or volume matters.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Geographic region code (e.g. 'US'). | US |
| type | No | Type of trends: 'Google Trends' (realtime), 'Daily Trends' (daily). | Google Trends |
| limit | No | Maximum number of trends to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, openWorld, and non-destructive behavior. The description adds meaningful context beyond that: the data source (Google Trends RSS), the 'bounded' nature of the feed, and the inclusion of related news where available. This is useful behavioral context without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core purpose, data source, scope, and a sibling-tool routing note with no filler. The most important guidance is front-loaded before the alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple, fully documented schema, clear annotations, and an output schema, the description covers what an agent needs to select and invoke the tool correctly. No critical usage or exclusion information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 three parameters (geo, type, limit). The tool description does not add new parameter-level meaning, so it is adequate at the baseline but not higher.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Google Trends RSS'), a concrete action ('Return a bounded current topic discovery feed'), and the content scope ('current top or daily trends'). It also distinguishes itself from get_ranked_trends explicitly, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives direct usage direction: use this for current top or daily trends, and switch to get_ranked_trends when explicit ranking by growth or volume matters. This is clear, explicit guidance that helps an agent choose correctly among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trending_termsARead-only
Return terms that are trending now for a geography, optionally with related news metadata. Use this for current trend discovery; use get_trends when the user wants historical interest over time for known keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Geographic target for trending terms. Supports four levels of granularity: - Worldwide: empty string '' - Country: ISO 3166-1 alpha-2 code, e.g. 'US', 'GB', 'CA' - Subdivision (state/province/region): ISO 3166-2 format 'CC-XX' or 'CC-XXX', e.g. 'US-CA' (California), 'BE-BRU' (Brussels) - US metro area: bare Nielsen DMA code (numeric string), e.g. '807' (San Francisco Bay Area), '501' (New York City) | US |
| full_data | No | Return full data for each trend including related news stories. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds useful behavioral context by emphasizing that results are 'trending now' and that related news metadata may be included, which helps set expectations about the response. It does not contradict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. The primary functional statement comes first, and the usage routing to get_trends comes second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two optional parameters, a complete output schema, and annotations covering safety, the description is fully sufficient. It states what the tool returns, the geographic dimension, the optional news metadata, and when to use an alternative. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents both geo and full_data parameters with detailed examples and defaults. The description adds only minimal semantic reinforcement by mentioning 'geography' and 'related news metadata,' but it does not need to compensate for any schema gaps. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 terms that are trending now for a geography.' It also explicitly distinguishes itself from get_trends by clarifying that this tool is for current trend discovery while get_trends handles historical interest. This makes the tool's purpose immediately clear and differentiates it from at least the most similar sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Use this for current trend discovery; use get_trends when the user wants historical interest over time for known keywords.' This directly tells an agent when to select this tool versus an alternative, leaving no ambiguity about 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_trendsARead-only
Return historical Google Trends interest-over-time points for one or more known keywords. Use this for trajectory and comparisons across a timeframe; values are normalized 0-100 interest scores, not absolute search volume. Use get_trending_terms for what is trending now.
| Name | Required | Description | Default |
|---|---|---|---|
| cat | No | Google Trends category ID; use 0 for all categories or a value from get_categories. | |
| geo | No | Geographic region code (e.g. 'US'). | US |
| source | No | Search source: 'google search', 'youtube search', 'news search', 'image search', 'google shopping'. | google search |
| keyword | Yes | Search keyword(s) to analyze. | |
| data_mode | No | Legacy resolution hint used only when timeframe is omitted: 'weekly', 'daily', 'monthly'. | weekly |
| timeframe | No | Explicit TrendsPy range, for example 'today 12-m', 'today 90-d', 'all', or 'YYYY-MM-DD YYYY-MM-DD'. Overrides data_mode when supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, lowering the burden. The description adds valuable behavior beyond the schema: it returns normalized 0-100 interest scores rather than absolute search volume, and it emphasizes historical data rather than live trends. This helps set expectations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the core purpose, the second clarifies the usage context and output scale, and the third names the alternative for a different use case. It is front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, full schema coverage, and read-only annotations, so the description does not need to explain return structures or safety. It covers key context: historical data, normalized scores, timeframe orientation, and the closest alternative. It does not discuss limitations such as keyword count or data availability, but those are minor given the schema and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema carries the parameter documentation burden. The description adds only the general notion that keywords should be 'known' and can be plural, which maps to the keyword parameter. That is a small increment over the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return'), names the exact resource ('historical Google Trends interest-over-time points'), and scopes to 'one or more known keywords'. It also differentiates from get_trending_terms by contrasting historical trajectory with what is trending now, so an agent can distinguish it from at least its closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 trajectory and comparisons across a timeframe.' It also gives a concrete alternative and exclusion: 'Use get_trending_terms for what is trending now.' This is clear routing guidance, not just an implied context.
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. Dates show when Glama detected each change.
16 tool updates
- First observed
get_article_content - First observed
get_categories - First observed
get_growth - First observed
get_interest_by_region - First observed
get_news_by_keyword - First observed
get_news_by_location - First observed
get_news_by_site - First observed
get_news_by_topic - First observed
get_ranked_trends - First observed
get_related_queries - First observed
get_related_topics - First observed
get_suggestions - First observed
get_top_news - First observed
get_top_trends - First observed
get_trending_terms - First observed
get_trends
TDQS
Most tools have clearly distinct inputs and outputs, but a few current-trend tools (get_trending_terms, get_top_trends, get_ranked_trends) and keyword-expansion tools (get_suggestions, get_related_queries, get_related_topics) have overlapping discovery purposes. The cross-references in descriptions help, but agents could still select the wrong trend summary tool.
Every tool follows a consistent get_<object> snake_case pattern, with predictable variants like get_news_by_* and get_related_*. There are no mixed casing conventions or vague verb prefixes.
16 tools is slightly over the ideal 3-15 range, but each tool corresponds to a distinct news/trend query mode or data source. The count is justified by the broad news-plus-trends scope rather than redundant functionality.
The surface covers news discovery by keyword, location, topic, site, and headline; article text retrieval; current and historical trends; regional interest; growth; related-term expansion; and category metadata. No obvious dead-end or missing operation remains for the stated trend/news analysis purpose.
Maintenance
Related MCP Connectors
MCP server for Google Veo AI video generation
MCP server for Google search results via SERP API
Google Trends: Search, Images, News, Shopping over time, growth metrics. Free key at trendsmcp.ai
Dive into the latest and greatest from the tech world with our Hacker News MCP server.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server providing news article mention volume data, weekly series, growth percentages, and a live Google News feed as an AI tool.MIT
- FlicenseNot gradedqualityCmaintenanceAn 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.-
- AlicenseNot gradedqualityBmaintenanceA 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.8MIT
- FlicenseNot gradedqualityBmaintenanceMCP 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.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AKzar1el/mcp-trendpulse'
If you have feedback or need assistance with the MCP directory API, please join our Discord server