Skip to main content
Glama
PROMPTEYE-SP-Z-O-O

prompteye-mcp

Official

List the prompts of the project

list_prompts
Read-only

List tracked prompts with brand visibility, reach, average position, AI traffic, and business priority over a date range to find questions needing content.

Instructions

The questions the active 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

TableJSON 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.
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

TableJSON 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. 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"
      +}
  2. 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."
  3. First observedv1.0.5

TDQS

A4/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses a great deal: signed deltas where positive always means improvement, the 0-vs-null distinction for aiTraffic and aiTrafficMeasuredAt, the failed-refresh behavior, the businessPriority banding thresholds, that manual priority overrides computed, and that get_ai_traffic measures sessions rather than demand. This is exactly the extra context annotations cannot carry.

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?

The opening sentence is dense and oblique rather than front-loading 'lists the prompts of the active project', forcing the reader through metric definitions before reaching the core purpose. Much of the middle is return-value semantics (visibility, reachIndex, averagePosition) that an output schema already exists to carry, so the volume is not fully justified for this field placement.

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?

Given a paginated, read-only listing with an output schema, the description is thorough on domain semantics, especially null handling and how the metrics relate, which an agent needs to interpret results. It omits pagination flows and auth notes, but the schema and annotations cover those, so little of substance is missing.

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 parameter (limit, cursor, startDate, endDate, groupId, categoryId) is already documented in the schema. The description's period framing ('over the period and how it moved against the period before') lightly reinforces the date filters but adds no syntax or constraint detail beyond the schema, matching the baseline 3.

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 clearly establishes the resource (the active project's prompts) and what each entry carries (visibility, reachIndex, averagePosition, aiTraffic, businessPriority), and 'Paused prompts are listed too, newest first' confirms it is a listing. It never states the listing verb as directly as the title does and doesn't explicitly contrast with get_prompt, so it stops short of a 5, but an agent can tell what it returns.

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 use case ('this is where to look for which questions carry the brand and which do not') and routes the agent to a next action (a low-visibility, high-priority prompt is the one to feed into create_content_brief). It does not say when to prefer this over siblings like get_prompt or list_prompt_suggestions, so it is clear context without explicit exclusions.

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