Atelier201 websiteJoin the waitlist
CLICommands
CLI

Commands

Every command, what it changes, and which ones change what visitors see.

Only media generate spends credits, after an estimate and approval. Publishing, rollback, unpublish, site deletion, and domain changes affect what visitors see. Other writes edit the draft or workspace. Read-only commands change neither.

Use atelier201 help <group> <command> --json for precise inputs and outputs. The generated coverage reference maps each capability to REST, CLI, and MCP, with reasons for transport-specific exceptions.

Account

Terminal
atelier201 account                 # workspace, plan, scopes of this credential
atelier201 credits                 # balance and every grant
atelier201 usage --from 2026-01-01 # credit usage over a period

Sites

Terminal
atelier201 sites list
atelier201 sites create "Maison Dupont" --slug maison-dupont --locale fr --link
atelier201 sites get
atelier201 sites rename "Maison Dupont Boulangerie"
atelier201 sites delete            # asks you to type the slug; --confirm <slug> in a script

sites create starts from the Atelier201 starter and builds it once. A deleted site goes offline at once and is removed within minutes, so run atelier201 site pull first if you may need it.

A project folder

Terminal
atelier201 site link --site <id>   # tie this folder to a site
atelier201 site pull               # the draft's files, here
atelier201 site push --message "New menu" --build --wait

site push replaces the draft with the folder as one history entry. It skips node_modules, dist, .astro, .git, .env files and keys, and whatever your root .gitignore lists, 50 MB at most. It refuses to overwrite changes made on the site since your last sync (site pull first, or --force), and site pull refuses to overwrite a file you changed locally.

Content

Terminal
atelier201 content model
atelier201 content list blog
atelier201 content get blog hello-world
atelier201 content save blog hello-world --data entry.json --body hello.md
atelier201 content delete blog hello-world
atelier201 content singleton business
atelier201 content save-singleton business --data business.json
atelier201 content set business:/hours/2/close "18:00"
atelier201 content set business:/seats 12 --as number
atelier201 content replace "Open 9 to 5" "Open 9 to 6"
atelier201 sites apply plan.json
atelier201 media place business:/hero/image --query "bakery counter with fresh bread" --alt "Our counter"

Read content model first. Every write is checked against it. --expect <hash> saves only if the entry still has the hash you read, and --create-only refuses to overwrite.

Files, history and changesets

Terminal
atelier201 files list --under src/content
atelier201 files read src/pages/index.astro
atelier201 files search "opening hours"
atelier201 files commit --message "Update the menu" --put src/pages/menu.astro=menu.astro
atelier201 history list
atelier201 history compare --to <revision>
atelier201 history restore <revision>
atelier201 changesets open "Add a gallery page"
atelier201 changesets stage <changeset_id> --put src/pages/gallery.astro=gallery.astro
atelier201 changesets commit <changeset_id>

files commit is one history entry. --expect <path>=<hash> refuses the whole change, with exit 6, if that file changed since you read it. A changeset does the same over several calls and stays open for 10 minutes. history restore adds a new entry that matches an earlier one, and erases nothing.

Media

Terminal
atelier201 media list
atelier201 media upload photo.jpg --alt "A loaf of bread"
atelier201 media delete media/photo.jpg
atelier201 media stock search bakery counter morning light
atelier201 media stock import pixabay 1234567 --alt "Croissants on a bakery counter"
atelier201 media models
atelier201 media generate --model p-image --estimate "a sunlit bakery counter, flat illustration"
atelier201 media generate --model nano-banana "a sunlit bakery counter, photo, no text" --alt "A bakery counter"
atelier201 media generation <generation_id> --wait

Stock search and import are free. media generate spends credits: it shows the exact price and asks first (--yes accepts it, and is required when there is no terminal), and it needs the media:generate permission, which atelier201 auth login does not request unless you add it with --scope.

Build and preview

Terminal
atelier201 builds start --wait
atelier201 builds list
atelier201 builds get <build_id>
atelier201 builds log <build_id>
atelier201 previews create --days 7
atelier201 previews list
atelier201 previews revoke <preview_id>
atelier201 analytics --period 7d

builds start --wait waits up to 5 minutes. It exits 0 when the build of what you asked for is ready, and exits non-zero with the end of the build log when it fails. One build runs at a time per site: an earlier version still running is waited out first.

Publish

Terminal
atelier201 publish review                       # which build, blockers, nothing changes
atelier201 publish                              # the newest ready build, asks first
atelier201 publish --build <build_id>
atelier201 publish history
atelier201 publish rollback --publication <id>
atelier201 publish unpublish

publish, publish rollback and publish unpublish show what changes and ask first. In a script, pass --yes. Each reads the state first and sends the generation it read, so a publish by someone else in between is refused with exit 6 instead of overwritten.

Domains

Terminal
atelier201 domains list
atelier201 domains add www.example.com   # prints the DNS records to create
atelier201 domains check <domain_id>
atelier201 domains address <slug>
atelier201 domains main <domain_id>
atelier201 domains remove <domain_id>

A custom domain needs a paid plan. See Domains.

Before anybody has signed in

Terminal
atelier201 site push --guest --name "Maison Dupont"

It needs no account. It puts the folder online as a demo and prints two links: the demo, and a private link to give only to the owner so the site becomes theirs. See Guest sites.

Manuals

Terminal
atelier201 skills list
atelier201 skills get create-site

The manuals Atelier201’s own assistant works from: read the one that covers your job before you start it. They need no sign-in. get prints Markdown on a terminal and the JSON object (with body) when piped or with --json.

Escape hatches

Terminal
atelier201 api GET /sites
atelier201 api POST /sites --data '{"name":"Maison Dupont"}'
atelier201 doctor
atelier201 mcp
atelier201 feedback send --problem "..." --situation "..." --expected-solution "..."

atelier201 api reaches any endpoint, including one added after your CLI version, so a new capability never has to wait for a release. atelier201 doctor checks connectivity, credentials, version and clock skew. atelier201 mcp bridges stdio to the MCP server for clients that cannot speak HTTP.

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search Atelier201 Docs documentation and read it in full, instead of answering from memory.

https://atelier201.com/docs/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://atelier201.com/docs/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.