Skip to main content
Glama

List Saved Keywords

list_saved_keywords
Read-onlyIdempotent

Lists your saved keywords with tags and exclusions. For tracking status and latest rank, call get_rankings. Does not change anything. Related: save_keywords, get_rankings.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_saved_keywords"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNo1-based page. Default 1. Prefer limit/cursor.
limitNoHow many rows to return. Default 20, max 100.
queryNoSubstring match on the keyword.
cursorNoOpaque cursor from a previous call's nextCursor.
sourceNoHow the keyword was saved.
marketsNoOnly keywords saved in any of these markets: the locationCode and languageCode each saved keyword returns, or codes from list_market_locations.
audienceNoOnly included, or only excluded, keywords.
pageSizeNoRows per page. Default 20, max 100. Prefer limit.
tagNamesNoOnly keywords that have any of these tags.

Output Schema

NameRequiredDescriptionDefault
moreYes
pageYes
itemsYes
totalYes
appUrlYes
pageSizeYes
nextCursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / markets
      Added value: +{
      +  "description": "Only keywords saved in any of these markets: the locationCode and languageCode each saved keyword returns, or codes from list_market_locations.",
      +  "items": {
      +    "properties": {
      +      "languageCode": {
      +        "maxLength": 16,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "locationCode": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "locationCode",
      +      "languageCode"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • changedInput schema / properties / tagNames / description
      Previous value: -"Only keywords that have all of these tags."New value: +"Only keywords that have any of these tags."
  2. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so "Does not change anything" repeats structured data rather than adding to it. The one genuinely additive claim is scope of return: rankings and tracking status are not included here, which steers the agent to a second call. Permissions, pagination, and result shape are left unmentioned (output schema covers the latter).

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?

Three short sentences, front-loaded with the purpose before the sibling pointer and the related-tools line. "Does not change anything" is the only sentence that does not fully earn its place, since annotations already carry that fact.

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?

For a read-only, zero-required-parameter listing tool with a full output schema and rich annotations, the description covers purpose, delegation to get_rankings, and the boundary of what is returned. The gap is that its substantial filter/pagination surface is never hinted at, so an agent may not realize it can narrow the listing instead of paging through everything.

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 all nine parameters (page, limit, query, cursor, source, markets, audience, pageSize, tagNames) are already documented in structured form. The description adds no filtering semantics beyond the name — notably it never says the listing can be narrowed by query, source, market, audience, or tags, which is the main selection signal for this tool.

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?

States a specific verb and resource ("Lists your saved keywords") plus the payload shape ("with tags and exclusions"), and explicitly separates itself from get_rankings, which covers tracking status and rank. An agent can distinguish this from save_keywords and get_rankings without opening a schema.

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 names the alternative and the condition that selects it: "For tracking status and latest rank, call get_rankings." That is real routing guidance. It stops short of stating when not to use this tool (e.g., for keyword research or audience checks, which other siblings like research_keywords and check_keyword_audience cover).

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