Skip to main content
Glama

Create site

create_site

Create a new draft site at https://.udx.my/. Free until published. If you already know about the business (from the conversation, your memory or shared files), pass it as brief so it is saved right away and the owner isn't asked again.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slug": "<slug>",
      "title": "<title>"
    },
    "name": "create_site"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNoHow the site is built. Default "react". "react" = a React app in src/ (components, approved packages such as MUI, Tailwind/shadcn, motion, carousels), bundled and pre-rendered by the server. "html" = plain HTML/CSS/JS pages: use it only when the owner asks for plain HTML, CSS and JS (or no React).
slugYes3-40 chars: a-z, 0-9, hyphens
briefNoWhat you already know about the business; same fields as save_brief
titleYes
use_business_briefNoStart from the business brief saved on the account (get_project_memory shows it). Use when this site is for that same business.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / brief / properties / confirmed_by_owner / description
      Added value: +"true once the owner agreed to the plan and to what you assumed for them"
    • addedInput schema / properties / brief / properties / quick_mode
      Added value: +{
      +  "description": "true ONLY when the owner told you to just build it or decide for them: building then needs only the essentials and skips the design, component and layout questions",
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedInput schema / properties / brief / properties / ui_kit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "shadcn",
      +        "mui",
      +        "auto"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "React sites: the component style the owner chose. \"shadcn\" = modern and minimal, restyled to the brand; \"mui\" = Material Design, familiar and app-like; \"auto\" = the owner said you should pick"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "How the site is built. Default \"react\". \"react\" = a React app in src/ (components, approved packages such as MUI, Tailwind/shadcn, motion, carousels), bundled and pre-rendered by the server. \"html\" = plain HTML/CSS/JS pages: use it only when the owner asks for plain HTML, CSS and JS (or no React).",
      +  "enum": [
      +    "react",
      +    "html"
      +  ],
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / brief
      Added value: +{
      +  "description": "What you already know about the business; same fields as save_brief",
      +  "properties": {
      +    "assumptions": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "maxLength": 300,
      +            "type": "string"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "audience": {
      +      "anyOf": [
      +        {
      +          "maxLength": 500,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "brand": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "avoid": {
      +              "items": {
      +                "maxLength": 120,
      +                "type": "string"
      +              },
      +              "maxItems": 10,
      +              "type": "array"
      +            },
      +            "colours": {
      +              "items": {
      +                "pattern": "^#[0-9a-fA-F]{6}$",
      +                "type": "string"
      +              },
      +              "maxItems": 6,
      +              "type": "array"
      +            },
      +            "feeling": {
      +              "description": "Three words for the feeling",
      +              "items": {
      +                "maxLength": 40,
      +                "type": "string"
      +              },
      +              "maxItems": 5,
      +              "type": "array"
      +            },
      +            "fonts": {
      +              "items": {
      +                "maxLength": 60,
      +                "type": "string"
      +              },
      +              "maxItems": 3,
      +              "type": "array"
      +            },
      +            "logo": {
      +              "description": "Path in the site (after upload_asset) or a URL",
      +              "maxLength": 500,
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "business_name": {
      +      "anyOf": [
      +        {
      +          "maxLength": 120,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "competitors": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "maxLength": 300,
      +            "type": "string"
      +          },
      +          "maxItems": 10,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "confirmed_by_owner": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "contact": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "address": {
      +              "maxLength": 300,
      +              "type": "string"
      +            },
      +            "email": {
      +              "maxLength": 200,
      +              "type": "string"
      +            },
      +            "hours": {
      +              "maxLength": 500,
      +              "type": "string"
      +            },
      +            "maps_url": {
      +              "maxLength": 500,
      +              "type": "string"
      +            },
      +            "phone": {
      +              "maxLength": 30,
      +              "type": "string"
      +            },
      +            "whatsapp": {
      +              "maxLength": 30,
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "content_sources": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "properties": {
      +              "kind": {
      +                "enum": [
      +                  "pdf",
      +                  "website",
      +                  "social",
      +                  "photos",
      +                  "text",
      +                  "google_maps",
      +                  "other"
      +                ],
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 200,
      +                "type": "string"
      +              },
      +              "notes": {
      +                "maxLength": 1000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "description": {
      +      "anyOf": [
      +        {
      +          "maxLength": 2000,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "What the business does and what makes it different"
      +    },
      +    "design_direction": {
      +      "anyOf": [
      +        {
      +          "maxLength": 60,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Direction chosen from design_guide"
      +    },
      +    "features": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "e.g. contact form, booking, shop, payments, visitor sign-in, custom domain"
      +    },
      +    "goal": {
      +      "anyOf": [
      +        {
      +          "maxLength": 500,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "key_content": {
      +      "anyOf": [
      +        {
      +          "maxLength": 5000,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Products/services and prices, about story, certifications: the facts to put on the site"
      +    },
      +    "languages": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "maxLength": 30,
      +            "type": "string"
      +          },
      +          "maxItems": 5,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "location": {
      +      "anyOf": [
      +        {
      +          "maxLength": 200,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "niche": {
      +      "anyOf": [
      +        {
      +          "maxLength": 120,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Type of business in plain words, e.g. \"kedai kek\", \"dental clinic\""
      +    },
      +    "pages": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          "maxItems": 20,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "primary_action": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "whatsapp",
      +            "book",
      +            "buy",
      +            "call",
      +            "enquire",
      +            "visit",
      +            "rsvp",
      +            "other"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "references": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "properties": {
      +              "image": {
      +                "description": "What a shared screenshot shows",
      +                "maxLength": 300,
      +                "type": "string"
      +              },
      +              "likes": {
      +                "description": "What the owner likes about it, and what to take from it",
      +                "maxLength": 500,
      +                "type": "string"
      +              },
      +              "url": {
      +                "maxLength": 500,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "likes"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 10,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / use_business_brief
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "enum": [
      +        "true",
      +        "false"
      +      ],
      +      "type": "string"
      +    }
      +  ],
      +  "description": "Start from the business brief saved on the account (get_project_memory shows it). Use when this site is for that same business."
      +}
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write/safe profile is known. The description adds real behavior beyond that: the site starts as a draft, is free until published, and supplying brief causes information to be persisted immediately and suppresses re-prompting the owner — a meaningful side effect. Auth requirements, slug-collision behavior, and limits are not covered.

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?

Two sentences, no filler, and the most decision-relevant facts (what is created, where it lives, that it costs nothing until published) are front-loaded before the optional-input advice.

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?

For a five-parameter tool with a large nested brief object and no output schema, the definition covers the essentials: the artifact created, its URL, and the main behavioral consequence of the optional payload. It leaves use_business_brief and mode selection entirely to schema text, so it is solid but not fully self-sufficient.

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 80%, so the baseline is 3; the description earns an extra point by explaining the purpose of brief (what you already know about the business) and its downstream effect of not re-asking the owner. It adds nothing for slug, title, mode, or use_business_brief, which are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a new draft site") plus the concrete resulting URL pattern https://<slug>.udx.my/ and its billing state ("Free until published"). The word "draft" implicitly separates it from publish_site/unpublish_site, but no sibling is named explicitly, keeping it just short of a 5.

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?

Gives a clear condition for the trickiest input: pass brief when you already know the business, so the owner isn't asked again. It does not address tool-level alternatives (e.g. when to start from an existing business brief vs. a template, or when to prefer create_design_options first), so guidance is present but not exhaustive.

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