Skip to main content
Glama

maket_html

Create and edit HTML pages: replace full HTML, patch elements by ID, read markup, and measure layout for overflow or overlaps.

Instructions

When to use: read and write page HTML. Pick set for the initial skeleton, patch for iterative edits, get to read, check to measure overflow without writing.

Every visible element MUST have a data-id. Use flex/grid with mm units. When a charte is loaded, prefer var(--charte-*) tokens. The compliance check is narrow: it rejects (1) hardcoded colour literals that duplicate an existing charte token value (e.g. #2563EB when primary=#2563EB), (2) any hardcoded font-family when the charte defines fonts, (3) any hardcoded box-shadow when the charte defines shadows. Fresh colours that don't duplicate a token pass untouched. Layout override: data-maket-layout="ignore" excludes exactly one marked non-interactive leaf block from overflow, overlap, clipping, and margin checks. The block must have no child elements or text; controls, links, data-maket-bind and focusable/ARIA elements are ineligible. Reserve it for intentional non-content decoration after visual review. Add it only with maket_html action=patch using attr on an existing data-id; the enabling op must be the only op in that patch request. Set, insert, replace, and content HTML cannot introduce it. For a state-backed document, Mustache is display-only. The document must author editable controls and all their CSS explicitly: data-maket-bind supports for booleans, for strings, for string enums, and for the single-value editor. Use state.foo at the root and relative foo inside state sections; never persist data-maket-path or other runtime attributes. set — REPLACE the full page HTML. Rejects the whole payload on any violation. Requires context_token when the doc has a charte. patch — apply ops by data-id: style/content/attr/insert/replace/remove/clone/moveTo. Violating ops roll back individually, the rest still apply. get — return current HTML; pass id= for a single element, format=text to strip tags. check — measure layout against the canvas + declared canvas.margins; no side effects. Status: ✓ OK, ⚠ tight (block crosses a declared margin band — tighten or move into the safe zone before shipping), ⛔ overflow (block escapes the canvas, not shippable; pairwise overlaps between [data-id] blocks are reported under this same status), or ⛔ unchecked when headless validation could not run. On tight/overflow, the next: block points to a snapshot + targeted patch; unchecked is diagnostic-only to avoid blind retry loops.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoFor get: data-id of a single element to return; omit to fetch the whole page.
docYesDocument name (always required).
opsNoFor patch: list of surgical ops by data-id. Each op has `id` plus one of: style (object), content (string), attr (object), insert (html) + optional position, replace (outerHTML), remove (true), clone (newId), moveTo (targetId) + optional position. To exclude one intentional non-interactive leaf decoration with no child elements or text from layout validation, patch that existing element with attr: {"data-maket-layout":"ignore"}; controls, links, data-maket-bind and focusable/ARIA elements are ineligible. This override is rejected in set/insert/replace/content HTML, and its enabling op must be the only op in the patch request.
htmlNoFor set: full page HTML. Every visible element MUST carry a data-id. Use flex/grid with mm units; images use relative filenames (src="photo.jpg"); colours/fonts come from var(--charte-*). Example: <div data-id="page" style="width:210mm;height:297mm;display:flex;flex-direction:column;padding:15mm"><h1 data-id="title">Hello</h1></div>.
pageYesPage number, 1-based (always required).
actionYesOperation to run. See the tool description for the action table.
formatNoFor get: 'html' (default, full markup) or 'text' (tags stripped).
context_tokenNoFor set: charte context token from maket_charte view. REQUIRED when the document has a charte — proof the brand guidelines were read first.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses failure modes (set rejects whole payload, patch rolls back individually), side-effect expectations (check has no side effects), prerequisites (context_token required with charte), layout override eligibility, and detailed compliance rules. It also explains check statuses (OK, tight, overflow, unchecked) and what triggers them, making behavior highly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: it leads with a 'When to use' summary, then details compliance rules, layout override, state-backed document rules, and an action table. Each section adds necessary information, though there is some redundancy with schema content (e.g., data-id requirement appears in both). Given the tool's complexity, the length is justified and the organization helps an agent parse it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description must explain return values and behaviors. It does so thoroughly: get's format parameter (html/text), check's statuses and next steps, patch's rollback behavior, and set's validation approach. It also covers edge cases like unchecked validation and the layout-override caveats. For a tool with this many actions and rules, the description is impressively complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already described in detail (e.g., ops structure, html example, context_token purpose). The description adds some behavioral context (e.g., when context_token is required, layout override constraints), but most of it complements rather than meaningfully extends the schema. The baseline of 3 is appropriate because the schema does the heavy lifting and the description adds incremental value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'read and write page HTML' and then enumerates four distinct actions (set, patch, get, check) with precise verbs and targets. This clearly identifies the resource (page HTML) and differentiates the tool's internal operations, though it doesn't explicitly contrast with sibling tools. The action table makes the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Pick set for the initial skeleton, patch for iterative edits, get to read, check to measure overflow without writing', which gives excellent action-level usage guidance. It also implies when not to use check ('without writing'). However, it does not name alternative sibling tools (e.g., maket_page, maket_canvas) for scenarios where this tool should not be used, so it's clear but not fully complete on external alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ng-galien/maket'

If you have feedback or need assistance with the MCP directory API, please join our Discord server