Skip to main content
Glama

AppTail – ASO & Keyword Research

Edit Market Corpus

edit_market_corpus
Destructive

Add terms to one storefront's corpus, or take terms out of it. Add for a term the corpus SHOULD hold and does not — a rival's brand, a phrase Apple has never measured the popularity of, the term a thin storefront is really about; a pinned term is kept through every rebuild and refreshed on the same 72-hour cadence as the rest. Remove for a term that does not belong: ANY term can go, and one the heuristic found is also kept out of future rebuilds rather than returning within 72 hours. This is NOT save_market: seeds are what the corpus is expanded FROM and changing one re-runs the whole heuristic over that storefront, where these two writes act on single terms in the result.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addNoTerms to pin, as somebody would type them into the App Store. Send the batch in one call. Terms already in the corpus come back under `already_present` rather than as an error.
removeNoKeyword ids to take out of the corpus — the `keyword_id` on ANY get_market corpus row. A term the heuristic found is also recorded as excluded so rebuilds do not re-derive it; `add` on the same term later clears that again.
countryYesWhich storefront's corpus, ISO 3166-1 alpha-2 (e.g. US, DE). Required and not defaulted: a corpus belongs to one storefront, and there is no market-wide term list to add to.
market_idYesApptail market id — from list_markets or save_market.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capYesThe most terms this storefront may hold, from the account's plan. A market's storefronts each get their own — the cap is per storefront, not shared across the market.
termsYesHow many terms this storefront's corpus holds now.
pinnedYesTerms added to the corpus by this call, with `origin: "manual"`. A term Apptail has never seen is created and queued for crawling, so its ranks appear within minutes rather than immediately.
caveatsYesWhat the caller needs to hear before reporting success — that ranks are not in yet, or that the cap cut the list.
countryYesThe storefront that was edited. A corpus belongs to one storefront and is never shared between them.
refusedYesTerms not added because the storefront is at `cap`. Unpin something or drop a storefront; the account's plan sets the number.
removedYesKeyword ids taken out of the corpus by this call.
excludedYesThe subset of `removed` that will ALSO be kept out of every future rebuild. A term the heuristic found is re-derived from the seeds every 72 hours, so removing it has to be recorded outside the corpus to last; a hand-pinned term needs no such record because nothing re-adds it. Pinning a term with `add` clears it from this list again.
market_idYesThe market this corpus belongs to.
console_urlNoThis market's corpus in the console.
not_removedYesIds that were sent to `remove` and are still in the corpus, each with the reason.
already_presentYesTerms that were already in this corpus, and where they came from. Not an error — it is the state the caller asked for, and a `competitor` term is NOT re-recorded as `manual`, because the origin says who put the term here.

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 already flag destructive=true, but the description adds substantial context beyond them: pinned terms survive every rebuild and refresh on a 72-hour cadence, removed heuristic terms are recorded as excluded so they don't re-derive, and a later `add` clears that exclusion. These are non-obvious side effects an agent cannot infer from the structured fields.

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-loaded with the core add/remove action, then the behavioral details, then the sibling contrast. Dense and mostly waste-free, though the long single paragraph carries a few stacked clauses that could be broken out.

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, return values need not be described. The description covers the add/remove semantics, cadence, rebuild persistence, exclusion behavior, and the differentiating contrast with `save_market`, leaving nothing an agent needs in order to call it correctly.

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. The description goes further by framing the intent of `add` (terms the corpus should hold) versus `remove` (terms that don't belong, and the persistent exclusion effect of removing a heuristic term), adding conceptual meaning on top of the already-detailed schema descriptions.

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 paired verb (add / remove) operating on a single storefront's corpus, and explicitly names what it is not (`save_market`). An agent can distinguish it from the heuristic-rerunning seed tool without opening either schema.

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 gives explicit when-to-use conditions: add for a term the corpus SHOULD hold but doesn't (rival brand, unmeasured phrase, thin storefront's real subject); remove for a term that does not belong, noting ANY term can go. It also contrasts with `save_market`, explaining that seeds re-run the heuristic while these writes act on single terms in the result.

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