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

prompteye-mcp

Official

Read one public report

get_report
Read-only

Retrieve a brand visibility report by ID to check processing status and read scores, prompts, competitors, AI answers, sources, and contact requests.

Instructions

One report in full: the score, the industry and demand behind it, the prompts that were asked, the competitors and their scores, how each assistant answered, example answers with their sources, and every request to be contacted that came from the report page.

Call this after create_report to see whether the report finished, and to read what it found. A report still processing carries no score yet.

Input Schema

NameRequiredDescriptionDefault
reportIdYesId of the report, as create_report or list_reports reports it.

Output Schema

NameRequiredDescriptionDefault
idYes
urlYes
utmYes
brandYes
emailYes
reachYesHow far the brand sells: local, regional or national.
scoreYesVisibility of the brand in whole percent 0-100. null = the report is not ready yet.
domainYesWebsite without `www.`. null = the form carried no website.
modelsYesOne entry per assistant that answered; the others are left out.
statusYesprocessing until the assistants have answered, then ready, or error.
countryYesMarket the report was taken in, ISO 3166-1 alpha-2.
promptsYes
readyAtYesWhen it finished, ISO 8601 in UTC. null = not finished yet.
contactsYes
examplesYes
industryYes
languageYes
createdAtYesWhen the report was ordered, ISO 8601 in UTC.
projectIdYesThe project the report was converted into. null = still only a sample.
leadStatusYesnew, in_progress or done; moved in the PromptEye app, not through the API.
competitorsYesOther brands the same answers named, strongest first.
contactCountYesHow many times the brand asked to be contacted from the report page.
rankingPhrasesYes
monthlySearchesYesMonthly searches behind the prompts the report asked, as the traffic provider reports them.

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"
      +    },
      +    "competitors": {
      +      "description": "Other brands the same answers named, strongest first.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "score": {
      +            "description": "Its visibility, in whole percent 0-100.",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "score"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "contactCount": {
      +      "description": "How many times the brand asked to be contacted from the report page.",
      +      "type": "number"
      +    },
      +    "contacts": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "createdAt": {
      +            "description": "When the brand asked, ISO 8601 in UTC.",
      +            "type": "string"
      +          },
      +          "email": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "inviteeEmail": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "meetingAt": {
      +            "description": "Start of the meeting booked through Calendly, as Calendly sent it. null = none booked.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "phone": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "description": "calendly, email or phone: how the brand asked to be reached.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "createdAt",
      +          "email",
      +          "phone",
      +          "meetingAt",
      +          "inviteeEmail"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "country": {
      +      "description": "Market the report was taken in, ISO 3166-1 alpha-2.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "createdAt": {
      +      "description": "When the report was ordered, ISO 8601 in UTC.",
      +      "type": "string"
      +    },
      +    "domain": {
      +      "description": "Website without `www.`. null = the form carried no website.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "email": {
      +      "type": "string"
      +    },
      +    "examples": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "model": {
      +            "type": "string"
      +          },
      +          "prompt": {
      +            "type": "string"
      +          },
      +          "response": {
      +            "type": "string"
      +          },
      +          "sources": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "title": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "url": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "url",
      +                "title"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "prompt",
      +          "response",
      +          "model",
      +          "sources"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "industry": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "language": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "leadStatus": {
      +      "description": "new, in_progress or done; moved in the PromptEye app, not through the API.",
      +      "type": "string"
      +    },
      +    "models": {
      +      "description": "One entry per assistant that answered; the others are left out.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "answers": {
      +            "description": "How many of the prompts this assistant answered.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "averagePosition": {
      +            "description": "Mean place the brand took in the answers that named it, counting from 1.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "model": {
      +            "type": "string"
      +          },
      +          "score": {
      +            "description": "Visibility in this assistant's answers, in whole percent 0-100.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "model",
      +          "score",
      +          "answers",
      +          "averagePosition"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "monthlySearches": {
      +      "description": "Monthly searches behind the prompts the report asked, as the traffic provider reports them.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "projectId": {
      +      "description": "The project the report was converted into. null = still only a sample.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "prompts": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "rankingPhrases": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "reach": {
      +      "description": "How far the brand sells: local, regional or national.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "readyAt": {
      +      "description": "When it finished, ISO 8601 in UTC. null = not finished yet.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "score": {
      +      "description": "Visibility of the brand in whole percent 0-100. null = the report is not ready yet.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "processing until the assistants have answered, then ready, or error.",
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    },
      +    "utm": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "brand",
      +    "domain",
      +    "email",
      +    "status",
      +    "score",
      +    "reach",
      +    "country",
      +    "language",
      +    "utm",
      +    "leadStatus",
      +    "projectId",
      +    "contactCount",
      +    "createdAt",
      +    "readyAt",
      +    "url",
      +    "industry",
      +    "monthlySearches",
      +    "prompts",
      +    "rankingPhrases",
      +    "competitors",
      +    "models",
      +    "examples",
      +    "contacts"
      +  ],
      +  "type": "object"
      +}
  2. Addedv1.0.16

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful state semantics — a `processing` report returns no score yet — which an agent needs to interpret results, though it says nothing about latency, caching, or eventual consistency beyond that.

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 payload contents, then the usage condition. The long enumeration of returned fields is informative rather than filler, though it partly duplicates the output schema, which makes it slightly longer than strictly necessary.

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?

Covers purpose, triggering workflow, and the processing-state caveat. Since an output schema exists, return values needn't be described and their enumeration is a minor redundancy; nothing critical for correct invocation 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% for the single reportId parameter, and the description adds nothing about its format, source, or validity beyond what the schema already states ('as create_report or list_reports reports it'). Baseline 3 applies when the schema does the heavy lifting.

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+resource ('read one report in full') and enumerates the concrete payload the agent receives (score, industry, prompts, competitors, assistant answers, sources, contact requests). This clearly separates it from list_reports and create_report among siblings.

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?

Explicitly says to call it after create_report to check completion and read findings, and notes that a `processing` report carries no score yet. It does not name a competing alternative or state when-not to use it, but the workflow position is unambiguous.

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