Skip to main content
Glama

Push a website to the iter0 canvas

iter0_push_site
DestructiveIdempotent

Put a website you built, as finished HTML pages, on the person's iter0 canvas so they can comment on it, ask questions and leave notes there. Free: it uses no credits and publishes nothing. The first push for a sourceId creates the site (one saved design per page, grouped in a project) and returns its designId and one canvasUrl that shows every page as a frame. Later pushes with the same sourceId update pages by pageKey and add new ones; pages left out stay as they are. To replace a page that already exists, pass its current version (from the last push, iter0_get_canvas_feedback or iter0_read_canvas_page) as expectedVersion; if the person edited it since, nothing is changed and the result lists the conflict. Retrying the exact same push changes nothing. Each page must be one self-contained HTML document: inline its CSS, scripts and images or use absolute https URLs; relative files are not uploaded. Limits: 20 pages per canvas, 20 per call, 1,800,000 bytes per page and 2,100,000 bytes per call, so push a large site in several calls with the same sourceId.

Input Schema

NameRequiredDescriptionDefault
pagesYes
designIdNoOptional check: the designId an earlier push returned for this sourceId. A mismatch changes nothing.
siteNameYesThe site's name as the person will see it in iter0.
sourceIdYesA stable name for this website's source that you reuse on every push, for example github.com/acme/site or local:acme-site.
projectIdNoOptional, first push only: an existing iter0 project to put the pages in. Without it a new project named after the site is made.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Goes well past the annotations: it explains that a failed expectedVersion check changes nothing and reports a conflict, that omitted pages are untouched, that replays are no-ops (matching idempotentHint), and gives concrete limits (20 pages per canvas/call, byte caps). What it doesn't say is what a partial-failure mid-batch leaves behind, which matters for a destructiveHint=true tool.

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?

Purpose and the free/non-publishing framing are front-loaded, and every clause carries information an agent needs (versioning, conflict handling, limits). It is a dense single block though — the byte limits and the HTML self-containment rule would read better split out, and '1,800,000 bytes' vs the schema's maxLength in characters is a mildly confusing restatement.

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?

For a multi-mode upsert tool with an output schema present, the description covers everything an agent must decide before calling: identity model, create-vs-update branch, conflict protocol, batch-size guidance, and asset constraints. Return payload detail is correctly delegated to the output schema.

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

Parameters4/5

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

With 80% schema coverage the baseline is a 3, but the description adds real semantics: sourceId is a stable identity reused across pushes, pageKey defaults to the route without its leading slash, expectedVersion must come from a prior push or the feedback/read tools, and designId acts as a no-op check. It also constrains html to one self-contained document with inline assets or absolute https URLs, which the schema alone does not.

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?

First sentence names a specific verb and resource: putting finished HTML pages on the person's iter0 canvas for comments and notes. It immediately distinguishes itself from iter0_publish_site ('publishes nothing') and from iter0_edit_site by framing the input as whole HTML documents.

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

Usage Guidelines5/5

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

It contrasts with publishing ('free, no credits, publishes nothing') and spells out the exact conditions for each mode: first push with a sourceId vs later pushes, when to pass expectedVersion, and how to split a large site across calls with the same sourceId. Retry behavior is also explicitly stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.