Skip to main content
Glama

devtune_get_top_citation_domains

Read-onlyIdempotent

Get top citation domains in AI search results. Returns cursor-paginated domain rows ordered by citation count. Pass topicId, promptId or platform to count only the citations from that topic, tracked prompt or AI platform; filters combine, and ranks, counts, classes, unique URLs and positions all describe the filtered citations. Pass sourceVertical to scope the list to one vertical, for example the community platforms AI cites. Returns a coverage state: an unavailable window has not been rolled up yet, so an empty list is not a measured zero. A filtered list has its own coverage: it is available only when the citations recorded by prompt, topic and platform for the window reproduce the unfiltered list, so it can be unavailable while the unfiltered list is available. An unknown, deleted or other-project promptId or topicId is refused as not found.

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": "devtune_get_top_citation_domains"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoThe same setting as pageSize. Send either.
cursorNoOpaque cursor from the previous response. Continue with the same window, search and filters; a cursor used with any of them changed, or a filtered list's cursor after the list was republished, is refused, so start again without one. Filtered lists page through their first 100,000 rows. Unfiltered lists retain their existing pagination.
searchNoOptional prefix search within citation URLs and domains.
topicIdNoOnly citations recorded under this topic, by the id devtune_list_topics returns. A prompt moved to another topic keeps its earlier citations under the earlier topic.
pageSizeNoResults per page (1-100). Defaults to 25.
platformNoOnly citations from this AI platform: chatgpt-search, perplexity, google-ai, google-ai-mode or bing-copilot-search, plus claude and xai-search where the account tracks them.
promptIdNoOnly citations from this tracked prompt, by the id devtune_list_prompts returns.
windowDaysNoRolling window in days: 30 or 90. Defaults to 30.
sourceVerticalNoOptional source vertical scope. "community" covers Reddit, Hacker News, GitHub, Stack Overflow, Stack Exchange and Dev.to, including their subdomains.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / limit / $ref
      Removed value: -"#/properties/pageSize"
    • addedInput schema / properties / limit / maximum
      Added value: +100
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • addedInput schema / properties / limit / type
      Added value: +"integer"
    • addedInput schema / properties / promptId / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / topicId / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • changedInput schema / properties / windowDays / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "30",
      -      "90"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "enum": [
      -      30,
      -      90
      -    ],
      -    "type": "number"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "30",
      +      "90"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "anyOf": [
      +      {
      +        "const": 30,
      +        "type": "number"
      +      },
      +      {
      +        "const": 90,
      +        "type": "number"
      +      }
      +    ]
      +  }
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "$ref": "#/properties/pageSize",
      +  "description": "The same setting as pageSize. Send either."
      +}
  3. Changed4 schema fields changed
    • changedInput schema / properties / cursor / description
      Previous value: -"Opaque cursor from the previous response."New value: +"Opaque cursor from the previous response. Continue with the same window, search and filters; a cursor used with any of them changed, or a filtered list's cursor after the list was republished, is refused, so start again without one. Filtered lists page through their first 100,000 rows. Unfiltered lists retain their existing pagination."
    • addedInput schema / properties / platform
      Added value: +{
      +  "description": "Only citations from this AI platform: chatgpt-search, perplexity, google-ai, google-ai-mode or bing-copilot-search, plus claude and xai-search where the account tracks them.",
      +  "maxLength": 100,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / promptId
      Added value: +{
      +  "description": "Only citations from this tracked prompt, by the id devtune_list_prompts returns.",
      +  "format": "uuid",
      +  "type": "string"
      +}
    • addedInput schema / properties / topicId
      Added value: +{
      +  "description": "Only citations recorded under this topic, by the id devtune_list_topics returns. A prompt moved to another topic keeps its earlier citations under the earlier topic.",
      +  "format": "uuid",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4/5.0
Behavior4/5

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

Adds substantial context beyond the readOnly/idempotent annotations: cursor invalidation on changed filters, a 100,000-row cap on filtered lists, and a coverage-state model where an unavailable window yields an empty list that is 'not a measured zero'. The filtered-list coverage dependency is disclosed well, though error behavior is only summarized as 'refused as not found'.

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 purpose and return shape, then filters, then coverage caveats; every sentence carries information. The coverage discussion is dense and slightly repetitive ('coverage state' / 'A filtered list has its own coverage'), costing a point.

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 no output schema, the description still conveys row content (ranks, counts, classes, unique URLs, positions) and the all-important coverage signal an agent must not mistake for an empty result. Combined with the annotations, an agent has what it needs to call and interpret this correctly.

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 the baseline is 3. The description reinforces filter-combination semantics and that a prompt moved between topics retains earlier citations, but most parameter meaning is already carried by the schema.

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?

States a specific verb and resource ('Get top citation domains') plus the return shape ('cursor-paginated domain rows ordered by citation count'). It is distinguishable from devtune_get_top_citation_pages by the 'domains' resource, but the description never names that sibling explicitly, so differentiation relies on the tool name.

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?

Explains the filter combinations (topicId, promptId, platform combine) and the scoping role of sourceVertical with a concrete example ('the community platforms AI cites'). It gives no explicit 'use this instead of X' routing, which is the main gap.

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