Skip to main content
Glama

Draft a page design

design_page
Destructive

Creators only, on their own Piku account (asks them to connect). Propose a design for the creator's page as a Page draft: any of the look (theme and buttons), bio, link titles, the order of links, widgets, sections and Rates, new links or widgets the creator gave you, groups (a list or a sideways row), up to 2 Rate buttons under the bio, and the Portfolio's numbers and productions. Every field is optional; give only what changes. Nothing on the live page changes: the creator previews the Page draft and applies it, or parts of it, in the page builder. A new design replaces the open one. Returns the draft_id, the changes by part and a preview_url.

Input Schema

NameRequiredDescriptionDefault
addNoNew links or widgets, only from addresses the creator gave you. Links must be https.
bioNoPlain text
lookNoThe page's theme and buttons. Fonts and custom backgrounds are not available.
groupsNoEvery group the page will have after the design, in order ([] removes them all; leave it out to keep them). Each group shows where its first item is. Row suits videos and posts; left out, the layout is row when every item is a widget, else list.
titlesNoNew titles for links or widgets, by id from get_page
sectionsNoThe tabs shown, in order. The first opens first.
portfolioNoThe Portfolio tab's numbers strip and productions. A list given replaces that list; one left out stays. Only numbers the creator gave you; never invent reach.
links_orderNoLink and widget ids in the new order; new:0 is the first item of add. Ones left out follow in their order.
rates_orderNoRate ids in the new order. Ones left out follow.
rate_buttonsNoEvery Rate button under the bio after the design ([] removes them). The first is the page's main ask. Only Rates that can be requested.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / groups
      Added value: +{
      +  "description": "Every group the page will have after the design, in order ([] removes them all; leave it out to keep them). Each group shows where its first item is. Row suits videos and posts; left out, the layout is row when every item is a widget, else list.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "items": {
      +        "description": "Link and widget ids from get_page, or new:N for an item of add. An item is in one group at most.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 30,
      +        "minItems": 2,
      +        "type": "array",
      +        "uniqueItems": true
      +      },
      +      "layout": {
      +        "description": "list: stacked. row: side by side, scrolling sideways",
      +        "enum": [
      +          "list",
      +          "row"
      +        ],
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Shown over the group, like The Conversation",
      +        "maxLength": 40,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / portfolio
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The Portfolio tab's numbers strip and productions. A list given replaces that list; one left out stays. Only numbers the creator gave you; never invent reach.",
      +  "properties": {
      +    "numbers": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "label": {
      +            "description": "What it counts, like Instagram followers",
      +            "maxLength": 30,
      +            "type": "string"
      +          },
      +          "value": {
      +            "description": "Like 28.6K or 2",
      +            "maxLength": 12,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "value",
      +          "label"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 4,
      +      "type": "array"
      +    },
      +    "productions": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "by": {
      +            "description": "Where it ran or who made it",
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          "feature": {
      +            "description": "Shown wide, at the top",
      +            "type": "boolean"
      +          },
      +          "kicker": {
      +            "description": "A word over a featured card, like Show",
      +            "maxLength": 20,
      +            "type": "string"
      +          },
      +          "role": {
      +            "description": "The creator's role, like Host",
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          "title": {
      +            "maxLength": 100,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Where to watch it; a YouTube link gives the card its still",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "title"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 12,
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / rate_buttons
      Added value: +{
      +  "description": "Every Rate button under the bio after the design ([] removes them). The first is the page's main ask. Only Rates that can be requested.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "label": {
      +        "description": "The words on the button, like Be a guest",
      +        "maxLength": 30,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rate": {
      +        "description": "A Rate id from get_page",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "rate",
      +      "label"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 2,
      +  "type": "array"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / sections / items / enum
      Previous value: -[
      -  "links",
      -  "rates",
      -  "media-kit"
      -]New value: +[
      +  "links",
      +  "rates",
      +  "media-kit",
      +  "events"
      +]
    • changedInput schema / properties / sections / maxItems
      Previous value: -3New value: +4
  3. Changed2 schema fields changed
    • changedInput schema / properties / look / description
      Previous value: -"The page's buttons. Fonts and backgrounds are not available."New value: +"The page's theme and buttons. Fonts and custom backgrounds are not available."
    • addedInput schema / properties / look / properties / theme
      Added value: +{
      +  "description": "Background, surfaces, text and accent together. get_page lists them",
      +  "enum": [
      +    "mist",
      +    "plum",
      +    "ink",
      +    "sand"
      +  ],
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well past the annotations by clarifying the draft/live distinction ('Nothing on the live page changes: the creator previews the Page draft and applies it, or parts of it') and the destructive nuance ('A new design replaces the open one'), which explains the destructiveHint flag concretely. It also states the return payload (draft_id, changes by part, preview_url), closing the gap left by having no output schema.

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 critical constraints — creator-only access and what a design may contain — are front-loaded, and each subsequent sentence (optionality, draft safety, returns) earns its place. The one cost is the sprawling comma-and-parenthesis enumeration of designable parts, which is dense but still parseable.

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 10-parameter, zero-required, deeply nested mutation tool the description covers scope, permissions, partial-update behavior, draft safety, and return values. Remaining gaps are minor: no guidance on obtaining ids from get_page or on what happens to an existing draft's unnamed parts beyond the general replacement note.

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%, so field semantics are already carried by the structured data. The description adds the cross-cutting rule that omitted fields are preserved and that only creator-supplied links or numbers may be used, but it adds little per-parameter meaning beyond that; baseline 3 applies.

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?

Names a specific verb and resource: 'Propose a design for the creator's page as a Page draft', then enumerates exactly what the design may cover (look, bio, titles, order, widgets, sections, Rates, groups, Portfolio). An agent can distinguish this from send_draft or get_page without reading 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?

'Creators only, on their own Piku account (asks them to connect)' establishes the prerequisite, and 'Every field is optional; give only what changes' defines the partial-update contract. No sibling is named as an alternative or a required prior step, though get_page appears in the schema as the id source — that routing is left implicit in the description body.

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.