# unfolder.space > unfolder.space is an agent-native platform for building portfolio and catalog > websites for artists, photographers, writers, and creatives. Each "space" is a > site that builds and deploys to its own isolated Cloudflare Worker, > served at `{slug}.unfolder.space`. You create, edit, build, and deploy a space > entirely through one Model Context Protocol (MCP) server — there is no separate > CLI or dashboard build step. Connect once to the MCP server, then address any space you have been granted by passing its `slug` per call. The server ships its `intro` doc as its instructions — read it first, then call `whoami` and `get_urls({ slug })`. ## MCP server - [Endpoint](https://unfolder.space/mcp): Streamable HTTP, OAuth 2.1. Register once; scopes are `spaces:read`, `spaces:write`, `spaces:deploy`. ## Tools - `whoami`: the authenticated user and the spaces they can edit. - `create_space({ name, subdomain })`: create a space, seeded with a starter. - `run_code({ slug, code })`: the workhorse. Runs an async JS arrow function in a sandbox exposing `state.*` (files), `host.*` (build/publish), `config.*` (variables/secrets/egress), `media.*` (durable assets), and `introspect.*` (probe the deployed facet: `query` reads its SQLite read-only). - `write_files({ slug, files })`: plain-text file drops (no JavaScript evaluated). - `get_urls({ slug })`: every URL for a space — live site, dashboard, settings, upload page, mcp, and a short-lived session upload URL for binary files. - `list_admins({ slug })`: read a space's owners/admins (membership changes are owner actions in the browser, not agent tools). - `set_custom_domain` / `get_custom_domain` / `remove_custom_domain`: attach or detach a custom hostname (CNAME → `self.unfolder.space`). ## Docs (MCP resources, read on demand) Read a topic at `unfolder://docs/{topic}`; list spaces at `unfolder://spaces`. - [intro](unfolder://docs/intro): orientation and the space model — read first. - [workflow](unfolder://docs/workflow): the read → edit → build → publish loop. - [run-code](unfolder://docs/run-code): full `run_code` API reference. - [bundling](unfolder://docs/bundling): how the `createApp` bundler builds a space. - [dynamic-worker](unfolder://docs/dynamic-worker): what a deployed space worker can do. - [media](unfolder://docs/media): uploads, static assets, and serving precedence. - [multi-space](unfolder://docs/multi-space): working across several spaces over HTTP. - [seo](unfolder://docs/seo): making production indexable (robots.txt + sitemap.xml). - [secrets](unfolder://docs/secrets): variables, secrets, and default-deny egress. - [custom-domain](unfolder://docs/custom-domain): attach a custom hostname. - [admin-prep](unfolder://docs/admin-prep): keep a space admin-ready. ## Patterns (MCP prompts — one opinionated pattern each) - `unfolder.routing`: build a dynamic site — a named `App` DO running Hono + hono/jsx, state in the facet's storage (the foundation for everything dynamic). - `unfolder.static-site`: ship a files-only content site (html/css in `public/`, binary in media) + Your Terms (private until you author robots.txt). - `unfolder.auth-basic` / `unfolder.auth-sessions` / `unfolder.auth-accounts`: gate a space by identity — one opinionated pattern each, from a shared password up to full accounts (in-facet; edge Cloudflare Access can't gate a space).