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

prompteye-mcp

Official

Check which Google data the project has

get_google_status
Read-only

Whether Search Console and Google Analytics are bound to the project, and how their last sync went. Call this when a Google figure looks wrong or empty, or before promising a report built on one.

Instructions

Whether Search Console and Google Analytics are bound to the project, and how their last sync went. Call this when a Google figure looks wrong or empty, or before promising a report built on one. get_integrations_status answers the same question for the bot tracker and the sitemap as well.

Both integrations are bound to the project in the PromptEye app. A project with nothing bound answers with zeros and empty lists, which reads exactly like a site nobody visits — so call get_google_status before reporting a zero as a finding, and say which of the two it was.

Input Schema

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

Output Schema

NameRequiredDescriptionDefault
analyticsYes
searchConsoleYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.0.28
    • addedInput schema / additionalProperties
      Added value: +false
    • 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": {
      +    "analytics": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "accountName": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "connected": {
      +          "type": "boolean"
      +        },
      +        "propertyId": {
      +          "description": "The bound Google Analytics property. null = none bound.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "propertyName": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "sync": {
      +          "anyOf": [
      +            {
      +              "$ref": "#/properties/searchConsole/properties/sync/anyOf/0"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "connected",
      +        "propertyId",
      +        "propertyName",
      +        "accountName",
      +        "sync"
      +      ],
      +      "type": "object"
      +    },
      +    "searchConsole": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "connected": {
      +          "type": "boolean"
      +        },
      +        "permissionLevel": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "siteUrl": {
      +          "description": "The bound property as Google names it, e.g. sc-domain:example.com. null = none bound.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "sync": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "error": {
      +                  "description": "Why the last sync failed. null = it works.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "failedSince": {
      +                  "description": "When the sync started failing, ISO 8601 in UTC. null = it works.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "lastSyncedAt": {
      +                  "description": "When the last successful sync finished, ISO 8601 in UTC. null = before the first one.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "lastSyncedAt",
      +                "failedSince",
      +                "error"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "connected",
      +        "siteUrl",
      +        "permissionLevel",
      +        "sync"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "searchConsole",
      +    "analytics"
      +  ],
      +  "type": "object"
      +}
  3. Addedv1.0.16

TDQS

A4.6/5.0
Behavior5/5

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

Read-only and open-world are already in annotations, so the description correctly spends its words on non-obvious behavior: an unbound project returns zeros and empty lists that are indistinguishable from a genuinely unvisited site. That interpretive trap is exactly the 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.

Conciseness4/5

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

Front-loaded with the outcome, then the call conditions, then the interpretation caveat. The 'reporting a zero as a finding' point appears twice in slightly different phrasing, which is mild redundancy but reinforces the tool's main failure mode.

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?

Output schema covers return values and annotations cover safety, so the only thing the description needs to supply is when to call and how to interpret an empty result—both are covered. Nothing needed to invoke or read this tool correctly 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?

With one parameter at 100% schema coverage, the schema already explains projectId and its isolation rationale in detail. The description adds nothing about the parameter, which is acceptable but no value beyond baseline.

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?

The first sentence names the concrete resources (Search Console and Google Analytics) and states exactly what is reported: binding status and last sync outcome. It also explicitly separates itself from get_integrations_status, which covers the bot tracker and sitemap, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers (a Google figure looks wrong or empty, before promising a report built on one) and names the sibling that covers the other integrations. The final instruction—call it before reporting a zero as a finding—turns guidance into an actionable precondition.

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