Skip to main content
Glama

SurfacedBy AI Visibility & GEO Audit

Check whether an AI answer cites or names you

surfacedby_analyze_answer_evidence
Read-onlyIdempotent

Check one AI answer the user pasted: whether it cites the business with a link, names it without one, or leaves it out. Classifies cited sources, such as review sites, best-of lists, forums, competitors and the business's own pages, reads Google and Gemini redirect links to their destinations, and summarizes the visible source mix. Suggests verification against the linked sources or the business's own pages. The answer alone cannot establish why a model omitted the business. Runs no AI queries and does not verify factual claims without separate page inspection.

Input Schema

NameRequiredDescriptionDefault
answerYes
languageNo
platformNo
brand_nameNo
business_urlYes
competitor_domainsNo

Output Schema

NameRequiredDescriptionDefault
platformNo
presenceYes
next_stepsNo
limitationsNo
answer_sha256Yes
cited_sourcesNo
evidence_kindNosupplied_answer_observation
matched_termsYes
visible_citationsYes
business_citationsYes
brand_name_ambiguousYes
source_concentrationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedOutput schema / $defs / AnswerDiagnosis
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Why an answer that does not cite the business most likely leaves it out.",
      -  "properties": {
      -    "basis": {
      -      "title": "Basis",
      -      "type": "string"
      -    },
      -    "failure_mode": {
      -      "title": "Failure Mode",
      -      "type": "string"
      -    },
      -    "label": {
      -      "title": "Label",
      -      "type": "string"
      -    },
      -    "play": {
      -      "title": "Play",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "failure_mode",
      -    "label",
      -    "play",
      -    "basis"
      -  ],
      -  "title": "AnswerDiagnosis",
      -  "type": "object"
      -}
    • addedOutput schema / $defs / SourceConcentration / description
      Added value: +"Format mix among outside links, excluding owned, competitor and untyped links.\n\nCounts and shares describe this format-bearing subset, not all visible citations."
    • removedOutput schema / properties / diagnosis
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "$ref": "#/$defs/AnswerDiagnosis"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null
      -}
  2. Changed11 schema fields changed
    • addedInput schema / properties / competitor_domains
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 10,
      +  "title": "Competitor Domains",
      +  "type": "array"
      +}
    • addedInput schema / properties / platform
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "chatgpt",
      +        "perplexity",
      +        "gemini",
      +        "claude",
      +        "ai_mode",
      +        "grok",
      +        "deepseek",
      +        "other"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Platform"
      +}
    • addedOutput schema / $defs / AnswerDiagnosis
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Why an answer that does not cite the business most likely leaves it out.",
      +  "properties": {
      +    "basis": {
      +      "title": "Basis",
      +      "type": "string"
      +    },
      +    "failure_mode": {
      +      "title": "Failure Mode",
      +      "type": "string"
      +    },
      +    "label": {
      +      "title": "Label",
      +      "type": "string"
      +    },
      +    "play": {
      +      "title": "Play",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "failure_mode",
      +    "label",
      +    "play",
      +    "basis"
      +  ],
      +  "title": "AnswerDiagnosis",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / CitedSource
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "One link an answer cites, classified by what kind of source it is.",
      +  "properties": {
      +    "destination": {
      +      "title": "Destination",
      +      "type": "string"
      +    },
      +    "domain": {
      +      "title": "Domain",
      +      "type": "string"
      +    },
      +    "owner": {
      +      "enum": [
      +        "business",
      +        "competitor",
      +        "third_party"
      +      ],
      +      "title": "Owner",
      +      "type": "string"
      +    },
      +    "redirect": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "resolved",
      +            "unresolved"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Redirect"
      +    },
      +    "source_type": {
      +      "title": "Source Type",
      +      "type": "string"
      +    },
      +    "source_type_label": {
      +      "title": "Source Type Label",
      +      "type": "string"
      +    },
      +    "url": {
      +      "title": "Url",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url",
      +    "destination",
      +    "domain",
      +    "source_type",
      +    "source_type_label",
      +    "owner"
      +  ],
      +  "title": "CitedSource",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / NextStep
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "A deterministic pointer to the audit step this result supports next.",
      +  "properties": {
      +    "action": {
      +      "title": "Action",
      +      "type": "string"
      +    },
      +    "step": {
      +      "title": "Step",
      +      "type": "string"
      +    },
      +    "tool": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Tool"
      +    }
      +  },
      +  "required": [
      +    "step",
      +    "action"
      +  ],
      +  "title": "NextStep",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / SourceConcentration
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "classified_sources": {
      +      "title": "Classified Sources",
      +      "type": "integer"
      +    },
      +    "dominant_share_percent": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Dominant Share Percent"
      +    },
      +    "dominant_source_type": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Dominant Source Type"
      +    },
      +    "placement_dominant": {
      +      "default": false,
      +      "title": "Placement Dominant",
      +      "type": "boolean"
      +    },
      +    "placement_share_percent": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Placement Share Percent"
      +    }
      +  },
      +  "required": [
      +    "classified_sources"
      +  ],
      +  "title": "SourceConcentration",
      +  "type": "object"
      +}
    • addedOutput schema / properties / cited_sources
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/CitedSource"
      +  },
      +  "title": "Cited Sources",
      +  "type": "array"
      +}
    • addedOutput schema / properties / diagnosis
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/AnswerDiagnosis"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / next_steps
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/NextStep"
      +  },
      +  "title": "Next Steps",
      +  "type": "array"
      +}
    • addedOutput schema / properties / platform
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Platform"
      +}
    • addedOutput schema / properties / source_concentration
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/SourceConcentration"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  3. First observed

TDQS

A3.9/5.0
Behavior4/5

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

With readOnly/openWorld/idempotent annotations covering the safety profile, the description still adds real value: it resolves Google and Gemini redirect links, classifies source types, and explicitly limits itself ('cannot establish why a model omitted the business', no AI queries, no factual verification). It does not discuss response latency or fetch failures, but the substantive behavioral limits are disclosed.

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?

The core check is front-loaded in the first sentence, and each subsequent sentence adds distinct information — classification scope, redirect handling, suggested follow-up, and limits. It is somewhat dense at five sentences, but nothing is purely redundant.

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?

An output schema exists, so return-value explanation is not required, and annotations cover the safety profile. Given six parameters with no schema descriptions, the description covers purpose, behavior, and boundaries well, though it leaves gaps on parameter-level meaning (platform/language) that would help an agent call it 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 coverage is 0% across six parameters, so the description must carry the full burden. It gives context for the answer and competitor input ('competitors', 'the business'), but never explains the role of `language`, `platform`, or how `brand_name` differs from `business_url`, leaving meaningful ambiguity for half the parameters.

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 gives a specific verb and object — 'Check one AI answer the user pasted' — and enumerates the three outcomes (cites with link, names without link, leaves out). It does not explicitly contrast itself with siblings like get_ai_source_landscape or inspect_page_evidence, so an agent must infer the distinction, but the scope is unambiguous.

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?

The pasted-answer framing makes clear when to invoke it, and the closing sentences ('Runs no AI queries and does not verify factual claims without separate page inspection') provide when-not guidance that implicitly routes verification work to the page-inspection sibling. It stops short of naming an explicit alternative tool or prerequisite.

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.