Skip to main content
Glama

Read a design's structure (and source, if granted)

read_design
Read-onlyIdempotent

Read a design variation in two steps, so you only pull the code you will edit. (1) Call it WITHOUT files: you get the design's file manifest — each file's name, slug, type and size in bytes — and its content keys with their sizes, but no code. Page drafts are left out unless include_drafts is true. (2) Call it again with files set to the name(s) or slug(s) you need (the same names update_variation_file accepts, e.g. "Header", "/" for the homepage): you get exactly those files' current code, plus the content keys those files read (or the ones you list in content_keys). One response carries at most ~200 KB; anything that did not fit is named in truncated_files / truncated_content_keys — request those in another call. ALWAYS do step 2 before update_variation_file: edit the real current file rather than reconstructing it, or you will drop sections, props and content keys the page depends on. Code is only returned when this connection has been granted the source:read scope; without it you get structure only (pages, blocks, content keys), which is enough to reason about a site — use refine_site for changes in that case. Omit index for the active design.

Input Schema

NameRequiredDescriptionDefault
filesNoFile names or slugs to return code for, from the manifest (e.g. ["Header", "/about"]). Omit to get the manifest only.
indexNoVariation index from list_variations. Defaults to the active design.
site_idYesThe site to read
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.
content_keysNoContent keys to return with `files`. Defaults to the keys those files read.
include_draftsNoList page-draft files in the manifest (default: false).

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description nonetheless adds material context beyond them: the ~200 KB response cap, the `truncated_files`/`truncated_content_keys` overflow mechanism, the `source:read` scope gate, and the default exclusion of page drafts.

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?

Dense but front-loaded: the two-step model leads, then scope and truncation caveats. Every sentence carries information, though the single-paragraph block is long enough that the truncation and scope notes risk being skimmed.

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?

With no output schema, the description carries the burden of describing returns (manifest fields, sizes, code plus content keys) and does so thoroughly, including overflow and permission edge cases. Nothing an agent needs to invoke it correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: `files` accepts the same names/slugs as update_variation_file, '/' addresses the homepage, omitting `index` targets the active design, and `content_keys` defaults to the keys the requested files read. Genuine value on top of the schema.

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 ('Read a design variation') and lays out the two-step manifest-then-code protocol so the tool is clearly distinguishable from siblings like update_variation_file, refine_site and list_variations. An agent knows exactly what it gets back at each stage.

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?

Explicitly prescribes when to call without `files` (manifest) and when to call with `files` (code), names the fallback (refine_site when source:read is missing), and states a hard sequencing rule ('ALWAYS do step 2 before update_variation_file') with the consequence of skipping it.

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