Skip to main content
Glama

Get keyword rank history

get_keyword_rank_history
Read-only

Get the daily rank history of one tracked keyword, with one series per app that tracks it. Returns keyword, store, country, lang, the resolved from/to dates, and apps[] entries holding app_id, app_title and history[] of { date (YYYY-MM-DD), rank }, one entry per day a ranking run measured: rank is null on days the app did not rank, and a day not measured yet (today before the daily update) is omitted. Each app entry also has events { notes[], app_updates[], store_updates[] } over the range: the user's notes on the app, its updates detected, and the store algorithm updates of the keyword's market, what may explain a move. Defaults to the last 30 days, shortened to the plan's history window. An explicit start date older than the plan's history returns a PLAN_LIMIT result; any request reaches back 400 days at most. Reversed dates are swapped and future dates are clamped to today. Pass keyword_id from list_keywords, and app_id to narrow the output to one app. For the visibility of a whole app rather than one keyword, use get_app_score_history.

Input Schema

NameRequiredDescriptionDefault
toNoEnd date in YYYY-MM-DD format. Defaults to today.
fromNoStart date in YYYY-MM-DD format. Defaults to 30 days ago.
app_idNoFilter by specific app ID
keyword_idYesThe keyword internal ID (numeric, from list_keywords results)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare it as a non-destructive read; the description goes well beyond that, disclosing default window (30 days capped by plan history), the PLAN_LIMIT failure on older explicit starts, the 400-day hard maximum, date swapping/clamping behavior, and rank=null vs omitted-day semantics. That is exactly the behavioral context annotations cannot carry.

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

Conciseness4/5

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

Front-loads the return shape, then behavior, then parameters, then the alternative — a sensible order with no filler sentences. It is a dense single paragraph with some long chained clauses, which makes it harder to scan than it could be, but every sentence carries information.

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?

There is no output schema, so the description fully documents the return payload (keyword, store, country, lang, resolved dates, apps[] with history and events). For a read-only tool with four simple params, nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning on top: where keyword_id comes from, that app_id narrows rather than filters by owner, and non-obvious from/to dynamics (reversed dates swapped, future clamped, plan-window truncation, 400-day cap) that the terse schema strings omit.

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?

Opens with a specific verb+resource ('Get the daily rank history of one tracked keyword') and immediately scopes it to one keyword with one series per tracking app. It is clearly distinguished from the sibling get_app_score_history, which is named as the tool for whole-app visibility.

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 routes: 'Pass keyword_id from list_keywords, and app_id to narrow the output to one app,' and 'For the visibility of a whole app rather than one keyword, use get_app_score_history.' The selection condition against the closest alternative is stated outright.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources