Skip to main content
Glama

Compose site

create_site_from_template

Create a new Sitelas site by cloning a template archetype. The template provides the design skeleton (page composition, section layouts, typography rhythm); you customize it for the specific brief via brand_overrides at create time + ONE bulk patch_nodes call afterwards (the only patch primitive — no per-node fallback). The site is saved as a DRAFT — not publicly live until the user approves and you call publish. Returns url (preview URL, best shared after customization patches are applied), site_id for subsequent edits, manifest (every patchable node id + current text + slot, replaces get_site for discovery), customization_brief (prose guidance for this archetype), overrides_applied, alternative_templates (other templates and who each suits, for an owner who wants a different design), and next_step (a suggested follow-up summary). Standard customization pattern after this call: read the manifest, build one patches array covering every text/image/cta change across all pages and siteElements, send one patch_nodes call. If the owner described pages, home sections, a hero style or light/dark, pass layout and the response's layout_plan.steps lists the calls that add what the template lacks.

Input Schema

NameRequiredDescriptionDefault
layoutNoThe site's SHAPE when the owner described it — the pages they want, what the home page shows and in what order, how the hero looks, light or dark. Pass it whenever they said any of these: the response then includes `layout_plan`, the exact calls (add_page, add_section, create_collection, move_nodes, set_theme (with colors)) that make the template match what they described. Omit when they described only the business.
site_nameYesHuman-readable site name. Stored on the template metadata and used as the default base for the subdomain slug. Note: does NOT automatically substitute into visible header/footer brand text — include the header brand-name node in your patch_nodes batch (slot: 'brand-name' in the manifest) to update the displayed brand.
subdomainNoPreferred subdomain slug (a-z, 0-9, hyphen, 3–32 chars). Auto-generated from site_name if omitted. A 4-digit suffix is always appended to guarantee uniqueness.
page_slugsNoRe-address the template's pages for THIS brief, as { currentSlug: newSlug } — e.g. { "/attorneys": "/founders", "/practices": "/services" }. Archetypes carry their origin vertical in their paths, so a template used outside that vertical ships URLs that contradict its own copy: a soccer-recruiting site serving /attorneys. Set them here and the pages are simply created at the right paths — no redirects, no aliases, nothing to clean up, because nothing is published yet. Sub-pages follow their parent automatically and the template's own nav links are rewritten to match. Partial is fine; unlisted pages keep the template's slug. Leave paths that already read generically (/about, /contact, /work) alone — the ones to fix are vertical leftovers. An unknown key is an error, not a silent no-op.
template_slugYesSlug of the template archetype to clone (from find_templates). E.g. 'dossier', 'beacon', 'tessel'.
brand_overridesNoTheme nudges applied at create time: primary/accent/background color, heading/body font. When the brief names a specific mood (rainy PNW, brutalist, Victorian, editorial newsprint) pass both color AND typography that match — don't set colors and leave fonts as the template's default. Each knob is independent. Omit entirely only when the brief says 'use the template as-is' or is silent on both color and typography.
collection_prefixesNoRe-address collection detail URLs, as { contentType: newPrefix } — e.g. { "project": "/case-studies/" }. Same reasoning and same free-at-creation window as page_slugs; row-template links are rewritten with it. Usually unnecessary: shipped prefixes (/blog/, /shop/, /projects/) are already generic. NOTE this is the only moment a collection's path can change — once its items are published the path is fixed, because moving them would 404 every existing link.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial context beyond annotations: the site is saved as a draft and not live until publish, there is no per-node patch fallback, page_slugs and collection_prefixes must be set now because paths lock after publishing, and a full response field list is given. This fills in creation, publication, and path-mutation behavior not captured by the readOnly/destructive/idempotent hints.

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 purpose and key constraints are front-loaded, and the dense response-field enumeration is justified because there is no output schema. It is long and packed into a single paragraph, but every sentence carries useful operational detail.

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?

Comprehensive for a complex creation tool with nested parameters and no output schema. It explains return fields, the customization workflow, draft status, layout_plan behavior, and path-locking constraints, leaving little ambiguity for an agent.

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 already 100%, so baseline is 3, but the description adds value by linking parameters to the post-create workflow: brand_overrides at create time followed by one bulk patch_nodes call, layout triggering layout_plan.steps in the response, and site_name requiring a separate brand-name patch. These are cross-parameter workflow semantics beyond 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?

Starts with a specific verb and resource: create a new Sitelas site by cloning a template archetype. It clearly distinguishes the operation from sibling tools like find_templates (used first) and create_site_from_fixture by naming the template-cloning workflow and its customization path.

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 describes the standard workflow: clone, apply brand_overrides at create time, then make exactly one bulk patch_nodes call. It names when to pass layout and references specific sibling tools (patch_nodes, publish, get_site) and alternatives (alternative_templates).

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