MCP setup
Connect Dealpages to your agent
One endpoint, one key, one command. Dealpages is a remote MCP server over Streamable HTTP — nothing to install or run locally, no Node, no npm.
1 · Get a key
Sign in with your email — no password, just a link. In your account, open Connect and press Create new key and copy it. Keys are shown once; revoke and re-create anytime. (Using claude.ai? Skip this step — it signs you in instead.)
2 · Connect your client
claude.ai (web and desktop app)
No key needed. Settings → Connectors → Add custom connector → URL https://app.dealpages.app/mcp. Claude sends you to Dealpages to sign in with your email and press Allow; that's it. Disconnect any time from Connected apps under Connect in your account.
Claude Code
claude mcp add dealpages --transport http https://app.dealpages.app/mcp \ --header "Authorization: Bearer YOUR_API_KEY"
Restart your session after adding. The Connect page in your account shows this command with your real key filled in when you create one. (Claude Code can also connect without a key — run the command without the header and it will open the sign-in page.)
Codex
Add to ~/.codex/config.toml — Codex reads the key from an environment variable rather than the config file:
[mcp_servers.dealpages] url = "https://app.dealpages.app/mcp" bearer_token_env_var = "DEALPAGES_API_KEY"
Then set export DEALPAGES_API_KEY=your_key in your shell profile so it's present when Codex launches.
ChatGPT
Settings → Connectors → Advanced → Developer mode, then add a connector with the URL https://app.dealpages.app/mcp and the Authorization: Bearer YOUR_API_KEY header.
Any other MCP client
Standard MCP over Streamable HTTP at https://app.dealpages.app/mcp. Two ways in: a bearer header carrying your API key, or OAuth 2.1 — the endpoint advertises its authorization server the standard way, so any client that supports remote MCP sign-in (PKCE, dynamic or metadata-document client registration) can connect with no key at all.
3 · Verify it's connected
Ask your agent:
List your dealpages tools.
You should see the 26 tools below. Prefer a terminal check? This returns your email:
curl https://app.dealpages.app/api/whoami \ -H "Authorization: Bearer YOUR_API_KEY"
The tools
What your agent can do once connected. You never call these yourself — you ask in plain language ("publish a recap page for Acme") and the agent picks the right tool.
| Tool | What it does |
|---|---|
publish_page | Publish a complete HTML document as a live page; returns the URL. |
check_page | Run every publish check on a page without publishing it. |
update_page | Publish a new version of an existing page — every shared link shows it immediately. |
list_pages | All your pages with state, version, and link counts. |
get_page | One page's details: links, sections, warnings, optionally the current HTML or one section's HTML. |
mint_link | Create a tracked link for one stakeholder (the per-person URL you actually share). |
mint_links | Mint links for up to 50 people at once, with a share line each. |
list_links | Every link for a page, with URLs and a ready-to-paste share line per stakeholder. |
revoke_link | Kill one stakeholder's link (wrong inbox, left the deal) without touching the page. Reversible. |
get_engagement | What happened since you last asked: who read what, for how long, new-viewer signals, comments. |
list_feedback | Buyer comments with their anchors and status. |
resolve_feedback | Mark a comment handled (usually after updating the page). |
set_password | Password-protect a page (or clear it). |
set_expiry | Auto-expire a page at a time you choose. |
unpublish | Take a page offline immediately (reversible). |
republish | Bring an unpublished page back at the same URLs. |
update_section | Change one section (say, pricing) without resending the whole page. Same links, new version. |
add_section | Add a new section after an existing one. |
what_changed | Section-by-section changes between two versions of a page: what came and went. |
notifications | Opt-in alerts (first open, someone new, comment, AI read, gone quiet) to a web address you choose and/or your email. |
set_facts | Store a deal's shared numbers and dates once (price, go-live date); every page showing them updates instantly. |
get_facts | Read a deal's stored facts. |
upload_image | Store a logo or image (from a URL or the file) and get a permanent URL for pages; optionally make it the house-style logo. |
get_skill | Dealpages' playbooks for building each kind of page (deal room, proposal, mutual action plan, house style). |
get_house_style | Your logo, colors, fonts, voice and approved proof points, for the AI to use on every page. |
set_house_style | Save the house style (your AI drafts it from your website; you approve it). |
Playbooks and house style come built in
Once connected, your AI can call get_skill for Dealpages' playbooks: a deal room, a proposal and a mutual action plan so far. Each tells it what to pull from your call, what to ask you, what never to invent (prices, dates, people, customer claims), how to tag sections so reading time is measured, and how the page should look. Nothing to install; every client gets the same ones.
Ask it to "set up my house style from our website" once. It drafts your logo, colors, fonts, voice and the proof points pages may quote, you approve them, and every page uses them. You can see and remove it on your account page.
Troubleshooting
- 401 / "Invalid or revoked API key" — the key was mistyped, revoked, or replaced. Check your account page; revoking a key disconnects everything using it immediately.
- Tools don't show up in the client — restart the client session after adding the server. In Claude Code,
claude mcp listshould showdealpagesas connected. - "HTML must be a complete document" — the publish tools take full documents (
<html>+<body>), not fragments. Agents handle this automatically; you'll only see it if the agent sent a snippet. - Published fine, but engagement is empty — visits to the preview URL are deliberately never counted (it's your own untracked view). Share the per-stakeholder links from
mint_link; those are what's measured. - No Node version to worry about — this is a remote server; the only local requirement is an MCP client.