For AI agents / Claude Code

Connect Claude Code to Pagegoat

No settings screens. One command, then approve in the browser.

bash
claude mcp add --transport http pagegoat https://mcp.pagegoat.com/mcp

Claude Code opens your browser to sign in to Pagegoat and approve access. Nothing is written to your shell history, there is no API key to manage, and the token is stored by Claude Code rather than pasted anywhere.

The Pagegoat consent screen headed 'Connect to Pagegoat', saying Claude Code wants to connect to your Pagegoat account and listing that it will be able to see the pages in your account and their settings, create, update and delete pages, and stay connected without asking again, above an Approve button.
The screen is served from auth.pagegoat.com — read that hostname before you approve. The name of the app asking is supplied by the app itself, which is why the dialog says Pagegoat cannot verify it.

Pick the right scope

The command above adds Pagegoat to the current project. That is usually what you want — the one repo that produces something worth publishing. To make it available in every project on the machine instead:

bash
claude mcp add --scope user --transport http pagegoat https://mcp.pagegoat.com/mcp
A terminal running claude mcp add with --scope user and the pagegoat MCP URL, which replies 'Added HTTP MCP server pagegoat with URL: https://mcp.pagegoat.com/mcp to user config' and names the config file it modified.
The reply names the scope it wrote to. Adding the server is the whole of what this does — the connection itself is made in the browser, the first time a session needs it.

Verify it either way by running /mcp inside a Claude Code session, which lists connected servers and their tools. Pagegoat should show seven: publish, update, list, read, set visibility, delete, and check plan.

The /mcp command in a Claude Code session replying 'Authentication successful. Connected to pagegoat.'
The first /mcp after adding the server is what triggers the browser round trip. This is the line you come back to.

Then just ask

Claude Code already has your files, so you can point at one by path instead of attaching it.

> publish dist/report.html to pagegoat, keep it private,
  and give me the link

  create_site      → pagegoat.com/sites/q3-report
  set_visibility   → { visibility: "private" }

  Published privately. Here's the link.
A real Claude Code session: the message 'publish the html site on pagegoat' with a local file path, a reply reading 'I'll read the file and publish it via the pagegoat MCP server', and the result 'Published: https://pagegoat.com/sites/new-years-day' followed by a note that it landed private because that is the account default.
The same shape in a real session. New pages land private unless your account default says otherwise, so the link is yours until you widen it.

This is the path worth wiring into something repeatable: a build step that renders a coverage report or a dashboard and republishes it to the same slug every time, so the URL you shared last month still shows this morning's numbers. update_site keeps the address stable across revisions.

For CI, where no one is present to approve an OAuth prompt, use the REST API with an API key from an environment variable instead.

Other terminals

Codex CLI and Gemini CLI both take Pagegoat as a remote streamable-HTTP MCP server at the same address:

https://mcp.pagegoat.com/mcp
  • Claude.ai — the browser version, with screenshots.
  • ChatGPT — needs Developer mode for the publish tools.

Questions

How do I add Pagegoat to Claude Code?

Run claude mcp add --transport http pagegoat https://mcp.pagegoat.com/mcp in your terminal. Claude Code opens your browser so you can sign in to Pagegoat and approve access, and stores the resulting token itself, so no API key is written to your shell history or any file you might commit. The command as written registers the server for the current project, which is usually what you want. Add --scope user to make it available in every project on the machine instead. Verify either way by running /mcp inside a Claude Code session, which lists connected servers and their tools — Pagegoat should show seven, covering publishing, updating, listing, reading, visibility, deletion, and checking your plan.

Can I use this from CI or a cron job?

Not the MCP connector, because OAuth needs a person present in a browser to approve the grant once. For unattended automation use the REST API instead: exchange an API key held in an environment variable for a short-lived JWT, then POST the file as multipart form data to create a site, or PUT to replace an existing one. That path is designed for exactly this, and keys can be narrowed by scope at creation so a pipeline that only needs to publish does not hold a credential that can also delete. A nightly job that renders a dashboard and republishes it to a stable URL is a handful of lines.

How do I keep the same URL when the file changes?

Use update_site rather than creating a new one. It replaces the contents behind an existing slug, so the address you shared last month still resolves and now shows the current build. This is the difference between a link that stays useful and a growing pile of near-identical sites, and it is worth being explicit about in the instruction — say update the existing page rather than publish this, or name the slug. Ask Claude Code to list your sites first if you cannot remember what the page is called. The same tool is available in every other client, so a page created from claude.ai can be updated from your terminal and the reverse.

One command, then a URL

Publishing starts at $2.99/month.

See plans