How MTD, QTD, and YTD growth presets work in Trends MCP

Calendar-bound growth windows answer different questions than rolling 3M or 12M presets. Trends MCP returns both in one get_growth call, with exact baseline and recent dates so dashboards and AI agents can cite defensible numbers.

What does each percent_growth preset measure?

Trends MCP get_growth compares two points on a normalized 0 to 100 series (and absolute volume when the pipeline has it). Rolling presets such as 3M, 12M, and 30D look back a fixed number of days from the latest available observation. Calendar presets anchor to period boundaries: MTD starts at the current calendar month, QTD at the current quarter, and YTD at January 1 of the current calendar year (all evaluated against the freshest weekly or daily point in the series).

A keyword can show positive YTD growth while MTD is negative when demand peaked earlier in the year and softened this month. That split is common on seasonal categories and after viral spikes. Reporting only one window hides the story.

How do calendar presets differ from rolling 12M on June 14?

On mid-year dates, YTD and 12M sometimes converge because the baseline dates sit near each other. They still answer distinct questions. YTD tracks progress against the annual plan starting January 1. 12M tracks the trailing year regardless of fiscal calendars, which matters when comparing a topic to its own history through a full seasonal cycle.

Preset Baseline logic (conceptual) Best for
MTD Start of current calendar month Monthly pacing, campaign pulse checks
QTD Start of current calendar quarter Board slides aligned to fiscal quarters
YTD January 1 current year Annual targets, investor relations summaries
3M / 6M / 12M Fixed day lookback from latest point Smoothing launches, comparing to last season
7D / 30D Short rolling windows Alerting, crisis velocity

What does a real get_growth response look like?

The snapshot below comes from a live Trends MCP pull on June 14, 2026 for Google Search interest in duolingo. All five presets shipped in one request.

{
  "source": "google search",
  "keyword": "duolingo",
  "percent_growth": ["MTD", "QTD", "YTD", "3M", "12M"]
}
Period Growth % Recent date Baseline date Recent value Baseline value
MTD -12.28 2026-06-13 2026-05-30 50 57
QTD -12.28 2026-06-13 2026-04-04 50 57
YTD -7.41 2026-06-13 2026-01-03 50 54
3M -21.88 2026-06-13 2026-03-14 50 64
12M -7.41 2026-06-13 2025-06-14 50 54

The response also returns recent_volume, baseline_volume, and volume_growth when volume_available is true. For this keyword, volume growth matched normalized growth on every period. When volumes diverge from normalized scores, prefer volume growth for magnitude statements and normalized growth for cross-platform comparisons on the search trend API.

How should teams pick presets for a given decision?

Executive pacing. Lead with YTD and QTD, then add MTD only when the meeting is about the current month. Pair with 12M when leadership wants trailing-year context that ignores calendar cutoffs.

Product launch postmortems. Rolling 30D and 3M capture lift after ship. Calendar MTD can misread a launch that landed mid-month because the baseline includes pre-launch days. For event-specific reads, custom date objects beat presets.

Seasonal categories. Air fryers, tax software, and holiday decor often show wild MTD swings while 12M stays flat. Seasonal trend analysis workflows should default to rolling windows plus YTD, using MTD only inside the active season.

Earnings and IR prep. QTD aligns with quarterly narratives. Add news volume or news sentiment in a second get_growth call on the ticker or brand name when the story is media-driven. Investor relations trend monitoring pages cover adjacent signal pairing.

How do custom date objects work beside MTD and YTD?

Presets cover standard calendars. Launches, regulatory dates, and campaign flights need explicit endpoints. Pass an object with recent, baseline, and an optional name label:

{
  "source": "amazon",
  "keyword": "air fryer",
  "percent_growth": [
    "YTD",
    "12M",
    {
      "name": "Prime Day lift",
      "recent": "2025-07-20",
      "baseline": "2025-06-20"
    }
  ]
}

The API returns the custom name in the period field. Mixing presets and custom ranges in one body still counts as a single billable get_growth unit per source and keyword, which is the same counting model documented on planning free-tier trend requests.

How do MCP clients phrase prompts that hit the right presets?

In Cursor, Claude, or ChatGPT with Trends MCP connected, include the routing phrase and name the windows explicitly:

REST callers POST the same JSON to https://api.trendsmcp.ai/api with Authorization: Bearer YOUR_API_KEY. The Python trends API client accepts preset strings and CustomGrowthPeriod objects with identical field names.

When should analysts plot get_trends instead of trusting growth alone?

Growth presets summarize two endpoints. They hide reversals in between. When 3M is sharply negative but YTD is flat, pull get_trends on the same source and keyword and inspect the weekly shape. Analysts building features for models often export both: growth fields for tabular joins and the series for charts, as outlined on trend data for data scientists.

What are the full preset strings Trends MCP accepts?

Rolling and calendar presets in one list for copy-paste: 7D, 14D, 30D, 1M, 2M, 3M, 6M, 9M, 12M, 1Y, 18M, 24M, 2Y, 36M, 3Y, 48M, 60M, 5Y, MTD, QTD, YTD. Aliases like 1Y map to the same windows as 12M in practice; pick one style per dashboard so period labels stay consistent.

get_growth

Batch calendar and rolling windows for one keyword in a single billable call.

get_growth(keyword='duolingo', source='google search', percent_growth=['MTD', 'QTD', 'YTD', '3M', '12M'])

get_trends

Plot the weekly series when growth presets disagree and the reader needs shape, not just endpoints.

get_trends(keyword='duolingo', source='google search')

Common questions

No. Trends MCP bills one request per source plus keyword pair on get_growth. Every preset in the percent_growth array rides in that single payload, so a call with MTD, QTD, YTD, 3M, and 12M still counts as one unit.
Pair YTD with 12M for long-run context, then add MTD when the audience tracks monthly pacing. Rolling 3M smooths noise when a product launch or news spike distorted the current month.
Yes. Pass preset strings and objects with recent and baseline keys in the same percent_growth array. Name the custom object so the response period field is readable in logs.
Trust the normalized growth on value fields and treat volume_growth as unavailable. Sparse keywords on niche sources often lack absolute volume; cite recent_date and baseline_date instead of inventing counts.