Claude artifacts to the web
Publish a Claude artifact as your website
Build in Claude. Say “deploy this artifact on Yoti”. You get a live link, a place for the data it collects, and a path to your own domain. No downloads, no uploads.
https://yoti.run/mcp/me
How it works
- 1Connect Yoti to Claude
In Claude, open Settings, then Connectors, then add a custom connector. Paste the address below and sign in with your email.
- 2Build it as an artifact
Ask Claude for the page, tool or form you want. Tell it you will publish on Yoti and it reads the contract first, so it stores data on Yoti and not in Claude.
- 3Say: deploy this artifact
Claude publishes it and gives you the link. It tells you what is left: a key to add, a domain to connect.
- 4Make it yours
Connect a domain you own, or let Claude find one and give you a checkout link. Claude never buys anything without you.
- 5Keep editing from Claude
Ask for a change in the same chat. The address, the data, your settings and your domain stay.
The contract
Each kind of app Yoti hosts has a contract: how the page is laid out, where its data lives, what Yoti stores for it, and what it may call. Claude reads it before it builds. We add a contract each time we support a new kind of app.
Static site
A page that needs no memory: a landing page, a portfolio, a calculator, a menu, an invitation.
Data: None.
Best for: Landing page, Portfolio or CV, Calculator or converter, Event or wedding page, Price list or menu.
Read the full contractDynamic site
A page that remembers things: forms, waitlists, guestbooks, leaderboards, trackers, content the owner edits from Claude, a small AI helper. The memory lives on Yoti, not in Claude.
Data: Records in named collections, stored by Yoti in its own database next to the site.
Best for: Waitlist or lead form, Booking or quote request, Guestbook, poll or leaderboard, Tracker or journal, Directory the owner updates from Claude, Page with an AI assistant.
Read the full contractWhat a dynamic page can call
const entries = await yoti.data.list("guestbook");
await yoti.data.add("guestbook", { name, message });
await window.storage.set("high-score", "42", true);
const reply = await yoti.ai.chat([{ role: "user", content: "Do you do weekends?" }]);Claude’s own window.storage keeps working, but it saves to Yoti. The page runs in a sandbox, so it cannot read your cookies or anyone’s keys. Keys you add are sealed on Yoti and used on the server.
Keys, MCP servers and AI
- If a page needs an API key or an MCP server, Claude lists it when it deploys. You add it on the Sites page, never in the chat.
- If a page has an assistant, pick Yoti AI (no key, a free daily allowance) or paste your own OpenAI or Anthropic key.
- Anything that arrives from visitors, such as sign-ups and orders, is yours to read on the Sites page or by asking Claude.
Turn it into a business
- Put it on your own domain, with your name, colours and copy in the page itself.
- Collect emails and orders in a collection and read them from Claude: “Who signed up this week?”
- Keep selling with posts. Write them in Folio and link to them from your site.
- Ask Claude for the next change as customers reply. It edits the same site.
What Claude can do
- deploy_artifact
Publish a Claude artifact (HTML, React or SVG) as a live site and get its URL.
- update_artifact
Change a published site. Its address, data, settings and domain stay.
- list_sites
Your published sites, their URLs, visits and what each still needs.
- site_status
One site in full: domain, collections, missing credentials, assistant setup.
- read_site_data
Read form submissions, waitlist emails and other records a site collected.
- write_site_data
Add, replace or remove records, so a site's content can be run from Claude.
- search_domains
Look for a domain to buy, with prices. Buys nothing.
- buy_domain
Get a checkout link for a domain. Nothing is charged until you pay.
- connect_domain
Connect a domain you already own and get the DNS records to add.