Now live across the AI ecosystem: ChatGPT GPT Store · MCP Registry · mcp.so

Getting started

Run an AI visibility scan without leaving Claude, and know what the server can see

By Arnav Mukherjee, founder of TofuBofu · September 3, 2026

Last week of August, a homepage band of ours shipped two words that weren't true: "ChatGPT / Over MCP". Our review agent blocked it and it deserved blocking, twice over. Our Custom GPT doesn't speak MCP, and the ChatGPT surface that would speak MCP hasn't been submitted anywhere. "The protocol exists" and "a customer can use it from here" are different facts, and only the second one belongs on a page that sells something.

So this post does the thing our own marketing page has room for and skips. Full setup for Claude, Claude Code and any other MCP client, the paid-plan gate stated before you hit it, the exact tool contract with its real annotations, and a straight answer to the question a founder actually asks: what can this thing see once I've connected it.

Setup, three clients, three minutes

One gate first, because burying it would be rude: custom connectors need a paid Claude plan. That's Anthropic's rule, not ours. Our server has no API key, no OAuth and no account requirement, so if you're on a free Claude plan, use Claude Code or the website instead.

Claude web or Claude desktop. Go to Settings, then Connectors, then Add custom connector. Name it TofuBofu, URL https://tofubofu.com/mcp. Open a new chat and ask for what you want in plain language:

"Use TofuBofu to check AI visibility for acme.com, my email is you@company.com"

Claude Code. One line, no dialogs:

claude mcp add --transport http tofubofu https://tofubofu.com/mcp

Any other MCP client. It's a remote server over streamable HTTP, so the generic config block is all most clients want:

{ "mcpServers": { "tofubofu": { "type": "http", "url": "https://tofubofu.com/mcp" } } }

Two setup details that trip people up, both handled. Paste https://tofubofu.com/mcp into a browser and you won't get a raw JSON-RPC error about accepting text/event-stream. You'll get a human page whose heading reads "This is an MCP endpoint, not a web page", so the URL's safe to send to a colleague. And the endpoint is exactly /mcp, not /mcp/mcp, which is a mistake the framework's defaults invite.

If you'd rather look before connecting, ask the server what it offers over plain HTTP:

curl -s https://tofubofu.com/mcp \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

An MCP server is a security decision, so here's ours in full

The real objection to connecting anything to your assistant isn't setup friction. It's the question nobody in this category answers concretely: what does the other side get to see. The MCP answer is unusually good, and it generalises well beyond us. A server declares a fixed set of tools with typed inputs. Your assistant can call those tools and nothing else. There's no ambient access to your files, your chat history, your other connectors or your account, because none of that is a tool the server declared.

So the tool list is the entire attack surface, and you can read it before you connect with the curl above. Ours has exactly two entries.

Your assistant your files chat history other connectors your account none of it crosses the boundary the only crossing is a declared tool call scan_ai_visibility 2 required args, 6 optional readOnly false · destructive false openWorld true · starts a job get_visibility_report 1 arg: a report id readOnly true · destructive false openWorld false · a pure read domain, work email report id that's all

Tool one, scan_ai_visibility. Titled "Run AI visibility scan", annotated readOnlyHint=False, destructiveHint=False, idempotentHint=False, openWorldHint=True. Eight parameters, two of them required: domain and a work email. The optional six are geo_scope, locations, competitors, buyer_questions, sells_to and capacity. You get back a report id, a report URL, a status, and a flag saying whether we reused an existing scan.

Tool two, get_visibility_report. Titled "Get AI visibility report", annotated readOnlyHint=True and openWorldHint=False. It takes a report id and returns the brand, the visibility score, mention rate, share of voice, sentiment, up to three competitors, up to four fixes and the report URL. Call it while the scan's still running and you get a status of "running" with progress, never a half-formed answer. Give it an id we don't recognise and you get an error telling you to check the id.

Worth reading those annotations closely, because our own solutions page gets this wrong today and I'd rather correct it here than let it stand. It says both tools are read-only. They aren't. One reads, one starts a background job that reaches the open web, and neither is destructive. The hints exist because a missing hint is a straight rejection from the assistant marketplaces, and they're also the most honest one-line summary of what a tool does to you.

No connector, no install, same scan

Six AI engines, your buyers' real questions, and the firms they name instead of you. The web version takes a URL and an email.

Run your free scan

Claude speaks MCP to us, ChatGPT speaks REST

Nobody in this category distinguishes these carefully, and the sloppiness costs buyers real time. Three separate things wear the same "AI assistant integration" label:

Claude connects over MCP. Shipped and verifiable: the server's published in the official MCP registry as com.tofubofu/ai-visibility, and you can query the registry yourself rather than taking our word for it. There's a paid listing on mcp.so too, and PulseMCP ingests from the official registry on its own.

ChatGPT users get a Custom GPT, over REST. The TofuBofu AI Visibility Scanner is live in the GPT Store, and it's driven by an OpenAPI Action over our public REST API. The schema file's own title is "GPT Action schema". Same product, same scan pipeline, different protocol.

A ChatGPT App would speak MCP, and we haven't submitted one. Every technical requirement's met and the submission hasn't happened, so nothing on our site claims it. I'm telling you where the gap is rather than letting a band of eight words imply otherwise, because that's the mistake I opened this post with.

The limits, stated here instead of discovered later

1. The email is required, and it is a lead capture

There is no auth on this server, so your work email is how we identify you, how the report reaches you, and how the one-scan-per-company limit is enforced. Anyone with the URL can call both tools. That is deliberate for version one, and it is also why the tool surface is exactly two typed tools and nothing else.

2. One free scan per company every 30 days

The MCP path uses the same free-scan limit as the website funnel, so a repeat call inside the window hands back the existing report with reused set to true. Designed behaviour, not an error, and the assistant should tell you which one you got.

3. A free scan is a presence check, not a trend

Each question runs once instead of being sampled, and sentiment stays off. That is a real limitation and it is the honest shape of a free tier. Anything that needs history, weekly scans, sentiment, drafted content, CMS publishing or alerts, needs an account and is not available through the server.

4. The tool tells the assistant what it had to assume

Leave the optional fields empty and the response carries an assumed list and an assumption note, and the report says its framing was assumed. The docstring instructs the assistant to ask you for geo scope and customer type rather than guess, because a firm that sells across one country, scored on one city's questions, looks invisible when it is not.

5. A scan takes one to two minutes

Ask for the report immediately and you get a running status with progress. The tool schema itself is generated from our scan intake contract rather than hand-typed, and a test asserts the two match, so the four geo scopes cannot be spelled one way in the tool and another way on the scan form.

The placement is the whole argument

A founder wondering whether AI recommends their firm is almost always already inside an assistant when the thought arrives. They've just been handed a vendor list that didn't include them, or a competitor comparison they weren't in. Before MCP there was no way to run the check right there, in the conversation that prompted it. You'd bookmark a tool, forget the bookmark, and never find out.

G2's 2026 AI Search Insight Report puts numbers under that moment: across 1,076 B2B software buyers surveyed in March 2026, 51% begin vendor research with an AI chatbot more often than with Google, and 80% still use Google somewhere in the journey. Your buyers are running the query that decides your shortlist inside a chat window. Running the diagnostic in the same window closes a loop that used to need a browser tab and a decision.

One honest caveat on client coverage. Claude and Claude Code are the two we document end to end and the two I'd stake a claim on. Cursor, Windsurf and other clients that support remote MCP over streamable HTTP should work with the generic config above, and we haven't verified each of them ourselves. If one of them gives you trouble, the tools/list curl is the fastest way to prove the server's fine and the client's config is the problem.

Frequently asked questions

How do I add the TofuBofu MCP server to Claude?

In Claude web or Claude desktop: Settings, then Connectors, then Add custom connector. Name it TofuBofu and use the URL https://tofubofu.com/mcp. Start a new chat and ask something like: use TofuBofu to check AI visibility for acme.com, my email is you@company.com. In Claude Code the whole setup is one line: claude mcp add --transport http tofubofu https://tofubofu.com/mcp.

Do I need a paid Claude plan to use a custom connector?

Yes. Custom connectors need a paid Claude plan, which our own MCP landing page states before you try. That gate belongs to Claude, not to TofuBofu: the server itself has no API key and no account requirement. If you are on a free Claude plan, run the same scan from the website or from Claude Code instead.

What can the TofuBofu MCP server actually see?

Two tools with typed inputs, and nothing else. It receives the arguments the assistant sends to those tools: a domain, a work email, an optional geo scope, locations, competitors, buyer questions, customer types and capacity, plus a report id on the read tool. No files, no account, no other connector, no browsing history. A remote MCP server can only be called through the tools it declares, so the tool list is the whole attack surface and you can read it before connecting.

Is the TofuBofu MCP server read-only?

One of the two tools is. get_visibility_report is marked readOnlyHint true and openWorldHint false, because a report fetch is a pure read. scan_ai_visibility is marked readOnlyHint false, destructiveHint false, idempotentHint false and openWorldHint true, because starting a scan launches a background job that reaches the open web. Neither tool is destructive. Our own solutions page currently says both are read-only, and that sentence is wrong: the accurate version is that one tool reads, one starts a job, and neither destroys anything.

Can I use the TofuBofu MCP server from ChatGPT?

Not over MCP. ChatGPT users get the TofuBofu Custom GPT, which is live in the GPT Store and runs on an OpenAPI Action over our public REST API, a different protocol from MCP. A ChatGPT App, which would speak MCP, has not been submitted. We separate these three because a homepage band once collapsed them into ChatGPT over MCP and a review blocked it, correctly.

How can I inspect the server before I connect it?

Ask it for its tool list over plain HTTP, with no client and no connector: curl the endpoint https://tofubofu.com/mcp with a content-type of application/json and the JSON-RPC body for the tools/list method. You get back the two tool names, their descriptions, their typed parameter schemas and their annotations. Pasting the same URL into a browser is safe too: it serves a human page whose heading reads, this is an MCP endpoint, not a web page.

What are the limits of the free scan over MCP?

One free scan per company every 30 days, the same limit the website funnel uses. A repeat call inside that window returns the existing report with reused set to true, which is designed behaviour and not an error. The free scan is a presence check: each question runs once instead of being sampled, and sentiment stays off. Weekly scans, sentiment, drafted content, CMS publishing and alerts all need an account, and none of them are available through the MCP server. A scan takes one to two minutes, so an early report fetch returns a running status rather than a half-formed answer.

Sources and further reading

Related reading

The TofuBofu MCP server: what you get on each plan
What does ChatGPT say about your company?
How to measure AI visibility