Skip to main content
Glama

Website: Create landing

website_create_landing

Create and PUBLISH a one-page landing site with a lead form for a business, from a few answers: what the business is, its services/products, optionally the city, contacts and a site whose look to take inspiration from. The page goes live on its own subdomain within about a minute (AI copy is refined in the background); leads from its form land in the CRM. Calling it again for the same business returns the existing page instead of a second one. NEVER call it to change a site the workspace already has (photos, text, contacts, look) — that is refused; use the website_* edit tools. style='premium' builds the premium design (paid workspaces; the result's 'premium' lists directions + palettes to offer). When the workspace's plan allows no more sites it creates nothing and returns 'upsell': the existing site and the plans that allow more. The result's 'classification' says which type the server picked ({archetype, name, confidence, uncertain, alternatives}); when 'uncertain' is true, ask the person «Схоже на: / <alternatives…> / Інше?» with buttons, and on another pick switch the site's template to it (content stays). Runs propose→confirm. CONFIRMATION: this tool is PROPOSED, never performed directly. You get status='confirmation_required' with an action_id and a plan_token, and the write happens only after confirm_action.

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": {
      "business": "<business>",
      "services": "<services>"
    },
    "name": "website_create_landing"
  }
}

Input Schema

NameRequiredDescriptionDefault
cityNo
teamNoReal team members the person named (never invent any).
factsNoNumbers the person stated about the business, e.g. {value: '12', label: 'років досвіду'}. The page shows a numbers block only from these.
offerNoThe person's own offer in their words (a free trial, a first-visit price, warranty terms). Pass ONLY if they stated it; it is shown verbatim.
styleNo'premium' = the archetype's premium design (editorial type, premium palette, motion effects) — included with any paid plan or paid module; a free workspace gets status 'blocked' with 'premium_upsell' (the plans on sale). Omit for the standard design. Offer the choice using 'premium.choices' from a previous result.
paletteNoA palette slug of the archetype (returned in 'palettes'); omit for the archetype's default.
reviewsNoReal client reviews the person gave (never invent any). Without them the page's reviews block stays hidden until the owner adds real ones.
businessYesThe business the page is for, e.g. 'Кав'ярня «Зерно»'.
contactsNoOptional {phone, email, address, instagram, telegram, …}. Missing phone/email fall back to the workspace's and then the caller's.
languageNo
servicesYesWhat it sells or does, one short label per item. Append a price ONLY when the person named one, e.g. 'Стрижка — від 500 грн'; never guess one.
archetypeNoThe page's structure, e.g. training, service, expert, event, product, marketing, beauty, hospitality, sport, tutor, home_repair, device_repair, cleaning, auto (the server lists all and refuses an unknown one). Omit to let the server pick from the answers; the chosen one is returned.
directionNoWith style=premium: one of the archetype's premium directions ('premium.choices[].direction'); omit for the first. 'palette' then names one of that direction's palettes.
old_priceNoA product's previous price, ONLY if the person stated it.
style_urlNoA public https page whose look (colours, fonts, corner radius) the landing should take after. Only style is read, never text or images; it is applied in the background a minute or two after the page is live.

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?

Annotations only say it is a non-destructive write; the description goes far beyond that, disclosing that the page goes live on its own subdomain in about a minute, AI copy is refined in the background, leads land in the CRM, repeat calls return the existing page (idempotent), a full plan returns 'upsell' and creates nothing, and edits are refused. It also discloses this is a propose→confirm tool requiring confirm_action with status='confirmation_required', action_id and plan_token.

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?

Front-loaded with the core action and outcome, and each block (idempotency, edit refusal, premium/upsell, classification, confirmation) carries distinct information. It is a dense wall of text with some status-code dosing that could be tightened, but almost nothing is redundant.

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 15-parameter mutation tool with nested objects and no output schema, the description still explains the possible return states ('upsell', 'blocked'/'premium_upsell', 'classification', 'premium.choices', confirmation payload) and the asynchronous side effects. An agent has what it needs to call it and interpret the result.

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 high (87%), so the schema already carries most parameter meaning and the baseline is 3. The description adds real value on interplay the schema can't express: style='premium' depends on plan and returns 'premium.choices', plus how archetype, direction and palette relate to one another and to the classification result.

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: 'Create and PUBLISH a one-page landing site with a lead form for a business', plus the inputs it is built from. It distinguishes itself from siblings by explicitly naming the website_* edit tools as the wrong choice for changes.

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?

Gives explicit when-to-use (new business site from a few answers), when-not ('NEVER call it to change a site the workspace already has'), and the exact redirect ('use the website_* edit tools'). It also routes the premium and upsell branches and explains what to do when 'classification.uncertain' is true.

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