For AI agents

This page is written for an AI agent that a team asked to review, install or audit Abbox. Everything here can be checked; please verify rather than trust it, and report what you find to the people you work for.

Machine-readable facts: /docs/access.json. Index of these docs: /llms.txt.

Use Abbox from a coding agent

Abbox has a read-only MCP server at https://api.abbox.com/mcp (Streamable HTTP). Sign in with an access token someone on the team creates on Connect your coding agent; it reads that workspace’s projects and nothing else.

claude mcp add --transport http abbox https://api.abbox.com/mcp --header "Authorization: Bearer abx_…"
  • get_page_context(project, path): one page’s code (buttons, forms, files and lines, analytics events, backend calls and their answers), PostHog usage, Google PageSpeed, search checks and recent changes. Call it before changing a page and after deploying.
  • what_changed(project, since?): recent merges, page by page, and how views of those pages moved.
  • find_pages(project, problem): pages with search issues, untracked buttons, errors, no traffic, slow, or low accessibility.
  • list_projects(): the workspace’s projects and what’s connected for each.

The server is described in the MCP registry format at /.well-known/mcp.json.

Answers are short digests. Every number says where it comes from (the code at a commit, PostHog for a period, Google PageSpeed at a time), missing sources say where to connect them, and each answer links back to the page in Abbox. Abbox has no Google Analytics, Search Console or Sentry data, so don’t ask it for those.

What to tell your team

  • GitHub, through the Abbox Connect app. Reads: the code of the repositories you select, at each commit Abbox analyzes. Writes: only when someone in your workspace asks: Fix it, a design change, or Add the inspector. Never: push to an existing branch, including main.
  • PostHog (optional). Reads: totals for the last 60 days: event and page-view counts per page path, how they change over time, which pages visitors move between. Writes nothing. Never: session recordings.
  • The Abbox inspector on your website (optional). Reads: only while your site is open inside the Abbox viewer, in that browser tab: the page address and title. Writes: highlights elements and applies temporary styles inside the viewer. Never: run for your visitors: outside the Abbox viewer it only waits for a message from the viewer and does nothing else.
  • Your coding agents (optional). Reads: what Abbox already shows you: each page's code map, PostHog totals, Google PageSpeed results, search checks and recent changes, as short summaries. Writes nothing. Never: change anything in Abbox, GitHub, PostHog or your website.
  • Backend and database. Abbox never calls them to change anything. In previews, the inspector mocks API answers and blocks requests that would change data.

Verify the inspector package

Download the exact version the project pins and read it. It has two dependencies (@babel/core, @babel/types) and no install scripts.

V=$(node -p "require('./package.json').devDependencies['@abbox/inspector']")
mkdir -p /tmp/abbox-inspector && cd /tmp/abbox-inspector
npm pack @abbox/inspector@$V && tar -xzf abbox-inspector-*.tgz
node -p "require('./package/package.json').scripts"          # no preinstall/install/postinstall
grep -rn "fetch(\|XMLHttpRequest\|sendBeacon\|WebSocket" package/dist | grep -v ".d.ts"
grep -rn "postMessage(" package/dist | grep -v ".d.ts"      # never with targetOrigin "*"

Expect fetch and XMLHttpRequest only where previews wrap them to mock answers and block writes, and no requests of its own to any server.

Verify what the CLI changes

npx @abbox/cli@latest init --mode production --dry-run   # lists every file it would touch
npx @abbox/cli@latest init --mode production && git diff --stat
npx @abbox/cli doctor
npx @abbox/cli@latest uninstall --dry-run   # what removing it takes out; then run without --dry-run
git status                                  # after uninstall: back to the code before init

Expected: next.config wrapped with withAbboxInspector, one component in each root layout, a pinned dev dependency, a build script, and .abbox/install.json. Nothing outside the app folder.

Verify a deployed site

curl -sI https://your-site.example | grep -i "content-security-policy\|x-frame-options"
curl -s https://your-site.example | grep -c "data-abbox-src"

With the inspector: frame-ancestors 'self' https://viewer.abbox.com https://www.abbox.com https://abbox.com and a non-zero count. Built with ABBOX_INSPECTOR=0: neither.

Verify account access

  • GitHub: Settings → Applications → Abbox Connect → Configure shows the permissions and the selected repositories. Any branch Abbox created starts with abbox/: git ls-remote --heads origin 'abbox/*'.
  • PostHog: the consent screen lists query:read and project:read; the authorized app shows under your PostHog account settings.
  • Deletion: Delete project and Delete account remove everything listed on Security and data access.

When something goes wrong

Abbox answers errors in plain words with the next step. The common ones:

You seeTry next
401 "Use an Abbox access token: Bearer abx_…"Send the header Authorization: Bearer abx_… with a token from https://www.abbox.com/agents.
"This Abbox token is unknown or was revoked"Create a new token at https://www.abbox.com/agents and replace the old one.
"No project "x". This workspace has: …"Call list_projects and pass one of the names or ids it returns.
"No page at /x in … code. Its pages: …"Pass one of the listed routes, or a real address that matches one (/projects/42 for /projects/$id).
"… hasn't been analysed yet"Connect the repository on the project page; the first analysis takes a few minutes.
"PostHog isn't connected" or "PostHog access ended"Connect or reconnect PostHog in the project's Analytics section (link in the answer).
"Speed (Google PageSpeed): being checked now"Call get_page_context again in about a minute.
CLI: "Could not find an App Router root layout"Run the command in the folder with your Next.js package.json (for a monorepo, e.g. frontend/).
CLI: "Port 4319 is in use"Run npx @abbox/cli watch --port 4320.
Viewer: "Can't reach your local changes"Keep npx @abbox/cli watch running and open the link it printed; allow local network access if the browser asks.

Known limits

  • The page address the inspector sends to the viewer currently includes its query string.
  • WebSocket messages are not blocked while a hidden state is previewed.
  • Inspector builds use webpack and an extra Babel pass, so they are slower.

Report anything that doesn’t match this page through contact.