Skip to main content
Glama

Refine site

refine_site

Have Mondovo's AI make changes to an existing site from a natural-language instruction (e.g. "make the hero bigger with a dark background", "change the primary color to navy", "add a testimonials section"). This is the right tool for open-ended design work, or when you cannot see the source. For copy-only changes prefer patch_variation_content, and when this connection holds source:read and you can author the exact change yourself, prefer read_design → update_variation_file — both are instant, deterministic, and land in the same version history as a refinement. Pass image_urls to attach REFERENCE images the change should be modelled on — a screenshot of a layout to match, a mockup, a competitor's section — and say what to do with them in the instruction ("make the hero section match this layout"). They are shown to the model as pictures, so use them whenever the target is easier to show than to describe; a described layout is reproduced far less faithfully than one the model can see. The images are a REFERENCE for the design, not content to insert — to place an actual photo on the page, describe where it goes and pass its url in the instruction. URLs must be on Mondovo storage: call upload_asset first and pass the permanent url it returns. For retry safety, reuse the same optional idempotency_key for one refinement attempt. Returns a job_id immediately; poll get_job every ~10s until its status is "completed" (a refinement typically takes 30-120s). The work runs server-side and completes even if this conversation ends, so a lost connection is not a failed refinement. If the site already has another operation running you get site_busy with that operation's job_id — poll it, then retry. page targets one page by slug — including a PAGE DRAFT's slug (from create_page_draft), which edits the draft and leaves the live page alone. variation_id selects the design to edit. On a design site with several alternatives it is REQUIRED: show the choices from list_variations and let the user choose, rather than assuming the active or first design. On a built or single-design site, omit it for the chosen design. A page draft that lives in a different design is edited with patch_variation_content / update_variation_file instead.

Input Schema

NameRequiredDescriptionDefault
pageNoSlug of the page to change, e.g. "/about", or a page draft's slug from create_page_draft. Omit for the home page.
site_idYesThe site ID to refine
user_goalNoOptional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details.
image_urlsNo
instructionYes
variation_idNovariation_id of the design to change (from list_variations). Required when a design site holds several alternatives; omit on a built or single-design site to use its chosen design.
idempotency_keyNoOptional stable key for one refinement attempt. Reuse it after a timeout to receive the original job instead of queueing a second refinement.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / variation_id
      Added value: +{
      +  "description": "variation_id of the design to change (from list_variations). Required when a design site holds several alternatives; omit on a built or single-design site to use its chosen design.",
      +  "format": "uuid",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / user_goal
      Added value: +{
      +  "description": "Optional: the user's goal behind this call, in one short sentence of plain words (e.g. \"add a page so customers can book tables\"). No names, emails or other personal details.",
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only say 'not read-only, open-world, not idempotent, not destructive'; the description adds the actual operating behavior: returns a job_id immediately, ~30-120s runtime, poll get_job every ~10s, completes server-side even if the conversation ends, and a site_busy error carrying the blocking job_id. It also explains retry semantics via idempotency_key and that images are shown to the model as pictures rather than inserted as content.

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?

Front-loaded with purpose, then alternatives, then image handling, then lifecycle, then per-parameter rules — a sensible order with no filler sentences. The weakness is form: it is one dense unbroken block, so the later parameter rules (page, variation_id) are hard to locate on a re-read compared with the opening.

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 7-parameter, async, open-world mutation with no output schema, the description covers everything an agent needs: async contract and polling cadence, failure modes (site_busy), retry safety, storage constraints on image URLs, and the page-draft vs design-variation targeting rules. Nothing essential is left to inference.

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

Parameters5/5

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

Schema coverage is 71%, and the description fills the meaningful gaps rather than restating field text: `page` accepts a page-draft slug and edits the draft without touching the live page, `variation_id` is REQUIRED on multi-alternative design sites (query list_variations and let the user choose), `image_urls` are design references that must be on Mondovo storage (upload_asset first), and `idempotency_key` is scoped to one attempt.

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?

States a specific verb and resource: have Mondovo's AI change an existing site from a natural-language instruction, with three concrete instruction examples. It also positions itself against siblings (patch_variation_content, update_variation_file) so an agent can distinguish it without opening any schema.

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?

Explicit when-to-use (open-ended design work, or when the source isn't visible) and explicit when-not-to-use with named alternatives (copy-only → patch_variation_content; source:read plus an exactly authorable change → read_design → update_variation_file). It also states the preconditions those alternatives depend on (connection scopes, same version history).

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.

Resources