Skip to main content
Glama

AppTail – ASO & Keyword Research

Get Signals

get_signals
Read-only

What actually happened, from the record the product keeps: rank moves on tracked terms, chart entries, review spikes, competitor releases and price changes, plus — for the user's own apps only — week-over-week traffic and conversion shifts, download collapses, new reviews and rating moves. Each carries the two numbers behind it and the sentence that states the finding. This is a stored table read, not a reconstruction, so it is both cheaper and more reliable than diffing rank histories yourself. Covers the user's own apps and the competitors tracked under them; a rival's finding never asks_action.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoEnd date, `YYYY-MM-DD`, inclusive. Send it alone and the window is the three years before it.
fromNoStart date, `YYYY-MM-DD`, inclusive. Overrides `period` when both are sent. Send it alone and the window runs to today.
limitNoMax findings, newest first. Default 50, capped at 200. The answer always says how many the window actually holds.
typesNoOnly these kinds of finding. Omit for all of them. An unknown name is refused rather than ignored, so a filtered answer is never returned as though it were unfiltered.
app_idNoNarrow to one of the user's own apps — get_account lists them. Findings about the competitors tracked under it are included, because a rival taking your places is something that happened to you. Omit for the whole portfolio.
periodNoThe window to report on. A calendar month as `2026-07`, a calendar year as `2026`, `last_month`, `this_month`, `last_year`, or a trailing window: `today`, `7d`, `14d`, `30d`, `90d`, `180d`, `365d`, `730d`, `1095d`. Defaults to `30d`. A calendar period is compared against the calendar period before it — July against June, not against the 31 days ending 30 June. Three years is the ceiling.
include_sentNoMark the findings that already went out in an alert digest the user has read. Default false. Set it whenever you are about to summarise a period for someone: without it you cannot tell news from something they read at breakfast, and repeating the second as the first is how an assistant stops being believed.
min_severityNoFloor on how loudly a finding speaks. Default `neutral`, which is everything. `warning` drops a rival shipping a point release, which is worth knowing and not worth acting on. It is NOT the same as "what needs my attention" — read `asks_action` on each finding for that: a competitor taking a run of 1–2★ reviews is a warning about somebody else's week and asks nothing of this user.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesFindings returned.
totalYesFindings the window holds in total. Larger than `count` when the list was capped.
digestNoWhat the product has already told this person, when `include_sent` was set. Null otherwise, which means "not asked" rather than "never mailed".
windowYesThe window actually read, which is not always the one asked for: an inverted range is swapped, a range past three years is shortened, and first-party figures are pulled back to the last day App Store Connect reported. Quote these dates, not the requested ones.
app_idsYesThe apps of the user's these findings hang under.
by_typeYesHow many of each kind the window holds — the shape of the period, counted over everything rather than over the capped list. A key is absent when there were none.
signalsYesThe findings, newest first. Each carries the sentence that states it and the two numbers behind it. Empty is a real answer: it means nothing crossed a detector's threshold, which is the only way a threshold means anything.
truncatedYesTrue when `count` is below `total`. Say the list is partial rather than presenting it as everything that happened.
by_severityYesThe severities among the findings returned. Counted over the returned rows, not the window, so it describes the list in hand.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly/non-destructive/closed-world, so the bar is lower, yet the description adds real context: it is a stored table read (cheap, reliable), it covers the user's own apps plus competitors tracked under them, and a rival's finding never asks_action. It does not discuss rate limits or pagination beyond the schema-stated cap. Solid added value, not exhaustive.

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

Conciseness4/5

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

The scope and the cost/reliability rationale are front-loaded, and the enumeration of finding types is dense but useful. A few sentences carry rhetorical flourish ('how an assistant stops being believed') that is informative but slightly padded for a tool description. Still efficient overall.

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?

With an output schema present, return-value detail is not required, and the description covers scope (own apps + tracked competitors), cost profile, filtering behavior and the meaning of severity vs asks_action. Nothing an agent needs to invoke it is missing, though it could be tighter about interaction with sibling tools.

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 every one of the 8 parameters is already fully documented with defaults, formats and precedence rules. The description adds no per-parameter syntax or meaning beyond that, so the baseline 3 applies — the schema does the heavy lifting.

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

Purpose4/5

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

The description states concretely what the tool returns: stored findings such as rank moves, chart entries, review spikes, competitor releases, price changes, plus own-app traffic/conversion shifts. That is far more specific than the tool name and lets an agent distinguish it from performance/history tooling. It does not, however, name a sibling tool it should be preferred over, so 4 rather than 5.

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?

It gives a clear selection rationale against a competing approach ('This is a stored table read, not a reconstruction, so it is both cheaper and more reliable than diffing rank histories yourself'). The include_sent parameter note also supplies conditional guidance ('Set it whenever you are about to summarise a period'). It stops short of explicit when-not-to-use or sibling routing, so not a 5.

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