Skip to main content
Glama
prompteye-mcp

prompteye-mcp

Official

List the prompts of the project

list_prompts
Read-only

The questions the project puts to the assistants, with the visibility each one earns over the period and how it moved against the period before.

Instructions

The questions the project puts to the assistants, with the visibility each one earns over the period and how it moved against the period before. Every measurement PromptEye reports is taken on the answers to these prompts, so this is where to look for which questions carry the brand and which do not. Paused prompts are listed too, newest first.

A prompt the brand is rarely or never named on, especially one with a high business priority, is the one to generate content for: create_content_brief with its text and id starts the article, and this listing is where its impact shows up later.

Changes are signed so that positive always means improvement. For average position that means the brand was named earlier in the answer, so a positive change goes with a lower position number.

visibility is the share of answers that named the brand, 0 to 100; reachIndex is that figure weighted by how much of the market each assistant carries; averagePosition is where in the answer the brand was named, counting from 1. Each is null until it is measured.

aiTraffic is the demand behind a prompt: PromptEye expands the question into the phrasings people actually use for it, weighs each one by how much of the question it carries, and adds up how much demand they attract per month. It is a property of the prompt, not a measurement of a period. 0 means it was measured and the demand is below the reporting floor of 50 searches a month. null means there is no figure: with aiTrafficMeasuredAt null it has not been measured yet, with a date it was measured and none of the phrasings came back with a volume, so it is unknown rather than zero. aiTrafficMeasuredAt is when the figure was last measured; a failed refresh keeps the earlier figure and its date. It is not what get_ai_traffic reports: that tool counts sessions that actually reached the site from an assistant, while this counts the demand behind the question.

businessPriority is how much the project should bet on a prompt: the average of how close to a purchase the question is asked and where the prompt ranks on demand among the project's own prompts. It is banded very_high above 0.8, high above 0.6, medium above 0.4, low above 0.2 and very_low below that. A priority set by hand in the app wins over the computed one, and the two are not reported apart, so a surprising value may be someone's deliberate call. It is null before the prompt has been ranked.

Input Schema

NameRequiredDescriptionDefault
limitNoHow many entries to return, at most 200. Defaults to 50.
cursorNoThe nextCursor of the previous page. Omit it to start from the first one.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
groupIdNoOnly prompts in this prompt group.
projectIdYesThe project to work on — its id from list_projects. Required on every call, so that parallel conversations never read or write each other's project.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.
categoryIdNoOnly prompts filed under this category or one of its subcategories.

Output Schema

NameRequiredDescriptionDefault
dataYes
brandYes
nextCursorYesPass as cursor to read the next page. null = this was the last page.
projectNameYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.0.28
    • addedInput schema / properties / projectId
      Added value: +{
      +  "description": "The project to work on — its id from list_projects. Required on every call, so that parallel conversations never read or write each other's project.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "projectId"
      +]
  2. Changed1 schema field changedv1.0.22
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "brand": {
      +      "type": "string"
      +    },
      +    "data": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "aiTraffic": {
      +            "description": "Estimated monthly searches behind the prompt; a property of the prompt, not of the period. 0 = measured, below the reporting floor of 50 searches a month. null = no figure: not measured yet when aiTrafficMeasuredAt is null, otherwise measured with no volume found (unknown, not zero).",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "aiTrafficMeasuredAt": {
      +            "description": "When aiTraffic was last measured, ISO 8601 in UTC. null = never measured. A failed refresh keeps the previous figure and date.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "businessPriority": {
      +            "description": "very_high, high, medium, low or very_low. null = not ranked yet. A priority set by hand wins over the computed one.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "businessPriorityReason": {
      +            "description": "Why the priority was set by hand. null = the computed priority, or no reason given.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "categories": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "change": {
      +            "anyOf": [
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averagePosition": {
      +                    "description": "Places moved, signed so positive = named earlier (an improvement). null = either period could not measure it.",
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  },
      +                  "reachIndex": {
      +                    "description": "Points reachIndex moved by; negative = fell. null = either period could not measure it.",
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  },
      +                  "visibility": {
      +                    "description": "Percentage points visibility moved by; negative = fell. null = either period could not measure it.",
      +                    "type": [
      +                      "number",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "visibility",
      +                  "reachIndex",
      +                  "averagePosition"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Movement against the period of the same length directly before this one. null = no figure could be compared."
      +          },
      +          "createdAt": {
      +            "description": "When the prompt was added, ISO 8601 in UTC.",
      +            "type": "string"
      +          },
      +          "groupId": {
      +            "description": "null = the prompt is ungrouped.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "keyword": {
      +            "description": "Keyword the prompt was built around. Empty when it was written by hand.",
      +            "type": "string"
      +          },
      +          "metrics": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "averagePosition": {
      +                "description": "Mean place the brand was named at in the answers that named it, counting from 1; lower is earlier. null = not measured.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "reachIndex": {
      +                "description": "Visibility weighted by how much of the market each assistant carries, 0-100, whole number. null = not measured.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "visibility": {
      +                "description": "Share of answers that named the brand in the period, in percent 0-100. null = not measured.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "visibility",
      +              "reachIndex",
      +              "averagePosition"
      +            ],
      +            "type": "object"
      +          },
      +          "prompt": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "description": "active = asked on every run, paused = not asked, pending = added but not measured yet.",
      +            "type": "string"
      +          },
      +          "subcategories": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "prompt",
      +          "keyword",
      +          "status",
      +          "categories",
      +          "subcategories",
      +          "groupId",
      +          "createdAt",
      +          "aiTraffic",
      +          "businessPriority",
      +          "businessPriorityReason",
      +          "metrics",
      +          "change"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "nextCursor": {
      +      "description": "Pass as cursor to read the next page. null = this was the last page.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "projectName": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "data",
      +    "nextCursor",
      +    "projectName",
      +    "brand"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changedv1.0.11
    • changedInput schema / properties / categoryId / description
      Previous value: -"Only prompts filed under this category."New value: +"Only prompts filed under this category or one of its subcategories."
  4. First observedv1.0.5

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already establish a safe, open-world read, so the description is free to spend its words elsewhere and does: paused prompts are included, ordering is newest first, measurements are null until taken, and changes are sign-normalized (a positive position change means a lower number). The explicit contrast with get_ai_traffic — demand behind a question vs. sessions that reached the site — is exactly the kind of overload disambiguation annotations cannot supply. Missing only pagination/limit behavior, which the schema covers.

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

Conciseness3/5

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

Purpose is front-loaded correctly, but the body is four dense paragraphs that read as reference documentation for output fields rather than guidance for invoking the tool, and sentences like the aiTraffic null-vs-zero explanation are heavily nested. Much of that material duplicates what the output schema already carries, so length is not fully earned here.

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 seven parameters, an output schema, and annotations in place, this is comfortably complete: metric definitions, null semantics, priority banding and the hand-set override caveat are all disclosed. The remaining gap is filter-selection guidance — nothing tells the agent how groupId or categoryId should be chosen when the project has many groups.

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 schema already documents limit, cursor, startDate, endDate, groupId, categoryId and projectId, and the baseline applies. The description adds nothing parameter-specific beyond the implicit 'over the period and the period before' justifying the date pair; it never explains when to narrow by groupId or categoryId.

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 opening sentence defines the resource precisely as the questions a project puts to assistants, plus per-period visibility movement, and 'Paused prompts are listed too, newest first' pins the scope. The verb 'list' is never stated outright and the framing is narrative rather than declarative, so an agent must infer that this is the enumerating sibling of get_prompt and list_prompt_suggestions.

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 concrete reason to call it ('this is where to look for which questions carry the brand') and a concrete follow-on action: a low-visibility, high-priority prompt should be fed to create_content_brief with its text and id. What it omits is disambiguation against neighboring listing tools — list_prompt_groups, list_prompt_suggestions, list_categories — and any statement of when this listing is the wrong choice.

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