Skip to main content
Glama

TofuBofu AI Visibility

Server Details

Free AI visibility scan for any B2B company: see how often AI engines recommend it, plus the fixes.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 65 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct roles: scan_ai_visibility initiates a background scan, while get_visibility_report retrieves the result by report_id. There is no overlap in purpose or inputs, so an agent should not misselect.

Naming Consistency5/5

Both tool names follow a consistent snake_case verb_noun pattern: scan_ai_visibility and get_visibility_report. The names are predictable and mirror the workflow order.

Tool Count4/5

Two tools is on the low end for an MCP server, but it is justified here because the service is a narrow two-step workflow: start a scan, then retrieve the report. Each tool is necessary and there is no apparent bloat.

Completeness5/5

The scan lifecycle is complete: scan_ai_visibility returns a report_id and status, and get_visibility_report provides progress plus final results, including a report_url. No essential operation for this domain appears to be missing.

Available Tools

2 tools
get_visibility_reportA
Read-only
Inspect

Fetch the results of an AI-visibility scan started with scan_ai_visibility.

Args:
    report_id: The id returned by scan_ai_visibility.

Returns:
    While running: {status: "running", progress}. When done: the visibility
    score, how often AI mentions the brand, share of voice, top competitors
    winning the answers, and the highest-priority fixes, plus the report_url.
ParametersJSON Schema
NameRequiredDescriptionDefault
report_idYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already set readOnlyHint=true and destructiveHint=false. The description adds behavioral context by describing two possible return states ('while running' vs 'when done'), which clarifies the polling aspect and output structure, going beyond what annotations provide.

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 description is reasonably concise with three sentences: one stating the purpose, and two structured as 'Args' and 'Returns' sections. It is front-loaded and avoids unnecessary words, though could be slightly tighter.

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?

For a tool with one parameter, no output schema, and good annotations, the description covers the purpose, parameter origin, and complete return behavior (including polling states). It fully equips an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the single parameter 'report_id' as 'The id returned by scan_ai_visibility,' adding meaningful context beyond the schema (which has no description and 0% coverage). This informs the agent where the value comes from.

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 description clearly states 'Fetch the results of an AI-visibility scan started with scan_ai_visibility,' which specifies the verb (fetch), resource (results of AI-visibility scan), and explicitly names the sibling tool (scan_ai_visibility) to distinguish itself.

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 description indicates that this tool should be used after scan_ai_visibility has provided a report_id, providing clear context for when to use it. It does not explicitly state when not to use it or list alternatives, but the linkage to the sibling tool is sufficient.

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

scan_ai_visibilityAInspect

Start a free AI-visibility scan for a B2B company's website.

Checks how often AI engines (ChatGPT, Claude, Perplexity, Gemini, Google AI
Mode, Microsoft Copilot) name the company when buyers ask for vendor
recommendations, and finds the gaps. The scan runs in the background
(roughly 1-2 minutes); call get_visibility_report with the returned
report_id to read the score and findings.

ASK THE USER for geo_scope and sells_to before calling, if you do not
already know them. Everything past `email` is optional and the scan runs
without it, but geo_scope changes EVERY question we generate: a firm that
sells across one country, scored on one city's questions, looks invisible
when it is not. Guessing is worse than asking, and asking costs one line of
conversation. Where you do not know, omit the field rather than inventing a
plausible value: an omitted field is recorded as unknown, and the report
says its framing was assumed.

Every parameter carries its own description, generated from the one intake
contract the in-app scan form renders from, so what you are told here and
what a customer is asked are the same question.

Returns:
    report_id, a report_url to view live, whether an existing report was
    reused (free scan already used this month), and which intake answers
    were missing, so you can offer to re-run with them.
ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe user's work email. Required: we send the finished report there and it identifies the account. One free scan per email per month.
domainYesThe company's website or domain, e.g. "acme.com".
capacityNoWho will do the fixes? We size and sequence the plan to match. A solo founder does not get a list built for a five-person team. One of: solo (Just me); one_marketer (One marketer); small_team (A small team, 2 to 4); full_team (A full team, 5 or more). Shapes the fix plan, which is generated in the tail after the engines answer. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer.
sells_toNoWhat size and type of customer? SMB and enterprise are different queries with different winners. Shapes the same. 'Best sales engagement platform for SMB teams' is not the same query as 'for enterprise revenue orgs'. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer.
geo_scopeNoWhere do you sell? Getting this wrong skews the whole report: a national firm scored on one city's queries looks invisible, and a local one scored nationally looks unwinnable. One of: global (Anywhere); national (Across one country); national_local (National, with a local angle); local (My own city or region). Shapes every buying query. This is the single highest-leverage answer here. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer.
locationsNoWhich places? The country you sell across, or the cities you are bound to. Shapes which geography goes into a localized buying query. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer.
competitorsNoWho would a buyer otherwise pick? Companies the user says a buyer would pick instead of them. We track whoever the engines name either way, so this is the user's own view rather than the whole comparison set. Shapes the comparison set, the mismatch between who you name and who the engines do, and which of those two a given finding is about. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer.
buyer_questionsNoQueries your buyers ask. Queries this company's buyers actually ask. They are put to the engines verbatim and tracked scan over scan, which is what makes a trend line mean anything. Shapes the queries themselves, pinned ahead of the generated ones. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description is not needed to state that. The description adds valuable behavioral details: the scan runs in the background (1–2 minutes), returns a report_id and report_url, may reuse an existing report when the monthly free scan is used, and reports missing intake answers. This goes well beyond the annotations and gives the agent a clear model of side effects and workflow.

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 description is substantial but justified for an 8-parameter async tool. It is front-loaded with purpose, then explains workflow, usage guidance, and returns in a logical order. While some sentences are lengthy, they all carry meaningful content and no repetition. It earns a 4 rather than a 5 due to minor redundancy (e.g., restating the free-scan quota that also appears in the schema), but it remains efficient.

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?

For a complex tool with no output schema, the description fully covers what an agent needs: what it does, how long it takes, what to ask the user, how to handle unknown values, what it returns (report_id, report_url, reuse status, missing answers), and the next step (call get_visibility_report). Combined with thorough schema descriptions for each parameter, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description adds extra value by singling out geo_scope and sells_to as the parameters to always ask about, explaining their impact ('a firm that sells across one country, scored on one city's questions, looks invisible') and reiterating the omit-vs-guess policy. It also confirms that parameter descriptions match the intake contract, which helps the agent trust them. This lifts the score above 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 opening sentence states a specific verb ('Start'), a clear resource ('a free AI-visibility scan'), and the target ('a B2B company's website'). It further clarifies what the scan checks (how often AI engines name the company, finding gaps) and explicitly names the sibling tool (get_visibility_report) that reads the results, making the distinction obvious.

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?

The description gives direct, actionable guidance: 'ASK THE USER for geo_scope and sells_to before calling, if you do not already know them.' It explains why guessing is worse ('Guessing is worse than asking') and how to handle unknown values ('omit the field rather than inventing a plausible value'). It also tells the agent to call get_visibility_report afterward, effectively routing the workflow.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedscan_ai_visibility4 fields changed
      • changedInput schema / properties / buyer_questions / description
        Previous value: -"Questions your buyers ask. Questions this company's buyers actually ask. They are put to the engines verbatim and tracked scan over scan, which is what makes a trend line mean anything. Shapes the questions themselves, pinned ahead of the generated ones. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."New value: +"Queries your buyers ask. Queries this company's buyers actually ask. They are put to the engines verbatim and tracked scan over scan, which is what makes a trend line mean anything. Shapes the queries themselves, pinned ahead of the generated ones. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • changedInput schema / properties / geo_scope / description
        Previous value: -"Where do you sell? Getting this wrong skews the whole report: a national firm scored on one city's questions looks invisible, and a local one scored nationally looks unwinnable. One of: global (Anywhere); national (Across one country); national_local (National, with a local angle); local (My own city or region). Shapes every buying question. This is the single highest-leverage answer here. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."New value: +"Where do you sell? Getting this wrong skews the whole report: a national firm scored on one city's queries looks invisible, and a local one scored nationally looks unwinnable. One of: global (Anywhere); national (Across one country); national_local (National, with a local angle); local (My own city or region). Shapes every buying query. This is the single highest-leverage answer here. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • changedInput schema / properties / locations / description
        Previous value: -"Which places? The country you sell across, or the cities you are bound to. Shapes which geography goes into a localized buying question. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."New value: +"Which places? The country you sell across, or the cities you are bound to. Shapes which geography goes into a localized buying query. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • changedInput schema / properties / sells_to / description
        Previous value: -"What size and type of customer? SMB and enterprise are different questions with different winners. Shapes the same. 'Best sales engagement platform for SMB teams' is not the same question as 'for enterprise revenue orgs'. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."New value: +"What size and type of customer? SMB and enterprise are different queries with different winners. Shapes the same. 'Best sales engagement platform for SMB teams' is not the same query as 'for enterprise revenue orgs'. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
  2. 1 tool update
    • Changedscan_ai_visibility8 fields changed
      • addedInput schema / properties / buyer_questions / description
        Added value: +"Questions your buyers ask. Questions this company's buyers actually ask. They are put to the engines verbatim and tracked scan over scan, which is what makes a trend line mean anything. Shapes the questions themselves, pinned ahead of the generated ones. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • addedInput schema / properties / capacity / description
        Added value: +"Who will do the fixes? We size and sequence the plan to match. A solo founder does not get a list built for a five-person team. One of: solo (Just me); one_marketer (One marketer); small_team (A small team, 2 to 4); full_team (A full team, 5 or more). Shapes the fix plan, which is generated in the tail after the engines answer. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • addedInput schema / properties / competitors / description
        Added value: +"Who would a buyer otherwise pick? Companies the user says a buyer would pick instead of them. We track whoever the engines name either way, so this is the user's own view rather than the whole comparison set. Shapes the comparison set, the mismatch between who you name and who the engines do, and which of those two a given finding is about. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • addedInput schema / properties / domain / description
        Added value: +"The company's website or domain, e.g. \"acme.com\"."
      • addedInput schema / properties / email / description
        Added value: +"The user's work email. Required: we send the finished report there and it identifies the account. One free scan per email per month."
      • addedInput schema / properties / geo_scope / description
        Added value: +"Where do you sell? Getting this wrong skews the whole report: a national firm scored on one city's questions looks invisible, and a local one scored nationally looks unwinnable. One of: global (Anywhere); national (Across one country); national_local (National, with a local angle); local (My own city or region). Shapes every buying question. This is the single highest-leverage answer here. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • addedInput schema / properties / locations / description
        Added value: +"Which places? The country you sell across, or the cities you are bound to. Shapes which geography goes into a localized buying question. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
      • addedInput schema / properties / sells_to / description
        Added value: +"What size and type of customer? SMB and enterprise are different questions with different winners. Shapes the same. 'Best sales engagement platform for SMB teams' is not the same question as 'for enterprise revenue orgs'. Omit it rather than guessing: an omitted answer is recorded as unknown, a guessed one is indistinguishable from a real answer."
  3. 1 tool update
    • Changedscan_ai_visibility6 fields changed
      • addedInput schema / properties / buyer_questions
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Buyer Questions"
        +}
      • addedInput schema / properties / capacity
        Added value: +{
        +  "default": "",
        +  "title": "Capacity",
        +  "type": "string"
        +}
      • addedInput schema / properties / competitors
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Competitors"
        +}
      • addedInput schema / properties / geo_scope
        Added value: +{
        +  "default": "",
        +  "title": "Geo Scope",
        +  "type": "string"
        +}
      • addedInput schema / properties / locations
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Locations"
        +}
      • addedInput schema / properties / sells_to
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sells To"
        +}
  4. 2 tool updates
    • First observedget_visibility_report
    • First observedscan_ai_visibility

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables instant scanning of any business to check if AI engines recommend it, providing verbatim evidence.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Evaluates any website's AI visibility with 15 checks across crawlability, structure, content, and connectivity, and provides actionable fixes.
    2 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Audit your brand's visibility across ChatGPT, Perplexity, Claude, and Google AI - get citation rates, AEO health scores, content gap analysis, and a 9-page content suite to rank in AI-generated answers.
    5
    56 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables users to scan any website for AI search visibility, producing AEO, GEO, agent readiness, and mention-readiness scores along with AI identity and business profile insights. Paid tools extend this to competitive comparisons, detailed audits, and generated fixes.
    4
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources