# Edit9 — the engine specification > Edit9 generates marketing assets by writing a design specification rather than pixels. > The format is e9-HTML: HTML restricted to a registered vocabulary of Blocks, each validated > against its own schema, rendered to PNG by a pinned headless Chromium. This section documents > that format. Every list in it is generated from the packages that implement it. ## Documentation - [The engine, in one page](https://www.edit9.app/docs): Edit9 designs are specifications, not pixels. This section publishes the specification format — the Blocks, the commands, the gate and the tools — for the people and the agents that write it. - [Document shape](https://www.edit9.app/docs/language/document): The regions a e9-HTML document is made of, where a canvas takes its size from, and what a node id is. - [Placement and layout](https://www.edit9.app/docs/language/placement): Flowing versus absolute, what anchor and bleed are for, why paint order is document order, and when to reach for a group instead of a stack. - [Text and material](https://www.edit9.app/docs/language/text): The bundled faces and why there is no font name, vertical setting for CJK, controlling line breaks, and how a photograph enters a document. - [Conventions](https://www.edit9.app/docs/language/rules): The rules that are true of e9-HTML and are in no schema — published verbatim from the engine, because three blind runs found them by getting them wrong. - [What gets refused](https://www.edit9.app/docs/language/validation): Every rejection code, the reserved attributes no Block declares, the budgets a document lives inside, and why refusals are structured. - [Blocks](https://www.edit9.app/docs/reference/blocks): Every Block in the core vocabulary, its content model, its parameters and the worked examples the registry carries — generated from the registry itself. - [Commands](https://www.edit9.app/docs/reference/commands): Every command that can change a document, with its input schema — generated from the command registry the editor, the assistant and the MCP endpoint all share. - [Channels, presets and Checks](https://www.edit9.app/docs/reference/channels): The destinations a design can be made for, the exact pixel sizes and safe areas they publish, and every rule in the compliance gate. - [Connecting an agent](https://www.edit9.app/docs/agents/quickstart): How somebody else's agent gets a key, reaches the endpoint, and spends its first turn without guessing. - [Tool reference](https://www.edit9.app/docs/agents/tools): Every tool the hosted MCP endpoint can offer, with its inputs — generated from the same tool table the endpoint serves. - [Machine-readable copies](https://www.edit9.app/docs/agents/machine-readable): The same specification as plain text, as JSON, and as a personalised markdown guide — so an agent does not have to crawl HTML for it. ## Machine-readable - [https://www.edit9.app/llms-full.txt](https://www.edit9.app/llms-full.txt): every page above as one plain-text document, with the generated reference expanded inline. - [https://www.edit9.app/api/e9/blocks](https://www.edit9.app/api/e9/blocks): the Block vocabulary as JSON — every parameter as JSON Schema, plus the conventions no schema can carry. The same payload the `e9_list_blocks` tool returns. - [https://www.edit9.app/api/agent-doc](https://www.edit9.app/api/agent-doc): the hosted MCP endpoint explained in one markdown document, generated from the registry it serves. Send an API key and it names the Artifact that key reaches. - https://www.edit9.app/api/mcp: the endpoint itself — MCP over Streamable HTTP, stateless, `Authorization: Bearer e9_sk_…`.