Inspiration

AI assistants got good at writing landing pages. What you get, though, is a block of HTML in a chat. Getting it live meant a host, a form service, spam protection and analytics: four tools for one page. In our October check of AI answers, assistants told people to combine a host with a separate form service in 83 of 186 answers about forms and lead delivery. I wanted the assistant to do the whole job through one connection.

What it does

Pageree is a hosted remote MCP server. Connect it to ChatGPT, Claude, Cursor, Codex or another client that supports remote MCP, and the assistant can:

  • save a draft and show you a private preview, then publish once you approve;
  • put a working form on the page: submissions are validated, filtered for bot spam, held back by your submission rules if you set any, and delivered to your email or to a webhook or CRM endpoint with a field mapping the assistant builds;
  • read 30 days of traffic plus scroll depth and per-section clicks, exits and time, and propose one change;
  • keep every publish as a version you can roll back to, and run pages on your own domain.

It has 24 tools and 14 skills that teach the agent the workflow.

How we built it

  • API and MCP server: NestJS, with its own OAuth 2.1 server, so an assistant connects without anyone pasting a key into the chat.
  • Published pages: a Cloudflare Worker serves them from KV and R2, on a separate registrable domain so user-written HTML can never see the app's cookies.
  • Analytics: a small TypeScript pixel built with Vite, which the Worker injects into every page, and an Express ingest service whose cron rolls visits up into per-version stats in MongoDB.
  • The rest: a Nuxt dashboard, an Astro marketing site, and Dodo Payments as the merchant of record.
  • Testing: an end-to-end harness hands the server to a naive agent and checks whether it can get a page live from the tool descriptions alone.

Challenges we ran into

  • Naming clicks. A click is named after the page's HTML, never after what the visitor's browser shows. The pixel and the API have to describe and number clickable elements the same way, so a shared contract file holds both to it.
  • Descriptions ask, the server enforces. An agent doesn't always follow a tool description, so the rules that matter, like consent markup on a form, are checked at publish.
  • Directory reviews. ChatGPT's directory rejected our first submission because some tool annotations didn't match what the tools do, and some were empty. We fixed them and resubmitted.

Accomplishments that we're proud of

A page goes from one conversation to a live address with a working form and section-level analytics, and nothing goes live without the user's yes.

What we learned

Tool descriptions are prompts: write them for an agent that has never seen your product. And measure AI visibility with counts and intervals, not a "rank". The same question rarely returns the same list twice, so we wrote llm-radar, a CLI that asks fixed prompts on eight AI surfaces several times each.

What's next

Getting through the Claude and ChatGPT directory reviews, listing in more agent marketplaces, and getting assistants to mention Pageree when someone asks for a landing page tool.

Built With

Share this project:

Updates