At a glance
Status, checked 2026-10-01: the server is live at https://mcp.8b.com/mcp (version 0.3.0, Streamable HTTP, no authentication). We have tested it in Claude (web), ChatGPT (developer mode) and Claude Code; the other clients below follow their vendors' documentation read on 2026-10-01. The Claude and ChatGPT directory listings are in review.
- What it is
- 8B (https://8b.com) is an AI website builder run by 8b Tech Ltd. "8B" is the product name, not an AI model size.
mcp.8b.comis this MCP server and the preview host;ai.8b.comis 8B's web builder, which the Sign Up button on 8b.com opens. The MCP server needs no account. It creates the site; it does not host or publish it: you get one HTML file for any host, with no visible 8B branding. Examples of the designs. - Use it when
- someone asks for a new website, landing page or homepage for a small business, studio, shop (without online checkout), event, project or person, and wants to see it within minutes, change it in words and take the finished file.
- Do not use it when
- you need a web app with accounts, a database or a checkout, several pages or a CMS, your own photos and logo built in, publishing to a domain from the chat, or changes to a site that already exists elsewhere.
- Terms in short
- free; the downloaded site can be used and edited for any site, including commercial and client work, but not resold as a template or theme; no credit required. The server keeps the values you send and the preview for 90 days after it was built or last downloaded, uses them for nothing else and runs no AI model. Run by 8b Tech Ltd; listed in the official MCP Registry; the Claude and ChatGPT directory reviews are pending. Details: License, Privacy and data, Who runs it.
- What the human does
- adds 8B once (a link, a command or a few settings, below) and says what the site is for. The assistant chooses the design, writes the texts, picks the colors and fonts and writes the photo searches.
- Next step
- find your client in Connect your client, then ask: "Make a website for my bakery Crumb in Lisbon in 8B."
Connect your client
One server for every client: https://mcp.8b.com/mcp, transport Streamable HTTP, no authentication. "Card" means the chat shows a preview card (through the MCP Apps extension): a thumbnail of the first screen, and Open preview shows the full animated site full screen in the chat (a client without a full-screen view opens the preview link in the browser). Elsewhere the assistant gives you the preview link. "Tested by us" says whether we ran it ourselves or followed the vendor's documentation: a client is marked tested only after we built a site in it, and the table is updated as we test more. In ChatGPT, developer mode is the setting that lets you add an MCP server that is not in the ChatGPT directory; once 8B is approved there, it is not needed.
| Client | How to connect | Plan | Card | Tested by us | Guide |
|---|---|---|---|---|---|
| Claude (web, desktop, mobile) | Add to Claude, or Customize > Connectors > Add custom connector | Free (one custom connector), Pro, Max, Team, Enterprise | Yes | Yes, on the web | Claude |
| ChatGPT | Settings > Security and login > Developer mode, then Plugins > + with the server URL, No Authentication | Plus, Pro, Business, Enterprise, Education (web) | Yes | Yes, developer mode | ChatGPT |
| Claude Code | claude mcp add --transport http 8b https://mcp.8b.com/mcp | Any | No, link | Yes | Claude Code |
| Cursor | Add to Cursor (Cursor asks to confirm), or .cursor/mcp.json | Any | Expected, per docs | No, vendor docs | Cursor |
| VS Code with GitHub Copilot | Install in VS Code (VS Code asks to confirm), or .vscode/mcp.json | all GitHub Copilot plans, including Free; on Business and Enterprise the "MCP servers in Copilot" policy must be on | Expected, per docs | No, vendor docs | VS Code |
| OpenAI Codex | codex mcp add 8b --url https://mcp.8b.com/mcp | Any | No, link | No, vendor docs | Codex |
| Gemini CLI | gemini mcp add --transport http 8b https://mcp.8b.com/mcp | Any | No, link | No, vendor docs | Gemini CLI |
| Goose | Add to Goose | Any | Expected, per docs | No, vendor docs | Goose |
| Devin Desktop (Windsurf), Kiro, Zed, Cline, Amp, OpenCode, Continue, JetBrains AI Assistant, LM Studio | A config entry with the server URL | Any | No, link | No, vendor docs | Other clients |
| Mistral Le Chat (Vibe), Perplexity, Microsoft 365 Copilot | A custom connector with the server URL | Le Chat: every plan, added by the account owner or admin. Microsoft 365: an admin adds it. Perplexity: see the guide | No, link (Microsoft 365: unknown) | No, vendor docs | Other clients |
| Lovable, Bolt, Base44, v0, Replit | A custom MCP connector with the server URL | Lovable: every plan. Base44: Builder and up. Others: see the guide | No, link | No, vendor docs | AI app builders |
Any other MCP client: add a remote server with the URL https://mcp.8b.com/mcp, transport Streamable HTTP (some clients say "HTTP"), no authentication. Most clients that take JSON use this shape. These differ, see their guides: VS Code (servers, type: "http"), Claude Code (type: "http"), Gemini CLI (httpUrl), Devin Desktop (serverUrl), Zed (context_servers), Cline (type: "streamableHttp") and OpenCode (mcp, type: "remote"); Goose and Continue use YAML, Codex uses TOML. Name the server 8b everywhere:
mcp.json
{
"mcpServers": {
"8b": {
"url": "https://mcp.8b.com/mcp"
}
}
}- The server is stateless at the protocol level: there is no MCP session id to keep between calls (previews are stored on the server). MCP protocol versions accepted by our SDK: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 and 2024-10-07. The older HTTP+SSE transport is not supported.
- Health check:
GET https://mcp.8b.com/answers 200 with a short page that saysStatus: OK. A first real call isexplore_designs(read-only, about 6,000 tokens). - After connecting, the client should list three tools:
explore_designs,get_design_brief,generate_site. The server calls itself8b, title "8B AI Website Builder".
What happens when you ask
A request like "Make a website for my bakery in 8B" uses three tools, and generate_site again for each change. Our server runs no AI model: your assistant writes the content, and the server puts it into the design.
explore_designs: the assistant reads the 8B generated designs (look, sections from top to bottom, kinds of business each fits) and picks one on its own, usually saying which look it chose. Designs are not tied to their sample business: if none names yours, the assistant picks the closest look and structure. Every section of a design stays on the page, so it also checks the sections listed insummary. A different design later means writing the site again.get_design_briefwith the site's language code (pl,de,en; see language codes): every text field with a hint and a length limit (166 to 276 fields per design), the palette with the role of each color, the fonts and the photo slots (10 to 33 per design), plushow_to_fill, the rules for writing them.- The assistant writes the texts, picks colors and fonts and writes one search query per kind of photo. On large models this takes a few minutes. It is ordinary use of your Claude, ChatGPT or other plan: 8B adds no fees, credits or tokens of its own.
generate_site: the server fills the design, finds the photos on Unsplash and builds the site in about 3 seconds (our timing on production, 2026-09-30).- You see a card in the chat: a thumbnail of the first screen, with Open preview, which shows the full animated site full screen. Clients without cards give the preview link.
- Changes in plain words ("warmer colors", "another headline") send only the changed values, so the server rebuilds the site in about a second.
- You download the site as one HTML file.
The finished site
Examples
Every site is one of the 8B generated designs, filled with the user's business. Some of the designs as they appear with their sample businesses (all made up): a bakery, a business advisory firm, a dance studio, an architecture studio, a design school. More on 8b.com. A site built through the server looks the same, with the user's texts, colors, fonts and photos.
The designs are made for food and drink (cafés, bakeries, pizzerias), professional services (law, accounting, consulting, insurance), creative studios and agencies, schools and classes (dance, yoga, music, languages, courses), festivals and events, fashion and craft brands, travel and rentals, sports and fitness clubs, software and online services, media and nonprofits, and furniture and home makers. A business not on the list takes the closest look: in our tests, a dental clinic was built on a clean professional-services design.
What you get
- In the chat: a card with a thumbnail of the first screen, Open preview, which shows the full animated site full screen, and Download site.
- Preview page:
https://mcp.8b.com/p/<id>with a Download site button, for clients without cards and for sharing. Anyone with the link can open it. - The file: one HTML file, 66 to 108 KB of HTML, photos not included. It loads images.unsplash.com (photos), cdn.jsdelivr.net (GSAP, ScrollTrigger, Lenis), fonts.googleapis.com and fonts.gstatic.com (fonts), so it needs an internet connection and works on any static host, in any folder.
- Layout: one long page with sections such as the hero, about, services, team, prices, FAQ and contact; the menu scrolls within the page. Sections cannot be added or removed yet.
- Phones: every design has a phone layout (viewport meta and media queries).
- Search engines: the page title and meta description are fields the assistant writes; no Open Graph tags and no analytics or tracking scripts (the files it loads are listed below); the page's
<html lang>is set fromlanguage. - Forms: contact and newsletter forms are visual: they show a thank-you message and send nothing. To receive messages, point the form at a form service after you download the file.
- Photos: from Unsplash, searched by our server from the queries the AI writes, under the Unsplash License. Your own photos and logo cannot be sent through the tools yet: replace the image addresses and the text logo in the downloaded file.
- Links: phone and email links (tel:, mailto:) follow the phone and email fields; buttons such as "Call us" take the site's phone and email. While a phone or email field holds no usable number or address, such as a placeholder (
[phone],[telefon]) or an empty string, its links lead nowhere (#) instead of to the sample's number. Buttons and the menu link within the page. Social network links in some designs point to the network's home page until you edit them in the downloaded file; links to other sites, such as a booking page, cannot be set through the tools. - Image text: the
altyou send becomes the photo's alt text in the file. Without one, a new photo gets Unsplash's English description; a photo you do not replace keeps the design's alt text. - Motion: every design switches its animations off for visitors who ask for reduced motion.
- Credit: an HTML comment at the top and the bottom of the file credits 8B; nothing visible on the page.
- Colors change per palette color: if the buttons share their color with other elements, those change too.
- Languages: sites have been built and checked in English, Russian and Polish; other languages are written the same way. Word limits are raised for languages with long words (language codes); for scripts other than Latin and Cyrillic, the assistant chooses fonts with the needed letters. Right-to-left languages (Arabic, Hebrew): the text runs right to left, but the page layout, such as the side of the menu and the order of columns, stays as in the design.
- You can edit the downloaded file by hand. It cannot be loaded back into 8B; keep editing through the tools while the preview exists.
Putting the site online
- Download the file and rename it
index.html. - Upload it to any static host: drag it into Netlify Drop, or use Cloudflare Pages, GitHub Pages or your own hosting.
- Point your domain at the host, following the host's instructions.
- To receive form messages, set the form's
actionto a form service's address and remove the page script's submit handler, which only shows the thank-you message. A coding agent can do this step.
What the file loads, and under which licenses
| Asset | Loaded from | License |
|---|---|---|
| Photos | images.unsplash.com, linked, not embedded | Unsplash License |
| Fonts | fonts.googleapis.com, fonts.gstatic.com | Open font licenses, mostly SIL OFL; see Google Fonts licensing |
| GSAP, ScrollTrigger | cdn.jsdelivr.net | GSAP Standard License |
| Lenis | cdn.jsdelivr.net | MIT |
Visitors' browsers contact these hosts when they open the site. If that matters for you (for example under GDPR), host the fonts, scripts and photos yourself after downloading.
Cost, speed and limits
| Value | |
|---|---|
explore_designs result | about 21,000 characters (about 6,000 tokens) |
get_design_brief result | 29,000 to 45,000 characters (about 8,000 to 13,000 tokens), depending on the design |
generate_site result | under 1,000 characters: ids and links, never the HTML |
| Read calls | about 1 second (measured 2026-10-01) |
| Build | about 3 seconds with photos (measured 2026-09-30) |
| Edit | about a second on the server (measured 2026-09-30) |
| Writing by the assistant | a few minutes on large models, the longest step |
| Rate limits | we set none, per IP or overall; photo search shares an Unsplash allowance of 5,000 requests an hour |
| Preview lifetime | 90 days after it was built or last downloaded |
| Price | Free: no account, no API key, no credits. 8B Pro is a separate plan of the web builder at ai.8b.com (see the FAQ) |
8B or something else
| Option | Good for | You get |
|---|---|---|
| 8B MCP server | A new one-page site from inside the chat, in minutes, at no cost | A finished animated design, live preview, edits in words, one HTML file |
| Asking the assistant to write HTML | Anything you can describe, or code inside your project | Code whose look depends on the prompt; a preview only where the client renders HTML |
| 8B web builder at ai.8b.com | A new design composed from your prompt, an editor, publishing | A site in your 8B account; publishing on 8B Pro |
| Hosted site builders | Hosting, a domain, an online shop, an editor | A site on their platform, on their plans |
| AI app builders | Apps with accounts, data and logic | A code project in their workspace, on their plans |
License
- The texts and photo searches you write belong to you.
- The design code in the downloaded file can be used for any site, including commercial ones and client work, and can be edited. It cannot be resold or distributed as a template or theme.
- No credit is required: the "Made with 8B" comment can be left in or removed.
- Designs are not exclusive: other users can generate sites and get a similar design, with their own texts, colors, fonts and photos.
- Photos, fonts and scripts the file loads keep their own licenses: see what the file loads.
- Terms of use of 8B: 8b.com/tos.html.
Privacy and data
- The MCP server needs no account or API key and sets no cookies. (This documentation page uses Google Tag Manager, like the rest of 8b.com.)
- What the server receives: no arguments with
explore_designs; the design id and language withget_design_brief; every value your assistant sends withgenerate_site(site name, language, texts, colors, fonts, photo queries and descriptions, the base preview id). Like any web service it also sees the connecting IP address (for hosted assistants such as claude.ai, the platform's) and the client's name. Never your conversation, files or account. - The values are used only to build and show the preview: not for training, analytics or anything else.
- Cloudflare, our host, keeps request logs (request and response metadata) for 7 days to diagnose errors.
- The server stores those values and the built preview for 90 days after it was built or last downloaded. Preview links are random and not listed anywhere, but anyone with a link can open it. Preview pages and downloads are sent with
X-Robots-Tag: noindex, so search engines do not index them. - To delete a preview sooner, email s@8b.com with its link; we delete it within 7 days. Each change is a separate preview with its own link, so list every link you want deleted.
- Report a preview that impersonates someone, deceives visitors or breaks the law to s@8b.com with its link; we remove such previews.
- Nothing is installed or run on your computer: the server is remote, and its tools only read designs and build previews on our side. Preview ids are 10 random letters and digits. Anyone with an id can open the preview and build a changed copy from it; nobody can change or delete an existing preview through the tools.
- Apart from our host, Cloudflare, where the server and the previews live, only photo search phrases leave our server, to Unsplash.
- Details: privacy policy.
Who runs it
- 8b Tech Ltd, the company behind 8B (https://8b.com). Support: s@8b.com.
- Official MCP Registry:
com.8b/ai-website-builder, version 0.3.0, published 2026-09-30. - Also on Smithery and Glama. The Claude Code plugin is published by our GitHub account,
8bsite: it is this server plus a skill that tells Claude when and how to use 8B. Install it with/plugin marketplace add 8bsite/8b-ai-website-builder, then/plugin install 8b-ai-website-builder@8b-ai-website-builder. - The registry name
com.8bis verified against the 8b.com domain. 8B is independent of Anthropic, OpenAI and the makers of the other clients on this page; a directory listing is not an endorsement. - Claude Connectors Directory and ChatGPT plugin directory: submitted on 2026-09-30, in review.
Prompts that work
Name 8B in the request. Assistants that can also write a page themselves may otherwise answer with their own page.
- "Make a website for my bakery Crumb in Lisbon in 8B."
- "Use 8B to build a landing page for our yoga studio in Berlin, in German."
- "With 8B: a one-page site for my wedding photography business, warm and minimal."
- Then: "Make the colors warmer", "Change the headline to Fresh bread since 1987", "Use photos of the sea", "Give me the HTML file".
How the tools work best
Notes for assistants and coding agents, from our tests with Claude Opus, Sonnet and Haiku:
- A good fit is a request for a new site with no backend. For an app, a shop or changes to an existing site, other tools fit better.
- The only details the result really needs from the user are the business name and, when it is unclear, the site's language. Descriptions of the business can be written from what the user said, and so can typical offerings (services, menu items, courses), since the user will see and adjust them. Facts a visitor could act on or trust cannot be invented: names, contacts, hours, prices, years and dates (
since [year]), counts, ratings, awards and certifications. Where the user has not given them, write visible samples in square brackets, in the site's language, and list them for the user to replace before publishing: contact details ([phone],[email],[address],[hours]), prices ([price]), names of reviewers and team members ([Client name], inside{1:...}where the field has a marker), key figures and awards ([00],[award]). Review quotes and team bios can then be written as examples, since the names show they are samples. Placeholders must fit the field'smaxandword; shorten them rather than leave a warning. Phone and email links lead nowhere until real ones are sent. - A preview can be opened by anyone with its link. Before building a site that holds someone's real personal details, say so.
- Writing 166 to 276 fields in one call needs a capable model. In our tests (2026-09-30) Claude Opus and Sonnet filled every field in one call, Claude Haiku needed two rounds of fixes, and ChatGPT built full sites; small local models may not finish. A partial first call works too; the warnings list what is left, and you send it with
base_preview_id. - Pass the same
languagecode toget_design_briefandgenerate_site. - Fill every text field in one
generate_sitecall; then send only what the warnings name, withbase_preview_id. - Photos: one English query per kind of photo (all team portraits, all dishes), split by gender where portraits must match real names the user gave. With placeholder names, use one query without gender and tell the user to match photos and names later.
- Give the user
preview_url(in clients with a card, the card carries it too); where the client shows no card, open it in a browser tool if you have one. Mentiondownload_urlonce. Do not paste the HTML into the chat.
Machine-readable entry points:
{
"mcp_url": "https://mcp.8b.com/mcp",
"transport": "streamable-http",
"auth": "none",
"tools": [
"explore_designs",
"get_design_brief",
"generate_site"
],
"registry_name": "com.8b/ai-website-builder",
"registry_entry": "https://registry.modelcontextprotocol.io/v0.1/servers/com.8b%2Fai-website-builder/versions/latest",
"markdown_twin": "https://8b.com/mcp/index.md",
"llms_txt": "https://8b.com/llms.txt",
"privacy": "https://8b.com/privacy.html",
"support": "s@8b.com",
"version": "0.3.0",
"protocol_versions": [
"2025-11-25",
"2025-06-18",
"2025-03-26",
"2024-11-05",
"2024-10-07"
],
"health": "https://mcp.8b.com/",
"terms": "https://8b.com/tos.html"
}Every page in this section also exists as Markdown: replace .html with .md, or use index.md for this page.
A snippet for your agent instructions
If you want your coding agent to reach for 8B when a task is a new website, paste this into AGENTS.md, CLAUDE.md or your client's rules file:
AGENTS.md
## Websites and landing pages
For a new standalone website or landing page, use the 8B MCP server
(https://mcp.8b.com/mcp, no auth): explore_designs -> get_design_brief (with the site's
language) -> generate_site. Fill every text field, show me preview_url, apply changes
with base_preview_id and only the changed values, and save the file from download_url
where I say.
Docs: https://8b.com/mcp/index.mdTool reference
Three tools. Tool names, parameters and design ids stay the same for clients that have already connected; new abilities come as new tools. Field, color and image ids belong to their design and stay with it. The server's own texts are the reference: the schemas in tools/list and how_to_fill in each brief. This page explains them; if they ever differ, follow the server. People can report the difference to s@8b.com.
| Tool | Does | Parameters | Returns |
|---|---|---|---|
explore_designs | Lists the 8B generated designs. Read-only. | none | For each design: id (like 8b-generated-0009), category, summary (look and sections from top to bottom), fits (kinds of business), style |
get_design_brief | The brief for one design. Read-only. | design_id (required), language (code, optional) | design_id, summary, sample_language, how_to_fill, sections (section, purpose, fields: id, now, hint, max, plus word and places where they apply), colors (id, variable, value, role), fonts (family, spec, role, cyrillic), images (id, hint, orientation) |
generate_site | Builds the site and shows the preview; with base_preview_id changes an existing one. Annotations: not read-only, not destructive, not idempotent, open world (it searches Unsplash). | design_id, site_name (both for a new site; name 1-80 characters), language, texts (up to 3,000 characters each), colors, fonts, images (query up to 100, alt up to 200 characters), base_preview_id | id, site_name, design_id, title, preview_url, download_url, file_name, html_url, poster_image, warnings (only when there are any) |
What explore_designs returns
One entry of the list (fits shortened). Pick by fits and category; the summary names the sections from top to bottom, so you can check that the design has, say, prices or a team before you choose it:
{
"id": "8b-generated-0005",
"category": "legal-finance",
"summary": "Clean, airy professional-services look: white and cool-grey surfaces, deep navy ink, an electric-blue accent ... Sections in order: header with full-screen menu, hero, about with key figures, services, principles, onboarding process, team, reviews, workplace gallery, industries, yearly calendar, pricing with monthly/yearly toggle, FAQ, journal, contact with form, footer with giant wordmark.",
"fits": [
"accounting firm",
"law firm",
"tax consultancy",
"insurance broker",
"notary office",
"..."
],
"style": [
"clean corporate",
"airy white space",
"electric blue accent",
"giant one-word hero",
"scroll-driven motion"
]
}What a brief looks like
An excerpt of get_design_brief for one design (shortened). Field ids come from the brief, so you never need to know them in advance:
{
"design_id": "8b-generated-0009",
"summary": "A flat, poster-like page in four saturated inks on pale blue-grey paper ... In order: header with slide-out menu, hero, ...",
"sample_language": "en",
"how_to_fill": [
"texts: give a new value for every field id, in the language of the site you are making. Stay within max ...",
"..."
],
"sections": [
{
"section": "Page title and description",
"purpose": "Names the page in the browser tab and in search results.",
"fields": [
{
"id": "title",
"now": "6 words, 33 chars",
"hint": "Page title: brand name, a dash, then what the business is in 2-5 words",
"max": 60
},
{
"id": "description",
"now": "19 words, 2 sentences, 129 chars",
"hint": "Meta description, 1-2 sentences: what is offered, the format and the main selling point",
"max": 160
}
]
},
{
"section": "Header",
"purpose": "Keeps the brand, the menu button and the main call to action within reach on every screen.",
"fields": [
{
"id": "t1",
"now": "1 word, 6 chars",
"hint": "Brand wordmark, one word set in lowercase and large; also repeated big in the footer",
"max": 16,
"word": 6,
"places": 2
},
{
"id": "t7",
"now": "2 words, 9 chars",
"hint": "Header button leading to the contact section: a verb, 1-2 words (apply, book, enrol)",
"max": 18,
"places": 2
}
]
},
{
"section": "Reviews",
"purpose": "Lets past participants vouch for the experience in their own words.",
"fields": [
{
"id": "t126",
"now": "5 words, 37 chars, with marked part {1:…}",
"hint": "Attribution of review t125: {1:...} wraps the reviewer's name, set apart, and must be kept",
"max": 44
}
]
}
],
"colors": [
{
"id": "c2",
"variable": "--ink",
"value": "#212445",
"role": "Ink: main text on c1, c3, c4 and c5; fill of buttons (label c6) ..."
},
{
"id": "c3",
"variable": "--amber",
"value": "#f2b33d",
"role": "Warm accent: courses section and intro backgrounds, eyebrow badge, menu button ..."
}
],
"fonts": [
{
"family": "Gabarito",
"spec": "Gabarito:wght@600..900",
"role": "Display: headlines, huge hero ...",
"cyrillic": false
}
],
"images": [
{
"id": "i1",
"hint": "A close-up of hands working with the craft's materials or tools",
"orientation": "landscape"
}
]
}- Find a field by its
hint. Ids differ between designs: the phone number is the field whose hint says "Phone number in international format", which ist18in one design and something else in another. maxcounts visible characters, spaces included;{1:...}markers around highlighted words do not count.wordis the longest single word that big display type can hold, counted in letters and digits (brackets and other punctuation do not count).- Ids starting with
tare visible texts; ids starting withaare texts in attributes, such as screen-reader labels;titleanddescriptionare the page title and meta description. nowdescribes the sample text (words, characters, lines), never its words themselves. Where it says "with marked part {1:…}", the sample sets some words apart (a name, a highlighted phrase): write{1:...}around the words that take that place, for exampleOpinia {1:[imię uczestnika]}, Kraków. Markers appear only in fields whosenowmentions them; where it lists several ({1:…} {2:…}), keep each. A dropped marker leaves its words without that styling; a marker the field does not have loses its braces and number, and its words show as plain text. Neither gives a warning.- Sections that do not fit the business stay on the page: they cannot be hidden yet, and emptying their fields leaves gaps in the layout. Write each such section for the nearest thing the business has, following its
purpose(a yearly calendar becomes seasonal offers or open days; industries become the kinds of customers served). If several main sections do not fit, choose another design. - Line breaks: where
nowsays "2 lines" or more, separate the lines with\n; a line break counts as one space towardmax. Do not use\nanywhere else: in visible text it still breaks the line and can push the layout, and in the page title and attribute texts it becomes a space. - The first section is always "Page title and description", with the fields
title(the browser tab and search result title) anddescription(the meta description). places: the field appears in several spots on the page; one value fills all of them.- Images: give every image id an entry. Slots of the same kind (all team portraits, all dishes) can share one query string, and each slot still gets a different photo of its
orientation(landscapeorportrait).altis optional but recommended: without it a new photo gets Unsplash's English description, or the query. A plain string is read as the query. Image ids you leave out keep the design's photo of the sample business and its alt text, and no warning names them. - Fonts: map a
familyfrom the brief to a Google Fonts spec. The server checks only the spec's format. A family or weight range that Google Fonts does not have is not loaded, and the browser falls back to the design's backup font; the other fonts still load. Copy names and weight ranges from fonts.google.com and include the weights you need: a bareUnboundedloads weight 400 only. For a site in Cyrillic, replace every font whosecyrillicisfalse; for other non-Latin scripts, pick fonts that have those letters. how_to_fillrepeats these rules inside the brief itself.
Language codes
- Send the site's language code, such as
plorde, and the same code toget_design_briefandgenerate_site. A region or script subtag (pt-BR,sr-Latn) is fine: word limits use the part before the hyphen. - Word limits are raised for
de,fi,hu,nl,sv,da,nb,nn,noand languages written in Cyrillic (ru,uk,be,bg,sr,mk,kk,ky,tg,mn). Other codes, three-letter codes such asdeuand names such asPolishkeep English-length limits. Without a code,get_design_briefgives English-length limits andgenerate_siteraises them only for text in Cyrillic. <html lang>is set to the code as sent when it is a language tag: 2 or 3 letters, then optional hyphen-separated parts of 2 to 8 letters or digits (pl,pt-BR,sr-Latn); otherwise, or without a code, it stays the design'ssample_language.- No code is rejected (up to 20 characters), and nothing is translated: the assistant writes every text in the site's language.
- Settle the language before writing: switching later means rewriting every field. If the user does not say, use the language they write in; if the business is in a country with another language, ask once before building (Portuguese or English for a café in Lisbon).
- Not tested yet: Chinese, Japanese and Thai, which do not put spaces between words. The word check counts an unspaced line as one word, so their display texts get
wordwarnings even though browsers can break those lines. Ignore thosewordwarnings without telling the user, and keep display texts to about half ofmax: these characters are about twice as wide as Latin letters.
A new site
A shortened call with every value type. A real call sends all the text fields from the brief; this one sends four, so its result warns about the rest. texts maps field id to text (\n where the brief says the text has several lines), colors maps palette id to any CSS color, fonts maps a family named in the brief to a Google Fonts family spec, and images maps image id to an English Unsplash query plus a description in the site's language:
{
"design_id": "8b-generated-0009",
"site_name": "Glina",
"language": "pl",
"texts": {
"title": "Glina — pracownia ceramiki w Krakowie",
"t1": "glina",
"t7": "Zapisz się",
"t126": "Opinia {1:[imię uczestnika]}, Kraków"
},
"colors": {
"c2": "#2b2118"
},
"fonts": {
"Gabarito": "Unbounded:wght@600..900"
},
"images": {
"i1": {
"query": "hands shaping clay on a pottery wheel",
"alt": "Dłonie formujące glinę na kole garncarskim"
}
}
}Text values are plain text: HTML in a value is shown as text. A line break (\n) breaks the line in visible text and becomes a space in the page title and in attribute texts. A field you leave out keeps the design's sample text and is named in warnings; an empty string empties the field. Unknown ids, colors that are not CSS colors and fonts that are not Google Fonts specs are skipped and named in warnings.
The result as structured content (the HTML itself never goes into the chat). Clients that read only text get the same in words: "Preview <id> is ready: <preview_url>", the download link, how to change the site with that base_preview_id, and every warning. The "not filled" warning names up to 30 ids at a time, in page order; send those, and the next result names the rest. A field shown in several places has one id, so the numbers have gaps:
{
"id": "k3v9q2m7xa",
"site_name": "Glina",
"design_id": "8b-generated-0009",
"title": "Glina — pracownia ceramiki w Krakowie",
"preview_url": "https://mcp.8b.com/p/k3v9q2m7xa",
"download_url": "https://mcp.8b.com/download/k3v9q2m7xa",
"file_name": "glina.html",
"html_url": "https://mcp.8b.com/api/preview/k3v9q2m7xa",
"poster_image": "https://images.unsplash.com/photo-...",
"warnings": [
"167 fields are not filled and still show the sample text: description, a1, a2, t2, t3, t4, t5, t6, a3, a4, a5, a6, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, …. Send them with base_preview_id \"k3v9q2m7xa\"."
]
}A build is done when the result has a preview_url. The site is complete when (1) the last result has no "not filled" warning, (2) you sent a query for every image id, since photos have no such warning, and (3) every other warning from your calls was dealt with: skipped ids, colors and fonts sent again correctly, photos with no result or a failed search sent again with a broader query or later, and length and word warnings fixed. The only warnings you may leave are length or word warnings on wording the user chose themselves (a brand name, a dictated headline), after telling the user, and word warnings in Chinese, Japanese or Thai. Warnings appear only in the result of the call that sent the value, so deal with them before the next change. html_url serves the same page as preview_url, readable from other sites, for cards to load; poster_image is the site's first photo at 1,200 px wide (or null), shown on the card while it loads. No tool returns a preview's current values: keep track of what you sent, and keep design_id with the preview id (every result names both). If you lose them, call get_design_brief again with the same design_id and language (field ids never change). With only a preview id, an edit still works without the brief: it needs just base_preview_id and the field ids, and its result names the design_id. Read the current texts from preview_url or html_url while the preview exists: each visible text element carries data-8b with its field id (data-8b="t7"), highlighted words sit in inner elements (the {1:…} parts) and <br> stands for \n; further places of a field with places carry ids that are not in the brief. Attribute texts (a ids), title and description carry no id: write them again from the brief's hints if needed. generate_site is not idempotent: a retry builds another stored preview with a new id; use the newest one. An agent with file access can save the site directly; download_url answers a plain GET with text/html as an attachment:
curl -L -o glina.html https://mcp.8b.com/download/k3v9q2m7xaA change
Send base_preview_id and only the values that change. Everything you do not send is kept from that preview: the design, site_name, language, texts, colors, fonts and photos. Sending the same design_id is accepted; a different one is an error. A new site_name changes the file name and the preview label; a new language changes the word limits and <html lang>, but nothing is translated. Read a color's role before changing it: in the brief above c2 is both the main text and the button fill, so "dark green buttons" would turn the text green too. Tell the user what else uses that color and ask whether to change it anyway or keep it. For example, the user asks for a softer amber accent and a one-word button label:
{
"base_preview_id": "k3v9q2m7xa",
"colors": {
"c3": "#e8a33d"
},
"texts": {
"t7": "Dołącz"
}
}- The result is a new preview with its own
id; the earlier one stays as it was. Base the next change on the newestid: two changes from the same base make two separate versions. - Length warnings cover the values you sent; the "not filled" warning covers the whole site.
- Photo slots you do not send keep their photos. To get a different photo for a slot, send a different query for it.
- In
fonts, the key is always the family named in the brief, even after an earlier change. Write the family with spaces, as on Google Fonts, and axes in lowercase:Playfair Display:ital,wght@0,400;1,700. - When you change a color, keep the pairs its
rolenames readable: text must stay legible on the backgrounds it sits on. - Text the user dictates (a headline, a slogan, a name) goes in as given. If it breaks
maxorword, tell the user and offer a shorter version; do not shorten it on your own. - If the brief is no longer in your context, call
get_design_briefagain with the samedesign_idandlanguage. - To switch to another design, build a new site without
base_preview_idand with all values.
Errors and warnings
Two kinds of message. Errors come back as a tool result with isError: true and a short English text: nothing was built. Warnings come in the warnings list (an array of strings) of a successful result: the preview is built and usable, and some values should be sent again. Input errors arrive the same way, as a tool result whose text starts with MCP error -32602, not as a JSON-RPC error object. Other messages carry no codes.
| Kind | Message | Meaning | What to do |
|---|---|---|---|
| Error | MCP error -32602: Input validation error: Invalid arguments for tool <tool>: <details> at <parameter> | An argument breaks the input schema: an unknown design_id, or a value over its limit (a text 3,000 characters, site_name 80, query 100, alt 200, a color 60, a font spec 80, language 20). The whole call fails; nothing is built or skipped. | Fix the named parameter. The message names it, and for allowed values lists them: MCP error -32602: Input validation error: Invalid arguments for tool get_design_brief: Invalid option: expected one of "8b-generated-0001"|"8b-generated-0002"|… at design_id |
| Error | MCP error -32602: Tool <name> not found | The tool name is wrong. | Use explore_designs, get_design_brief or generate_site. |
| Error | Preview <id> was not found. Build a new one with design_id and all values. | The id is wrong, or the preview expired (90 days after it was built or last downloaded). | Build a new site with design_id and all values. The old values are not kept. |
| Error | Preview <id> uses design <design>. To switch to <design>, build a new preview without base_preview_id. | An edit cannot change the design. | Call without base_preview_id and with all values. |
| Error | A new preview needs design_id and site_name (or base_preview_id to change an existing one). | A new site is missing design_id or site_name. | Add them. |
| Warning | <field>: <n> characters, max <max> | The text is in the preview but longer than the layout holds, so it may wrap or overflow. | Shorten it and send that field with base_preview_id. If it is the user's own wording, ask them first. |
| Warning | <field>: the word «<word>» has <n> letters, max <max> for this display text | A word is too long for big display type and may be cut. | Use a shorter word. Never shorten a brand name on your own: send it as it is, and tell the user it may not fit this design's big type, so they can pick a short form or another design. A placeholder must fit, for example [00] for a big figure. |
| Warning | <n> fields are not filled and still show the sample text: <ids>. Send them with base_preview_id "<id>". | Those fields still show the design's sample text. | Send them with the given base_preview_id. |
| Warning | No text field <id>, No color <id>, No font <family>, No image <id> | The id is not in this design's brief; the value was skipped. | Use the ids from get_design_brief. |
| Warning | <id>: «<value>» is not a CSS color, <family>: «<spec>» is not a Google Fonts family spec | The value was skipped. | Send a CSS color or a Google Fonts spec such as Unbounded:wght@400..900. |
| Warning | <image>: nothing found on Unsplash for «<query>» | No photo matched; the design's own photo stays. | Try a broader query. |
| Warning | Unsplash «<query>»: <error> | The photo search failed; the design's own photo stays. | Send those images again later; the photo allowance resets every hour. |
- If Unsplash fails or its hourly allowance runs out, the build still succeeds: the design's own photos stay, and the warnings name them.
- Every link of a preview that does not exist or has expired (
preview_url,download_url,html_url) answers HTTP 404 with "Preview not found". - The endpoint takes POST only: a GET answers HTTP 405 (JSON-RPC error -32000), a body that is not JSON 400 (-32700), a fault on our side 500 (-32603). 8B sets no rate limit of its own, so another HTTP error, such as 403 or 429, comes from the network in between: treat it like a 5xx.
- If the server does not answer or returns an HTTP 5xx, wait 5 seconds and retry once; allow up to 30 seconds for
generate_site. If the retry fails too, tell the user 8B is unavailable and try again later.GET https://mcp.8b.com/tells you whether the server is up. There is no status page yet; 8B is a free service without a guaranteed uptime. - An expired preview cannot be restored: the values are gone. The downloaded file is the user's copy, so suggest keeping it.
- Calls are independent: several sites can be built at the same time, with no queue.
FAQ
Does 8B create a new site, or only publish one I already have?
It creates a new one-page site from scratch: your assistant chooses an 8B generated design and writes every text, color, font and photo search for the business. It does not edit sites that exist elsewhere and does not host them: you download one HTML file and upload it to any static host.
How do I make a website with Claude using 8B?
Add 8B once: Add to Claude, or Customize > Connectors > Add custom connector with https://mcp.8b.com/mcp. Then ask "Make a website for my bakery in 8B". Claude picks a design, writes the site and shows the preview card in the chat; you change it in words and download the HTML file. Full steps: 8B in Claude.
What do the sites look like?
Like these 8B generated designs, shown with made-up sample businesses: a bakery, a business advisory firm, a dance studio, an architecture studio, a design school. A site built through the server keeps the design and its animations, with the business's own texts, colors, fonts and photos.
Do I need an account, a sign-in or credits?
No. The server has no authentication: no 8B account, no OAuth sign-in, no API key, no credits. Writing the site is ordinary use of your assistant's own plan.
Can I get the HTML code of the site?
Yes. Every site downloads as one HTML file (66 to 108 KB of HTML, photos not included) from the Download site button or download_url; a coding agent can save it with curl. It loads fonts, scripts and photos from public CDNs.
Which coding agents can build websites with 8B?
Any MCP client that takes a remote Streamable HTTP server. Claude Code: claude mcp add --transport http 8b https://mcp.8b.com/mcp. Codex: codex mcp add 8b --url https://mcp.8b.com/mcp. Cursor, VS Code with GitHub Copilot, Gemini CLI and others: see Connect your client.
Is 8B an AI model?
No. 8B is an AI website builder made by 8b Tech Ltd; the name is not a model size. Its MCP server runs no model: your own assistant writes the content.
Is 8B free inside AI assistants?
The MCP server is free: building, previews, edits and the HTML download, with no account. 8B Pro ($9 a month, billed yearly) is the paid plan of the 8B web builder at ai.8b.com: publishing with hosting, SSL and your own domain, 100 credits a month.
Pro credits belong to the web builder's own AI; the MCP server uses none and never asks for payment details.
Writing the texts is ordinary use of your assistant, counted like any other request on your plan.
Does it work on free plans?
Claude Free allows one custom connector, so 8B works there. ChatGPT needs developer mode, which OpenAI lists for Plus, Pro, Business, Enterprise and Education. VS Code works on every GitHub Copilot plan, including Free.
Which assistants show the preview card in the chat?
Claude (web, desktop and mobile), ChatGPT, Cursor, VS Code with GitHub Copilot and Goose. We tested the card in Claude on the web and in ChatGPT; the others follow their vendors' documentation. Where a client has no full-screen view, Open preview opens the preview link in the browser. Terminal agents such as Claude Code, Codex and Gemini CLI give you the preview link.
My assistant made its own page instead of using 8B. Why?
It chose its built-in page tool. Name 8B in the request ("in 8B", "with 8B") and check that the 8B connector is on for that chat.
The 8B tools are missing or out of date in my assistant. What do I do?
Check that the 8B connector is on for this chat, then remove it and add it again: some clients keep the old tool list until the connector is added again. If a request to https://mcp.8b.com/mcp is blocked by a company proxy, ask your admin to allow mcp.8b.com, images.unsplash.com, cdn.jsdelivr.net and the Google Fonts hosts. Support: s@8b.com, with your client's name and the error text.
Can I use it in a React, Next.js or Tailwind project?
It gives one standalone HTML page, not components. Put the file in the project's static folder (for example public/ in Next.js) to serve it as it is, or link to it. Turning it into components means rewriting its animations (GSAP, Lenis) in your stack.
Can I publish the site to my own domain?
Not from the chat yet. Download the HTML file and upload it to any static host, such as Netlify, Cloudflare Pages or GitHub Pages, then point your domain there. Publishing on 8B with your own domain is part of 8B Pro in the web builder at ai.8b.com.
Can I use my own photos and logo?
Not through the tools yet. Photos come from Unsplash searches and the logo is text. In the downloaded file you can replace the image addresses and the logo.
Can I use the site for a client or a commercial project?
The design code in the downloaded file can be used for any site, including commercial ones and client work, and can be edited. It cannot be resold or distributed as a template or theme. No credit is required: the "Made with 8B" comment can be left in or removed.
Do the contact forms work?
They show a thank-you message but send nothing. Connect them to a form service after you download the file.
How is this different from the builder at ai.8b.com?
At ai.8b.com the 8B engine composes a new design from your prompt, with an editor and publishing on Pro. Through MCP, your own assistant writes the site into a ready 8B generated design, right in the chat, for free.