Skip to main content
Glama

Publish a new website

create_site

Publishes a NEW website in the user's account and returns its URL; building one takes about 1–3 minutes. Takes the files you designed (index.html required; see get_guide), or no files to get an upload link for a build. Pages should hold only real details the user gave (phone numbers, addresses, prices, reviews). note is required: what you built and why. Photos: /_g/photo?q= gives real photos; image URLs written from memory are often fake, and ones that don't load are replaced.

Input Schema

NameRequiredDescriptionDefault
nameNoSite name for the URL (optional; random if omitted).
noteYesREQUIRED. 1–2 plain sentences: what you changed and why, e.g. "Rebuilt the menu page, added lunch prices, moved contact to the footer." The owner sees it in Ginta's editor; Ginta's own AI reads it.
filesNoAll files of the site (index.html required). Omit to get an upload link for a .zip build instead.
fontsNoFont families used, e.g. "Anton / Work Sans".
aestheticNoThe look from your brief in a few words, e.g. "warm bakery, big photos of the bread".
notify_emailNoOnly if form messages should go to another address than the owner's Ginta account email (the default, every plan).

Output Schema

NameRequiredDescriptionDefault
urlYesThe new site's address.
textYesThe answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).
checkNoGinta's visitor check of the site: forms, parts, links.
uploadNoWhen no files were sent: the upload link for a .zip build.
noticesNoSentences to tell the owner word for word.
site_idYesThe new site's id.
versionNoThe live version (1).
warningsNoThings to look at.
notify_emailNoAnother address for form messages, if set (masked).
images_swappedNoOutside images that didn't load and were replaced with Ginta photos.
owner_next_stepsNoOnce per account: what the owner gets with a plan and how to start it. Follow its instruction.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / owner_next_steps / properties / trial / description
      Previous value: -"true = the €1 trial."New value: +"true = the €1 + VAT trial."
  2. Changed1 schema field changed
    • addedOutput schema / properties / owner_next_steps
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Once per account: what the owner gets with a plan and how to start it. Follow its instruction.",
      +  "properties": {
      +    "checkout_url": {
      +      "type": "string"
      +    },
      +    "example_domain": {
      +      "type": "string"
      +    },
      +    "instruction": {
      +      "description": "How to say it.",
      +      "type": "string"
      +    },
      +    "lang": {
      +      "type": "string"
      +    },
      +    "plan": {
      +      "type": "string"
      +    },
      +    "say": {
      +      "description": "What to tell the owner, in their language.",
      +      "type": "string"
      +    },
      +    "trial": {
      +      "description": "true = the €1 trial.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "say",
      +    "plan",
      +    "trial",
      +    "checkout_url",
      +    "example_domain",
      +    "lang",
      +    "instruction"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / text
      Added value: +{
      +  "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "url",
      -  "site_id"
      -]New value: +[
      +  "url",
      +  "site_id",
      +  "text"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / properties / notify_email / description
      Previous value: -"Another address for form messages, if set."New value: +"Another address for form messages, if set (masked)."
  5. Changed2 schema fields changed
    • changedInput schema / properties / aesthetic / description
      Previous value: -"The named art direction from your brief, e.g. \"1970s municipal pool signage\"."New value: +"The look from your brief in a few words, e.g. \"warm bakery, big photos of the bread\"."
    • removedInput schema / properties / layout
      Removed value: -{
      -  "description": "The layout idea from get_guide section 4 closest to your page, or \"custom\".",
      -  "enum": [
      -    "photo-hero",
      -    "split-hero",
      -    "centered-statement",
      -    "editorial",
      -    "bold-type",
      -    "card-grid",
      -    "minimal-column",
      -    "gallery-first",
      -    "local-utility",
      -    "story-bands",
      -    "dark-luxe",
      -    "custom"
      -  ],
      -  "type": "string"
      -}
  6. Changed1 schema field changed
    • addedOutput schema / properties / images_swapped
      Added value: +{
      +  "description": "Outside images that didn't load and were replaced with Ginta photos.",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "path": {
      +        "description": "The page or stylesheet.",
      +        "type": "string"
      +      },
      +      "photo": {
      +        "description": "The Ginta photo search put in its place (\"\" = removed, the image next to it shows).",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "The image URL that didn't load.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "url",
      +      "photo"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  7. Changed1 schema field changed
    • changedOutput schema / properties / upload / properties / upload_url / description
      Previous value: -"Where to POST the .zip (works 15 minutes)."New value: +"Where to POST the .zip (works 15 minutes, 3 uploads)."
  8. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the write/non-destructive/open-world/idempotent=false profile, and the description adds genuinely new behavior: builds take about 1–3 minutes, the photo endpoint /_g/photo?q=... returns real images, and image URLs that fail to load are replaced. Content policy ("pages should hold only real details the user gave") is also disclosed. It does not cover failure modes such as name collisions, which check_name exists for.

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 return value are front-loaded, then constraints follow, so the agent gets the essentials first. The paragraph is dense and jumps between file requirements, content policy, note, and photo URLs, which makes it harder to scan than a short bulleted structure would be.

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 six-parameter publishing tool that already has full schema coverage and an output schema, the description covers the remaining agent-relevant unknowns: latency, the two input modes, required content, and the fake-image trap. Nothing essential to invoking it correctly is left unstated.

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 the baseline would be 3; the description earns above that by adding meaning the schema does not, notably that omitting files switches the tool into an upload-link mode rather than being a no-op, why note is mandatory (the owner and Ginta's AI read it), and the accepted photo URL pattern for image paths.

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?

"Publishes a NEW website in the user's account and returns its URL" gives a specific verb (publishes), a specific resource (website), and an explicit scope marker (NEW) that separates it from the update_site / manage_site siblings. It also states the primary outcome (the returned URL), so an agent knows what a successful call yields without opening the schema.

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

Usage Guidelines4/5

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

It states both invocation modes clearly: pass the files you designed (index.html required) or omit files to receive an upload link for a .zip build, and it routes to get_guide for details. What is missing is an explicit exclusion against the obvious alternative — nothing says to use update_site instead when the site already exists, leaving that inference to the word "NEW".

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