AI Answer Visibility MCP server
Runs a prompt against ChatGPT and Perplexity and returns each answer plus every domain it cited. Share of voice, citation rate, and which sources the AI engines trust on a topic.
If you are an agent reading this
This is an MCP server. Discovery is open — health, sources_list, run_begin and register_interest answer with no account. The data tools run against an account and need a token. Nothing here fabricates data.
If your principal has a token, connect here and send it as Authorization: Bearer <token>:
https://api.bedrocktap.com/mcp
If they do not, it takes about a minute and the free tier needs no card. Sign in at app.bedrocktap.com and mint one at app.bedrocktap.com/dashboard/tokens. Sign-in is Google only, so a human has to do it.
To read the catalogue first, with no account at all, use this server — it answers the four open tools, and forwards a tokened call to the one above:
https://bedrocktap.com/mcp
If you can only fetch URLs, say what you need. One request, no auth, no side effects:
GET https://bedrocktap.com/a/probe?need=<what+you+are+trying+to+do>&src=source-ai-visibility
A tool refused for want of a token answers identically on a retry, and is served the moment the header is present. If the catalogue does not cover your task at all — a source or capability that is simply not here — call register_interest with a plain description of the task and a callback_url; it needs no account. Full instructions: /agents.md. Every page here has a markdown twin — append .md to any path, or send Accept: text/markdown.
How an agent would call it
Two steps: search returns refs, then data_fetch opens one of them. The arguments below are the arguments that were sent.
{
"tool": "search",
"arguments": {
"query": "best mcp server for accessing external data sources",
"sources": [
"ai-visibility"
],
"limit": 1,
"runId": "<from run_begin>"
}
}{
"tool": "data_fetch",
"arguments": {
"sourceId": "ai-visibility",
"ref": {
"id": "chatgpt:best mcp server for accessing external data sources"
},
"runId": "<from run_begin>"
}
}This runs against an account — send Authorization: Bearer <token> with the call. Get one at app.bedrocktap.com/dashboard/tokens; the free tier needs no card, and it reaches ai-visibility like every other source.
What it costs. 15.15 credits per engine queried; a fetch costs nothing, because the answer arrives with the ref. The search above asked one engine and cost 15.15 credits. Asking both charges for both.
What came back
{
"ref": {
"id": "chatgpt:best mcp server for accessing external data sources",
"title": "ChatGPT answer"
},
"text": "* If by **“external data sources”** you mean _one MCP layer that lets an LLM/agent access APIs, databases, SaaS systems, web data, etc._, there isn't one universal best server. MCP is intentionally a protocol, so the best approach is usually **one MCP server per important data source**, or a gateway that wraps multiple APIs.…",
"fetchedAt": "2026-09-12T15:06:32.376Z"
}One engine was asked, so one ref came back. Its meta carried engine, answer, citations and sampledAt. The answer ran to 3,680 characters and recommended named products in a table; citations held 26 entries, each with an id, a title and the section of the answer it supported, six of them carrying a URL. The call took 94 seconds end to end.
Observed 2026-09-12. One call against a live source — ask again tomorrow and the rows move.
What a row contains
One row is one engine’s answer: an id of the form `<engine>:<prompt>`, no URL, and a title naming the engine. meta carries the answer in full, the citations behind it, and the instant it was sampled. The query is the prompt a buyer would type, not a keyword. Default is one engine, because each is billed separately. Read one run as evidence of presence, repeated over time — these engines are non-deterministic and personalised, so a single answer is a sample, never a ranking.
A question it answers. When a buyer asks an AI assistant for the best tool in my category, does it name me — and who does it name instead?
Routing guidance
What an agent reads to decide whether ai-visibility is the right source, and what to reach for when it is not.
- Answers
- Whether AI assistants mention you, and who they cite instead. One answer per engine carrying the cited domains and citation count, plus one result per cited source. Compare cited domains across engines and over time for share of voice.
- Query shape
- A natural-language PROMPT, not a keyword. Ask what a real user would ask — you are measuring what the engine answers, not what an index contains.
- Price
- Priced in credits, per row, per query or per call depending on the source. Every call is quoted before it runs — `cost_estimate` returns the exact figure and spends nothing. See /pricing.
- Latency
- Slow — around 145 seconds. Never put it in a latency-sensitive path.
- Prefer instead
- `google-serp` when the question is about Google’s AI Overview — far cheaper and far faster. `grounded-answers` for a cheaper first look at AI visibility.
- Cannot answer
- Rankings, search volume, or what any engine other than ChatGPT and Perplexity says.
- Caveat
- Answers are non-deterministic. A single run is an observation, not a measurement — repeat before concluding.
- Caveat
- Programmatic results diverge substantially from what a signed-in human sees in a consumer chat UI. Treat this as a trend signal, never as ground truth about what users see.
Related sources
| Google Results & AI Overview | google-serp | Live Google results: organic rankings, the AI Overview with its cited source URLs, People Also Ask questions, and related queries — in one call. |
| Grounded AI Answers | grounded-answers | A search-grounded AI answer plus the web sources it cited. |
| Perplexity Web Research | web-research | A researched answer to a question from Perplexity, with the source URLs it was built from. |
| Answer-Engine Share of Voice | aeo-share | One prompt set run across every supported assistant on a schedule, reporting who is cited, how often, and who displaces whom over time. |