For the developer who builds it and the owner who runs it
Your code.Their words.
A developer builds the site in React. The owner changes the words and photos from their phone and presses one button. The design stays exactly as it was shipped, and nobody has to email anybody.
How it works
Your code in. Their words out.
Build the sections once. Your client edits only the text and photos, then presses Publish. The live site updates itself, and the design, layout and colour never change.
// your React components
const sections = {
hero: Hero,
gallery: Gallery,
}The developer builds it once
Section components in your own React project. Layout, colour and type live in your code.
Headline
The owner edits the words
A dashboard you can use on your phone. Plain fields for text and photos, nothing that can break the design.
The site updates itself
One tap on Publish regenerates the live page in seconds, exactly as it was built.
For site owners
Change the words. Press Publish. Done.
You do not need to be a computer person. Your website is a short list of sections, each with a few plain fields, and the only button that matters is the blue one.
- From your phone
Update today's specials or opening hours from the counter, before the doors open.
- Nothing breaks
You change text and photos. Colours, fonts and layout are locked to the design you paid for.
- Preview, then publish
See it privately first. One tap on Publish and the live site updates in seconds.
- Nobody to wait for
Add a page, hide a section, swap a photo — without emailing anyone or paying for edits.
~3s
Publish to live
Publish fires the site's revalidate webhook. The static page regenerates itself. No deploy, no developer.
9
Section types, out of the box
Hero, Features, Product Grid, Gallery, Testimonials, FAQ, CTA, Contact, Text Block. Adding your own is one file.
1
Instance, every client site
Each website is a project with its own key, its own library, and its own allowed sections.
For developers
Fifteen lines to wire a site up.
Install the SDK, map section types to your components, add a revalidate route. Type-safe end to end, no admin UI to maintain, and a CMS outage never fails your build.
- TypeScript types generated from your own field definitions
- ISR and on-demand revalidation, or plain runtime fetching
- Signed direct-to-CDN uploads, resized image URLs included
- Content exports as JSON — nothing about it is locked in
// one entry = one section type + its form
hero: {
label: "Hero",
description: "Big photo, headline, buttons",
fields: {
heading: text({ max: 140, required: true }),
subheading: para({ max: 260 }),
backgroundImage: image(),
buttons: list(
{ label: text({ max: 24 }), href: link() },
{ max: 3 }
),
},
}
// and on the website
<SectionRenderer
sections={page.sections}
components={{ hero: Hero, features: Features }}
/>Model Context Protocol
Your coding agent can build the site too.
Point Claude, Cursor or Copilot at a Pagecraft website and it gets 26 tools: read the section types, draft pages, fill sections, upload photos, write alt text, publish. Not a chat box bolted onto a dashboard — the same REST API the dashboard itself calls.
- It cannot invent anything
The section registry is the schema. An agent can only fill fields you defined, on section types you switched on, within the limits you set. The API refuses the rest — the same refusal a person gets.
- Nothing goes live by accident
Every write tool edits the draft. Publishing is one separate tool, and read-only mode removes all sixteen writes from the list entirely, so an assistant cannot reach for one.
- A token, not your password
Mint a write token for one website on its Integration screen. It reaches that site and nothing else, it never expires, and revoking it costs one click and no password reset.
npx fetches it.// nothing to install — npx fetches it
{
"mcpServers": {
"pagecraft": {
command: "npx",
args: ["-y", "@mypagecraft/mcp"],
env: {
PAGECRAFT_API_URL: "https://api.yoursite.com",
PAGECRAFT_PROJECT_TOKEN: "pct_…"
}
}
}
}Then just ask
- What section types is this website allowed to use?
- Draft an About page from this PDF, then show me the draft.
- Upload these six photos, write alt text, put them in the gallery.
- Give every page a search description under 160 characters.
Section types
Nine to start with. Add your own in one file.
A section type is a set of fields plus your React component. The dashboard reads the field definitions and builds the form itself, so you never write an admin screen again.
packages/shared/src/registry.tsHeadline, photo and up to three buttons.
Short reasons to choose them, with bullets.
Products or services with photos and prices.
Photos with captions and alt text.
Quotes, names and roles.
Questions and answers that open on click.
A short band with one clear button.
Address, hours, map and a message form.
Paragraphs for an About or Policy page.
FAQ
Questions owners and developers ask first.
Anything else, mail mypagecraft01@gmail.com and a human answers, usually the same day.
No. You see plain fields — a headline, a paragraph, a photo — and a Publish button. Colours, fonts and layout are not yours to break, so there is nothing to learn and nothing to be careful about.
Nothing goes live until you press Publish, and you can preview privately first. Change your mind and Discard puts back exactly what the live site shows now.
No. Wrap the parts that change in section components and read them from the content API. Everything else stays as it is.
The SDK reports an unreachable CMS separately from a real error, so your build can render a holding page instead of failing. Published pages already on your CDN keep serving.
Yes. Each project has an allowed list, ticked in Settings. Anything unticked never appears in their Add section list, and the API rejects it too.
Yes — that is what the MCP server is for. Claude, Cursor, Copilot and anything else that speaks MCP get 26 tools over the same REST API the dashboard uses, so the section registry, the field limits and the draft-until-Publish rule all still apply. An agent cannot invent a section type or change a colour any more than your client can.
The pages already published on their CDN keep serving — a billing problem never takes a live website down. Only editing stops, content stays readable for 30 days, and it exports as JSON at any time.
01I run the website, not build it. Do I need to know any code?
02What if I make a mistake?
03Do I have to rebuild my client's existing site?
04What happens if Pagecraft is down when I deploy?
05Can I stop a client using a section I did not build for them?
06Can I let an AI assistant build the content?
07What happens to my client's site if they stop paying?
One site.
Two happy people.
Developers: wire up one site in an afternoon. Owners: change a headline tonight without asking anyone. Either way, start here.