Skip to main content
Glama

Create a new site

create_site

Build a brand-new hosted website from a plain-language description. RETURNS IMMEDIATELY with status 'building' — the site takes about 2-3 minutes and is NOT ready when this returns. Tell the user where it will be (expected_url) and poll get_build_status with the returned claim_token. NEVER call create_site a second time for the same site: each call builds another one. Works WITHOUT signing in: an unauthenticated call builds a guest site and returns a claim_url — the user signs up free (no card) at that link to keep it; unclaimed guest sites are deleted after 72 hours. Signed in, the site lands directly on the connected account (free tier: one site, no card).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
templateNoOptional override of the starting template. Omit it and the template is chosen from the description.
site_nameYesShort human name for the site, e.g. 'Whitney Apparel'.
descriptionYesWhat the site is for. MINIMUM 12 CHARACTERS — a bare 'bike shop' is rejected. Say what the business is, where it is, and what the site should include; the AI builds directly from this, so more detail means a better first result. Good: 'Oak Barrel Coffee, a small-batch roaster in Turlock CA — our story, three coffees with tasting notes and prices, and a contact form.' If the user was vague, ask them one question before calling this rather than sending two words.
contact_emailNoOptional, guest builds only: the user's email — we send the site link and a reminder before the unclaimed site expires.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / template / description
      Previous value: -"Starting template (guest builds; default local-services)."New value: +"Optional override of the starting template. Omit it and the template is chosen from the description."
  2. Changed1 schema field changed
    • changedInput schema / properties / template / enum
      Previous value: -[
      -  "local-services",
      -  "blank",
      -  "restaurant",
      -  "brewery",
      -  "shop",
      -  "portfolio"
      -]New value: +[
      +  "local-services",
      +  "restaurant",
      +  "shop",
      +  "portfolio",
      +  "classes",
      +  "community"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / description / description
      Previous value: -"What the site is for — business, tone, sections wanted. The AI builds directly from this."New value: +"What the site is for. MINIMUM 12 CHARACTERS — a bare 'bike shop' is rejected. Say what the business is, where it is, and what the site should include; the AI builds directly from this, so more detail means a better first result. Good: 'Oak Barrel Coffee, a small-batch roaster in Turlock CA — our story, three coffees with tasting notes and prices, and a contact form.' If the user was vague, ask them one question before calling this rather than sending two words."
    • addedInput schema / properties / description / minLength
      Added value: +12
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare it is not read-only and not destructive; the description goes far beyond that with async semantics (returns status 'building', 2-3 minutes), the guest-site lifecycle (claim_url, free signup, 72-hour deletion of unclaimed sites), and free-tier limits. This is exactly the extra context annotations cannot carry.

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

Conciseness5/5

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

Long but every clause is load-bearing, and the critical constraint (returns immediately, not ready) is front-loaded in the second sentence with the recovery step attached.

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

Completeness4/5

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

There is no output schema, and the description compensates by naming the returned fields (status, expected_url, claim_token, claim_url) and the follow-up tool. It stops short of detailing error/rate-limit behavior, which is the only remaining gap for a build-triggering tool.

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% and the schema already documents template as an override, the 12-character minimum, and contact_email being guest-only, so the baseline is 3. The description reinforces the plain-language input model but adds no parameter syntax or format detail 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?

States a specific verb and resource ('Build a brand-new hosted website') plus the input modality ('from a plain-language description'), which cleanly separates it from edit_site, add_component and write_site_files.

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 and when-not-to-use: it names the follow-up tool (poll get_build_status), forbids calling create_site twice for the same site, and describes the guest vs. signed-in paths. No inference required.

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