OperStack
Scores whether ChatGPT and other AI assistants can read, understand and quote a public website. Remote server, free tools need no account: audit_site, compare_sites, check_llms_txt.
Hosted MCP Server
npx add-mcp 'https://oper-stack.com/api/mcp/'Installs into Claude Code, Codex, Cursor and more
Documentation
Measure a site from wherever you already work
One address connects 5 free OperStack tools to any assistant that speaks MCP. Ask it whether a site can be quoted by an answer engine, compare it with rivals, or read your own visit counter, without leaving the window you are in. OperStack Watch subscribers add their key and get their weekly report in the same chat: see how.
The address
https://oper-stack.com/api/mcp/
Connect it
Pick the one you use. Every one of these is the whole setup, not the first step of it.
Claude Code
One command in the project you are working on.
claude mcp add --transport http operstack https://oper-stack.com/api/mcp/
Claude (desktop and web)
Customize, then Connectors, then Add, then Add custom connector. Paste the address and choose No sign-in. Works on the web and in the desktop app.
https://oper-stack.com/api/mcp/
ChatGPT
Needs a paid plan (Plus, Pro, Business, Enterprise or Edu) with Developer mode switched on: Settings, then Apps and Connectors, then Advanced settings. Then create a connector from a URL, paste the address and leave authentication as none.
https://oper-stack.com/api/mcp/
Codex
One command in your terminal.
codex mcp add operstack --url https://oper-stack.com/api/mcp/
Cursor
Opens Cursor and asks you to confirm. If it is not installed, nothing opens: use the lines below.
Or put this in.cursor/mcp.json in the project, or in ~/.cursor/mcp.json for every project.
{
"mcpServers": {
"operstack": { "url": "https://oper-stack.com/api/mcp/" }
}
}
VS Code and GitHub Copilot
Opens VS Code and asks you to confirm. If it is not installed, nothing opens: use the lines below.
Or put this in.vscode/mcp.json. Note the key here is servers, not mcpServers.
{
"servers": {
"operstack": { "type": "http", "url": "https://oper-stack.com/api/mcp/" }
}
}
Windsurf
Put this in ~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url.
{
"mcpServers": {
"operstack": { "serverUrl": "https://oper-stack.com/api/mcp/" }
}
}
Zed
Settings, then the context servers section of settings.json.
{
"context_servers": {
"operstack": { "source": "custom", "url": "https://oper-stack.com/api/mcp/" }
}
}
Anything else
Any client that accepts a remote MCP server over streamable HTTP. Paste the address, choose no authentication.
https://oper-stack.com/api/mcp/
What it can do, free
- Score a site for AI visibility. Scores any public site out of 100 on the five things an answer engine needs before it will quote a page: whether AI crawlers are allowed in, whether there is a map for agents (llms.txt), whether the entity is clear from schema, whether there is anything quotable, and whether pages carry dates and sources. Use it when someone asks whether ChatGPT or another assistant can read and quote a site. Reads up to 10 public pages. A site that turns away automated readers cannot be scored.
- Compare sites on the same scale. Runs the same AI-visibility scoring on two to four sites and returns them side by side, so a score means something. Use it to see where a site is losing answers to a rival, area by area. A site that turns away automated readers is reported as unreadable.
- Check the map a site offers to machines. Reads a site llms.txt, the file that tells an assistant which pages matter, and follows its links to see whether they still lead anywhere. Use it when someone asks about llms.txt or whether their map for AI assistants works.
- Read your own AI visit counter. Reports how many visits each AI assistant sent to a site that runs the free OperStack counter. Needs the private token from the counter link, which only the site owner has. Returns visit counts per assistant, not individual visitors.
- Is the visit counter actually on the site. Looks at a site page and says whether the OperStack visit counter line is really there, including the case where it is there carrying a different key. Use it when a counter reports nothing and the owner does not know why.
OperStack Watch subscribers
Your weekly Watch report, inside the chat
Watch asks ChatGPT and Perplexity your buyers' questions every week and emails you who they name and this week's fix. If you work in Claude, Codex or Cursor, you can ask for the same report there. Add your personal key to the connection above and ask in your own words:
- "Does ChatGPT name us this week?"
my_visibility - "Who does ChatGPT name instead of us?"
who_instead - "What is this week's fix? Give me the text to paste."
fix_of_the_week - "What changed since last week?"
what_changed - "Score rival.com by the same rules as our site."
check_rival - "Show our 10 buyer questions. Replace number 4 with..."
my_questions
The answers come from the same weekly record as your email, so the chat and the email say the same thing. Your key is in the email you get after subscribing and on My Watch. A new key (My Watch or Email settings) switches the old one off at once, and the key stops working when the subscription ends.
Claude Code
One command, with your key as a header.
claude mcp add --transport http operstack https://oper-stack.com/api/mcp/ --header "Authorization: Bearer YOUR_KEY"
Codex
Keep the key in an environment variable, then add the server once.
export OPERSTACK_KEY=YOUR_KEY
codex mcp add operstack --url https://oper-stack.com/api/mcp/ --bearer-token-env-var OPERSTACK_KEY
Cursor
In ~/.cursor/mcp.json, the same server with a headers line.
{
"mcpServers": {
"operstack": {
"url": "https://oper-stack.com/api/mcp/",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
VS Code and GitHub Copilot
In.vscode/mcp.json, with a headers line.
{
"servers": {
"operstack": {
"type": "http",
"url": "https://oper-stack.com/api/mcp/",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
Claude (web and desktop app)
Customize, then Connectors, then Add custom connector. Paste the address, choose No sign-in, then Add header: name Authorization, value below.
Bearer YOUR_KEY
ChatGPT and anything that takes only an address
Use the address with your key at the end. It works as the key itself, so do not share it. ChatGPT needs a paid plan with Developer mode.
https://oper-stack.com/api/mcp/?key=YOUR_KEY
Replace YOUR_KEY with your key, which starts with osw_. We connected Claude Code and Codex with a key, and Claude on the web without one, ourselves on 28 September 2026. One key makes up to 100 calls a day.
The Watch tools
- Does ChatGPT name us this week (Watch). Whether ChatGPT (and Perplexity, when it answered) named the subscriber in answers to their 10 buyer questions at the last weekly check, the trend week by week, and the share of answers against the competitors named. The same numbers as that week's Watch email.
- Who ChatGPT names instead of us (Watch). For each of the 10 buyer questions at the last weekly check: whether ChatGPT (and Perplexity) named the subscriber, and which businesses they named instead. Then the sites these answers were built from and where to get mentioned.
- This week's fix, ready to paste (Watch). The fix of the week from the last Watch email: the buyer question it answers, who ChatGPT named instead, what to change, and the text to put on the site, word for word as in the email.
- What changed since last week (Watch). What moved between the last two weekly checks: how many answers named the subscriber in ChatGPT and Perplexity, the share of answers against each competitor, and the buyer questions where they were named or dropped.
- Score a competitor by the same rules (Watch). Scores a competitor site out of 100 on the same rules as the OperStack free check and the Watch email, and puts it next to the subscriber's own score from the last weekly check.
- See or change our 10 buyer questions (Watch). Shows the 10 buyer questions Watch asks ChatGPT and Perplexity every week. Can also replace one question (number and new text) or all ten. Only change questions when the person asked for it. Changes apply from the next weekly check, and history starts again for a changed question.
OperStack Watch, 7 days free →
If you would rather it ran on your own machine
There is a local version as an npm package, with four tools: the same score and site comparison, the llms.txt check, and one thing this server cannot do: run the sixteen content gates over a folder of Markdown on your disk. It has no visit counter tools and no Watch tools. It has to be installed, and it works in clients that accept a command rather than a URL.
Frequently asked questions
Do I need an account or a key?
Not for the free tools. Three of them read public signals only and need nothing at all; the counter tools use the private token from your own counter link. The six Watch tools read your own weekly report, so they need the personal key that OperStack Watch subscribers get by email and on My Watch.
Will the Watch tools say the same as my weekly email?
Yes. They read the same record the weekly email is built from, with the same wording for the counts and the share of answers, so the chat and the email cannot disagree. A new week appears in both at the same time.
What happens to the key if I cancel or lose it?
When your subscription ends, the key stops opening your reports; the free tools keep working. If you lose the key or think someone else has it, get a new one on My Watch or in Email settings: the old one stops working at once. One key makes up to 100 calls a day.
What does it send anywhere?
The address you ask about, and nothing else. We do not see your code, your repository or your files: this is a remote server, so it only ever receives the arguments of the tool you called. The local package is the option to use if you want the measurement to run entirely on your own machine.
How is this different from the local MCP server?
The same measurements, reached two ways. The local package runs on your machine, can read a folder of Markdown, and has to be installed. This one is an address: it works in clients that only accept a URL, needs no install, and cannot touch your disk. Most people want this one.
Do the numbers match the ones on the site?
Yes, and deliberately. The tools call the same measurement code as the free check on this site and the paid reports, so a score an assistant reports and a score a page shows can never disagree.
Is it really free?
Yes. It is the same free check that has always been on this site, reachable from wherever you already work. We would rather you measure with our tools than somebody else’s.
Once you have a score
The free visit counter answers the other half of the question: not whether an assistant can quote you, but how many people it actually sent. And OperStack Watch asks ChatGPT and Perplexity every week whether they name you, and writes the fix of the week you can hand to anyone, including the assistant you just connected this to.