Skip to main content
Glama

create_proposal

Create a new proposal from plain Markdown content. Provide the approved content as standard Markdown text (headings, paragraphs, lists, tables) and a short brief; the platform designs the pages, layout, images, and charts. Do not send JSON, HTML, page markers, or pre-structured page objects. Call check_website before drafting, after initialize_chat has been called in this conversation. If the workspace still has no website, the result shows a card where the user can add one or skip; the card then creates the document. If the user shares their own website in chat, pass it as websiteUrl. If the user asked for specific colors, fonts, or a look for this document, pass them as theme; otherwise omit it and the workspace theme is used.

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": {
      "title": "<title>",
      "markdown": "<markdown>",
      "brief": "<brief>"
    },
    "name": "create_proposal"
  }
}

Input Schema

NameRequiredDescriptionDefault
briefYesA plain-text brief for the designer, who sees only the Markdown and this brief, never the chat. The Markdown carries the facts; the brief carries what the conversation established that changes how the document should be built: its purpose, who reads it and what they will check, the tone, the length or page count the user asked for, anything they asked to see in their own words (for example a chart or side-by-side options), and what must stay exact, separate, or out. Its length follows the document, from a few sentences for a quote to about 300 words for a long contract. Do not summarise the content.
themeNoOnly when the user asked for specific colors, fonts, or a look for this document. Exact hex codes and font names they gave go in the color and font fields as sent. A gradient behind the pages goes in pageBackground as a CSS linear-gradient with hex stops, when it serves the look. If they described colors or a feel in words ("dark blue", "earthy and premium") without hex codes, design the palette yourself, set designed to true, and name it: a deep, slightly muted primary that reads clearly on cardBackground, an optional secondary, a white or faintly tinted cardBackground (dark only when they ask for dark mode, or for a deck), and fonts that carry the feel. Always include imageStylePrompt with the theme: palette in words, lighting, and mood. A color word means that hue as the accent, not a dark page. Omit theme when they asked for nothing visual ("professional", "clean"). The platform derives every role you leave out. Never invent colors the user did not ask for.
titleYesThe title of the proposal
cardIdNoSent only by the in-chat website card. Never set it yourself.
currencyNoOptional. The ISO 4217 code (INR, EUR, AED, GBP, USD) of the currency the prices in this document are in, as the user stated them or the content shows. Pricing tables print this currency instead of the workspace default. Omit it when the document has no prices or the currency is not clear.
markdownYesThe approved content as plain Markdown text only (## headings, paragraphs, - lists, | tables |). It carries the facts and wording; the platform decides pages and layout. Must NOT be JSON or a structured page object.
renderTypeNoRender type (default: document)
websiteUrlNoThe user's website. Starts workspace brand and content extraction, then creates the proposal. Use their own site, not a client's.
headerFooterNoOptional. Text or the page number repeated on every page except the cover. It helps when readers cite or trace pages, as in contracts, SOWs, RFP responses, and longer formal documents, and it clutters short, persuasive, or screen-first documents such as quotes, presentations, and webpages. Decide from the document type and length; omit it when unsure. A footer usually serves best: page_number at bottom-right plus at most one short text (about 50 characters) at bottom-left, such as a confidentiality mark or the document reference.
websitePromptResumeNoContinuation token sent only by the in-chat website card. Never set it yourself.

Output Schema

NameRequiredDescriptionDefault
urlNo
themeNoThe custom theme that was applied, with any adjustments made to it.
titleYes
statusYes
proposalIdNo
renderTypeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / theme / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "body": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Paragraph text color. Must read clearly on cardBackground."
      -      },
      -      "bodyFont": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "arial",
      -              "times-new-roman",
      -              "georgia",
      -              "helvetica",
      -              "roboto",
      -              "open-sans",
      -              "montserrat",
      -              "inter",
      -              "poppins",
      -              "lato",
      -              "oswald",
      -              "raleway",
      -              "nunito",
      -              "nunito-sans",
      -              "rubik",
      -              "ubuntu",
      -              "playfair-display",
      -              "merriweather",
      -              "roboto-slab",
      -              "work-sans",
      -              "dm-sans",
      -              "lora",
      -              "jost",
      -              "manrope",
      -              "quicksand",
      -              "fira-sans",
      -              "barlow",
      -              "mulish",
      -              "cabin",
      -              "karla",
      -              "source-sans-3",
      -              "pt-sans",
      -              "pt-serif",
      -              "libre-baskerville",
      -              "outfit",
      -              "bebas-neue",
      -              "sora",
      -              "space-grotesk",
      -              "lexend",
      -              "plus-jakarta-sans",
      -              "figtree",
      -              "ibm-plex-sans",
      -              "eb-garamond",
      -              "bitter",
      -              "crimson-text"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      -      },
      -      "button": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Button color. Leave out to use primary."
      -      },
      -      "cardBackground": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The page surface itself, where all text sits. If the user names only one background color, such as off-white, send it here. For a dark document, use a near-black tinted toward the accent hue, not flat #121212 or #000000."
      -      },
      -      "designed": {
      -        "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "heading": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading text color. Must read clearly on cardBackground."
      -      },
      -      "headingFont": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "arial",
      -              "times-new-roman",
      -              "georgia",
      -              "helvetica",
      -              "roboto",
      -              "open-sans",
      -              "montserrat",
      -              "inter",
      -              "poppins",
      -              "lato",
      -              "oswald",
      -              "raleway",
      -              "nunito",
      -              "nunito-sans",
      -              "rubik",
      -              "ubuntu",
      -              "playfair-display",
      -              "merriweather",
      -              "roboto-slab",
      -              "work-sans",
      -              "dm-sans",
      -              "lora",
      -              "jost",
      -              "manrope",
      -              "quicksand",
      -              "fira-sans",
      -              "barlow",
      -              "mulish",
      -              "cabin",
      -              "karla",
      -              "source-sans-3",
      -              "pt-sans",
      -              "pt-serif",
      -              "libre-baskerville",
      -              "outfit",
      -              "bebas-neue",
      -              "sora",
      -              "space-grotesk",
      -              "lexend",
      -              "plus-jakarta-sans",
      -              "figtree",
      -              "ibm-plex-sans",
      -              "eb-garamond",
      -              "bitter",
      -              "crimson-text"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      -      },
      -      "headingWeight": {
      -        "anyOf": [
      -          {
      -            "maximum": 800,
      -            "minimum": 500,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading weight, 500 to 800. Omit for bold (700)."
      -      },
      -      "imageStylePrompt": {
      -        "anyOf": [
      -          {
      -            "maxLength": 500,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Always send this when you send theme. One or two sentences: the palette in words matching the colors, the lighting, and the mood. Translate a feel the user named (\"earthy and premium\") into those three. Example: \"Warm ivory and soft stone neutrals with muted moss accents. Soft natural window light, gentle shadows, generous negative space. Calm, refined mood.\" No hex codes, brand or company names, logos, or a medium (photography vs illustration vs 3D)."
      -      },
      -      "link": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Inline link color. Leave out to use primary."
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "maxLength": 60,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      -      },
      -      "pageBackground": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The canvas behind the document pages. Send it with cardBackground, in the same hue family and a shade deeper than the card (light or dark), never the same color and never pure black."
      -      },
      -      "primary": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Main brand color, used for table headers, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      -      },
      -      "secondary": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Paragraph text color. Must read clearly on cardBackground."
      +      },
      +      "bodyFont": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "arial",
      +              "times-new-roman",
      +              "georgia",
      +              "helvetica",
      +              "roboto",
      +              "open-sans",
      +              "montserrat",
      +              "inter",
      +              "poppins",
      +              "lato",
      +              "oswald",
      +              "raleway",
      +              "nunito",
      +              "nunito-sans",
      +              "rubik",
      +              "ubuntu",
      +              "playfair-display",
      +              "merriweather",
      +              "roboto-slab",
      +              "work-sans",
      +              "dm-sans",
      +              "lora",
      +              "jost",
      +              "manrope",
      +              "quicksand",
      +              "fira-sans",
      +              "barlow",
      +              "mulish",
      +              "cabin",
      +              "karla",
      +              "source-sans-3",
      +              "pt-sans",
      +              "pt-serif",
      +              "libre-baskerville",
      +              "outfit",
      +              "bebas-neue",
      +              "sora",
      +              "space-grotesk",
      +              "lexend",
      +              "plus-jakarta-sans",
      +              "figtree",
      +              "ibm-plex-sans",
      +              "eb-garamond",
      +              "bitter",
      +              "crimson-text"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      +      },
      +      "button": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Button fill; the label color adjusts itself. Leave out to use primary, or the secondary when it is a strong brand color."
      +      },
      +      "cardBackground": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The page or slide surface itself, where all text sits. If the user names only one background color, such as off-white, send it here. For a dark document, use a near-black tinted toward the accent hue, not flat #121212 or #000000. When it flips between light and dark, send heading and body too, since text colors never adjust on their own."
      +      },
      +      "designed": {
      +        "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "heading": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading text color. Must read clearly on cardBackground."
      +      },
      +      "headingFont": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "arial",
      +              "times-new-roman",
      +              "georgia",
      +              "helvetica",
      +              "roboto",
      +              "open-sans",
      +              "montserrat",
      +              "inter",
      +              "poppins",
      +              "lato",
      +              "oswald",
      +              "raleway",
      +              "nunito",
      +              "nunito-sans",
      +              "rubik",
      +              "ubuntu",
      +              "playfair-display",
      +              "merriweather",
      +              "roboto-slab",
      +              "work-sans",
      +              "dm-sans",
      +              "lora",
      +              "jost",
      +              "manrope",
      +              "quicksand",
      +              "fira-sans",
      +              "barlow",
      +              "mulish",
      +              "cabin",
      +              "karla",
      +              "source-sans-3",
      +              "pt-sans",
      +              "pt-serif",
      +              "libre-baskerville",
      +              "outfit",
      +              "bebas-neue",
      +              "sora",
      +              "space-grotesk",
      +              "lexend",
      +              "plus-jakarta-sans",
      +              "figtree",
      +              "ibm-plex-sans",
      +              "eb-garamond",
      +              "bitter",
      +              "crimson-text"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      +      },
      +      "headingWeight": {
      +        "anyOf": [
      +          {
      +            "maximum": 800,
      +            "minimum": 500,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading weight, 500 to 800. Omit for bold (700)."
      +      },
      +      "imageStylePrompt": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Always send this when you send theme. One or two sentences: the palette in words matching the colors, the lighting, and the mood. Translate a feel the user named (\"earthy and premium\") into those three. Example: \"Warm ivory and soft stone neutrals with muted moss accents. Soft natural window light, gentle shadows, generous negative space. Calm, refined mood.\" No hex codes, brand or company names, logos, or a medium (photography vs illustration vs 3D)."
      +      },
      +      "link": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Text link color. Leave out to use primary."
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      +      },
      +      "pageBackground": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The backdrop behind every page or slide, and the site background on a webpage. Send it with cardBackground, in the same hue family and a shade deeper than the card (light or dark), never the same color and never pure black. A hex color, or a CSS linear-gradient with hex stops, for example linear-gradient(135deg, #0b1f3a 0%, #1d4e89 100%). Use a gradient when it serves the look: it can hold several colors without affecting text readability, since text sits on cardBackground. Keep the stops close in lightness so it stays calm. cardBackground is always one color."
      +      },
      +      "primary": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Main brand color: filled boxes and cards, table headers, labels, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      +      },
      +      "secondary": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / theme / description
      Previous value: -"Only when the user asked for specific colors, fonts, or a look for this document. Exact hex codes and font names they gave go in the color and font fields as sent. If they described colors or a feel in words (\"dark blue\", \"earthy and premium\") without hex codes, design the palette yourself, set designed to true, and name it: a deep, slightly muted primary that reads clearly on cardBackground, an optional secondary, a white or faintly tinted cardBackground (dark only when they ask for dark mode, or for a deck), and fonts that carry the feel. Always include imageStylePrompt with the theme: palette in words, lighting, and mood. A color word means that hue as the accent, not a dark page. Omit theme when they asked for nothing visual (\"professional\", \"clean\"). The platform derives every role you leave out. Never invent colors the user did not ask for."New value: +"Only when the user asked for specific colors, fonts, or a look for this document. Exact hex codes and font names they gave go in the color and font fields as sent. A gradient behind the pages goes in pageBackground as a CSS linear-gradient with hex stops, when it serves the look. If they described colors or a feel in words (\"dark blue\", \"earthy and premium\") without hex codes, design the palette yourself, set designed to true, and name it: a deep, slightly muted primary that reads clearly on cardBackground, an optional secondary, a white or faintly tinted cardBackground (dark only when they ask for dark mode, or for a deck), and fonts that carry the feel. Always include imageStylePrompt with the theme: palette in words, lighting, and mood. A color word means that hue as the accent, not a dark page. Omit theme when they asked for nothing visual (\"professional\", \"clean\"). The platform derives every role you leave out. Never invent colors the user did not ask for."
  2. Changed1 schema field changed
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "Optional. The ISO 4217 code (INR, EUR, AED, GBP, USD) of the currency the prices in this document are in, as the user stated them or the content shows. Pricing tables print this currency instead of the workspace default. Omit it when the document has no prices or the currency is not clear.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / theme / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "body": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Paragraph text color. Must read clearly on cardBackground."
      -      },
      -      "bodyFont": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "arial",
      -              "times-new-roman",
      -              "georgia",
      -              "helvetica",
      -              "roboto",
      -              "open-sans",
      -              "montserrat",
      -              "inter",
      -              "poppins",
      -              "lato",
      -              "oswald",
      -              "raleway",
      -              "nunito",
      -              "nunito-sans",
      -              "rubik",
      -              "ubuntu",
      -              "playfair-display",
      -              "merriweather",
      -              "roboto-slab",
      -              "work-sans",
      -              "dm-sans",
      -              "lora",
      -              "jost",
      -              "manrope",
      -              "quicksand",
      -              "fira-sans",
      -              "barlow",
      -              "mulish",
      -              "cabin",
      -              "karla",
      -              "source-sans-3",
      -              "pt-sans",
      -              "pt-serif",
      -              "libre-baskerville",
      -              "outfit",
      -              "bebas-neue",
      -              "sora",
      -              "space-grotesk",
      -              "lexend",
      -              "plus-jakarta-sans",
      -              "figtree",
      -              "ibm-plex-sans",
      -              "eb-garamond",
      -              "bitter",
      -              "crimson-text"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      -      },
      -      "button": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Button color. Leave out to use primary."
      -      },
      -      "cardBackground": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The page surface itself, where all text sits. If the user names only one background color, such as off-white, send it here. For a dark document, use a near-black tinted toward the accent hue, not flat #121212 or #000000."
      -      },
      -      "designed": {
      -        "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "heading": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading text color. Must read clearly on cardBackground."
      -      },
      -      "headingFont": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "arial",
      -              "times-new-roman",
      -              "georgia",
      -              "helvetica",
      -              "roboto",
      -              "open-sans",
      -              "montserrat",
      -              "inter",
      -              "poppins",
      -              "lato",
      -              "oswald",
      -              "raleway",
      -              "nunito",
      -              "nunito-sans",
      -              "rubik",
      -              "ubuntu",
      -              "playfair-display",
      -              "merriweather",
      -              "roboto-slab",
      -              "work-sans",
      -              "dm-sans",
      -              "lora",
      -              "jost",
      -              "manrope",
      -              "quicksand",
      -              "fira-sans",
      -              "barlow",
      -              "mulish",
      -              "cabin",
      -              "karla",
      -              "source-sans-3",
      -              "pt-sans",
      -              "pt-serif",
      -              "libre-baskerville",
      -              "outfit",
      -              "bebas-neue",
      -              "sora",
      -              "space-grotesk",
      -              "lexend",
      -              "plus-jakarta-sans",
      -              "figtree",
      -              "ibm-plex-sans",
      -              "eb-garamond",
      -              "bitter",
      -              "crimson-text"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      -      },
      -      "headingWeight": {
      -        "anyOf": [
      -          {
      -            "maximum": 800,
      -            "minimum": 500,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading weight, 500 to 800. Omit for bold (700)."
      -      },
      -      "link": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Inline link color. Leave out to use primary."
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "maxLength": 60,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      -      },
      -      "pageBackground": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The canvas behind the document pages. Send it with cardBackground, in the same hue family and a shade deeper than the card (light or dark), never the same color and never pure black."
      -      },
      -      "primary": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Main brand color, used for table headers, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      -      },
      -      "secondary": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Paragraph text color. Must read clearly on cardBackground."
      +      },
      +      "bodyFont": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "arial",
      +              "times-new-roman",
      +              "georgia",
      +              "helvetica",
      +              "roboto",
      +              "open-sans",
      +              "montserrat",
      +              "inter",
      +              "poppins",
      +              "lato",
      +              "oswald",
      +              "raleway",
      +              "nunito",
      +              "nunito-sans",
      +              "rubik",
      +              "ubuntu",
      +              "playfair-display",
      +              "merriweather",
      +              "roboto-slab",
      +              "work-sans",
      +              "dm-sans",
      +              "lora",
      +              "jost",
      +              "manrope",
      +              "quicksand",
      +              "fira-sans",
      +              "barlow",
      +              "mulish",
      +              "cabin",
      +              "karla",
      +              "source-sans-3",
      +              "pt-sans",
      +              "pt-serif",
      +              "libre-baskerville",
      +              "outfit",
      +              "bebas-neue",
      +              "sora",
      +              "space-grotesk",
      +              "lexend",
      +              "plus-jakarta-sans",
      +              "figtree",
      +              "ibm-plex-sans",
      +              "eb-garamond",
      +              "bitter",
      +              "crimson-text"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      +      },
      +      "button": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Button color. Leave out to use primary."
      +      },
      +      "cardBackground": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The page surface itself, where all text sits. If the user names only one background color, such as off-white, send it here. For a dark document, use a near-black tinted toward the accent hue, not flat #121212 or #000000."
      +      },
      +      "designed": {
      +        "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "heading": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading text color. Must read clearly on cardBackground."
      +      },
      +      "headingFont": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "arial",
      +              "times-new-roman",
      +              "georgia",
      +              "helvetica",
      +              "roboto",
      +              "open-sans",
      +              "montserrat",
      +              "inter",
      +              "poppins",
      +              "lato",
      +              "oswald",
      +              "raleway",
      +              "nunito",
      +              "nunito-sans",
      +              "rubik",
      +              "ubuntu",
      +              "playfair-display",
      +              "merriweather",
      +              "roboto-slab",
      +              "work-sans",
      +              "dm-sans",
      +              "lora",
      +              "jost",
      +              "manrope",
      +              "quicksand",
      +              "fira-sans",
      +              "barlow",
      +              "mulish",
      +              "cabin",
      +              "karla",
      +              "source-sans-3",
      +              "pt-sans",
      +              "pt-serif",
      +              "libre-baskerville",
      +              "outfit",
      +              "bebas-neue",
      +              "sora",
      +              "space-grotesk",
      +              "lexend",
      +              "plus-jakarta-sans",
      +              "figtree",
      +              "ibm-plex-sans",
      +              "eb-garamond",
      +              "bitter",
      +              "crimson-text"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      +      },
      +      "headingWeight": {
      +        "anyOf": [
      +          {
      +            "maximum": 800,
      +            "minimum": 500,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading weight, 500 to 800. Omit for bold (700)."
      +      },
      +      "imageStylePrompt": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Always send this when you send theme. One or two sentences: the palette in words matching the colors, the lighting, and the mood. Translate a feel the user named (\"earthy and premium\") into those three. Example: \"Warm ivory and soft stone neutrals with muted moss accents. Soft natural window light, gentle shadows, generous negative space. Calm, refined mood.\" No hex codes, brand or company names, logos, or a medium (photography vs illustration vs 3D)."
      +      },
      +      "link": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Inline link color. Leave out to use primary."
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      +      },
      +      "pageBackground": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The canvas behind the document pages. Send it with cardBackground, in the same hue family and a shade deeper than the card (light or dark), never the same color and never pure black."
      +      },
      +      "primary": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Main brand color, used for table headers, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      +      },
      +      "secondary": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / theme / description
      Previous value: -"Only when the user asked for specific colors, fonts, or a look for this document. Exact hex codes and font names they gave go in the color and font fields as sent. If they described colors or a feel in words (\"dark blue\", \"earthy and premium\") without hex codes, design the palette yourself, set designed to true, and name it: a deep, slightly muted primary that reads clearly on cardBackground, an optional secondary, a white or faintly tinted cardBackground (dark only when they ask for dark mode, or for a deck), and fonts that carry the feel. A color word means that hue as the accent, not a dark page. Omit theme when they asked for nothing visual (\"professional\", \"clean\"). The platform derives every role you leave out. Never invent colors the user did not ask for."New value: +"Only when the user asked for specific colors, fonts, or a look for this document. Exact hex codes and font names they gave go in the color and font fields as sent. If they described colors or a feel in words (\"dark blue\", \"earthy and premium\") without hex codes, design the palette yourself, set designed to true, and name it: a deep, slightly muted primary that reads clearly on cardBackground, an optional secondary, a white or faintly tinted cardBackground (dark only when they ask for dark mode, or for a deck), and fonts that carry the feel. Always include imageStylePrompt with the theme: palette in words, lighting, and mood. A color word means that hue as the accent, not a dark page. Omit theme when they asked for nothing visual (\"professional\", \"clean\"). The platform derives every role you leave out. Never invent colors the user did not ask for."
  4. Changed1 schema field changed
    • changedInput schema / properties / theme / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "body": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Paragraph text color. Must read clearly on cardBackground."
      -      },
      -      "bodyFont": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "arial",
      -              "times-new-roman",
      -              "georgia",
      -              "helvetica",
      -              "roboto",
      -              "open-sans",
      -              "montserrat",
      -              "inter",
      -              "poppins",
      -              "lato",
      -              "oswald",
      -              "raleway",
      -              "nunito",
      -              "nunito-sans",
      -              "rubik",
      -              "ubuntu",
      -              "playfair-display",
      -              "merriweather",
      -              "roboto-slab",
      -              "work-sans",
      -              "dm-sans",
      -              "lora",
      -              "jost",
      -              "manrope",
      -              "quicksand",
      -              "fira-sans",
      -              "barlow",
      -              "mulish",
      -              "cabin",
      -              "karla",
      -              "source-sans-3",
      -              "pt-sans",
      -              "pt-serif",
      -              "libre-baskerville",
      -              "outfit",
      -              "bebas-neue",
      -              "sora",
      -              "space-grotesk",
      -              "lexend",
      -              "plus-jakarta-sans",
      -              "figtree",
      -              "ibm-plex-sans",
      -              "eb-garamond",
      -              "bitter",
      -              "crimson-text"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      -      },
      -      "button": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Button color. Leave out to use primary."
      -      },
      -      "cardBackground": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The page surface itself, where all text sits. If the user names only one background color, such as off-white, send it here."
      -      },
      -      "designed": {
      -        "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "heading": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading text color. Must read clearly on cardBackground."
      -      },
      -      "headingFont": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "arial",
      -              "times-new-roman",
      -              "georgia",
      -              "helvetica",
      -              "roboto",
      -              "open-sans",
      -              "montserrat",
      -              "inter",
      -              "poppins",
      -              "lato",
      -              "oswald",
      -              "raleway",
      -              "nunito",
      -              "nunito-sans",
      -              "rubik",
      -              "ubuntu",
      -              "playfair-display",
      -              "merriweather",
      -              "roboto-slab",
      -              "work-sans",
      -              "dm-sans",
      -              "lora",
      -              "jost",
      -              "manrope",
      -              "quicksand",
      -              "fira-sans",
      -              "barlow",
      -              "mulish",
      -              "cabin",
      -              "karla",
      -              "source-sans-3",
      -              "pt-sans",
      -              "pt-serif",
      -              "libre-baskerville",
      -              "outfit",
      -              "bebas-neue",
      -              "sora",
      -              "space-grotesk",
      -              "lexend",
      -              "plus-jakarta-sans",
      -              "figtree",
      -              "ibm-plex-sans",
      -              "eb-garamond",
      -              "bitter",
      -              "crimson-text"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      -      },
      -      "headingWeight": {
      -        "anyOf": [
      -          {
      -            "maximum": 800,
      -            "minimum": 500,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Heading weight, 500 to 800. Omit for bold (700)."
      -      },
      -      "link": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Inline link color. Leave out to use primary."
      -      },
      -      "name": {
      -        "anyOf": [
      -          {
      -            "maxLength": 60,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      -      },
      -      "pageBackground": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The canvas behind the document pages."
      -      },
      -      "primary": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Main brand color, used for table headers, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      -      },
      -      "secondary": {
      -        "anyOf": [
      -          {
      -            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "body": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Paragraph text color. Must read clearly on cardBackground."
      +      },
      +      "bodyFont": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "arial",
      +              "times-new-roman",
      +              "georgia",
      +              "helvetica",
      +              "roboto",
      +              "open-sans",
      +              "montserrat",
      +              "inter",
      +              "poppins",
      +              "lato",
      +              "oswald",
      +              "raleway",
      +              "nunito",
      +              "nunito-sans",
      +              "rubik",
      +              "ubuntu",
      +              "playfair-display",
      +              "merriweather",
      +              "roboto-slab",
      +              "work-sans",
      +              "dm-sans",
      +              "lora",
      +              "jost",
      +              "manrope",
      +              "quicksand",
      +              "fira-sans",
      +              "barlow",
      +              "mulish",
      +              "cabin",
      +              "karla",
      +              "source-sans-3",
      +              "pt-sans",
      +              "pt-serif",
      +              "libre-baskerville",
      +              "outfit",
      +              "bebas-neue",
      +              "sora",
      +              "space-grotesk",
      +              "lexend",
      +              "plus-jakarta-sans",
      +              "figtree",
      +              "ibm-plex-sans",
      +              "eb-garamond",
      +              "bitter",
      +              "crimson-text"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      +      },
      +      "button": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Button color. Leave out to use primary."
      +      },
      +      "cardBackground": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The page surface itself, where all text sits. If the user names only one background color, such as off-white, send it here. For a dark document, use a near-black tinted toward the accent hue, not flat #121212 or #000000."
      +      },
      +      "designed": {
      +        "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "heading": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading text color. Must read clearly on cardBackground."
      +      },
      +      "headingFont": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "arial",
      +              "times-new-roman",
      +              "georgia",
      +              "helvetica",
      +              "roboto",
      +              "open-sans",
      +              "montserrat",
      +              "inter",
      +              "poppins",
      +              "lato",
      +              "oswald",
      +              "raleway",
      +              "nunito",
      +              "nunito-sans",
      +              "rubik",
      +              "ubuntu",
      +              "playfair-display",
      +              "merriweather",
      +              "roboto-slab",
      +              "work-sans",
      +              "dm-sans",
      +              "lora",
      +              "jost",
      +              "manrope",
      +              "quicksand",
      +              "fira-sans",
      +              "barlow",
      +              "mulish",
      +              "cabin",
      +              "karla",
      +              "source-sans-3",
      +              "pt-sans",
      +              "pt-serif",
      +              "libre-baskerville",
      +              "outfit",
      +              "bebas-neue",
      +              "sora",
      +              "space-grotesk",
      +              "lexend",
      +              "plus-jakarta-sans",
      +              "figtree",
      +              "ibm-plex-sans",
      +              "eb-garamond",
      +              "bitter",
      +              "crimson-text"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      +      },
      +      "headingWeight": {
      +        "anyOf": [
      +          {
      +            "maximum": 800,
      +            "minimum": 500,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Heading weight, 500 to 800. Omit for bold (700)."
      +      },
      +      "link": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Inline link color. Leave out to use primary."
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "maxLength": 60,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      +      },
      +      "pageBackground": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The canvas behind the document pages. Send it with cardBackground, in the same hue family and a shade deeper than the card (light or dark), never the same color and never pure black."
      +      },
      +      "primary": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Main brand color, used for table headers, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      +      },
      +      "secondary": {
      +        "anyOf": [
      +          {
      +            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. Changed2 schema fields changed
    • addedInput schema / properties / theme
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "body": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Paragraph text color. Must read clearly on cardBackground."
      +        },
      +        "bodyFont": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "arial",
      +                "times-new-roman",
      +                "georgia",
      +                "helvetica",
      +                "roboto",
      +                "open-sans",
      +                "montserrat",
      +                "inter",
      +                "poppins",
      +                "lato",
      +                "oswald",
      +                "raleway",
      +                "nunito",
      +                "nunito-sans",
      +                "rubik",
      +                "ubuntu",
      +                "playfair-display",
      +                "merriweather",
      +                "roboto-slab",
      +                "work-sans",
      +                "dm-sans",
      +                "lora",
      +                "jost",
      +                "manrope",
      +                "quicksand",
      +                "fira-sans",
      +                "barlow",
      +                "mulish",
      +                "cabin",
      +                "karla",
      +                "source-sans-3",
      +                "pt-sans",
      +                "pt-serif",
      +                "libre-baskerville",
      +                "outfit",
      +                "bebas-neue",
      +                "sora",
      +                "space-grotesk",
      +                "lexend",
      +                "plus-jakarta-sans",
      +                "figtree",
      +                "ibm-plex-sans",
      +                "eb-garamond",
      +                "bitter",
      +                "crimson-text"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Body font id, the closest available match. Prefer a readable sans-serif."
      +        },
      +        "button": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Button color. Leave out to use primary."
      +        },
      +        "cardBackground": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The page surface itself, where all text sits. If the user names only one background color, such as off-white, send it here."
      +        },
      +        "designed": {
      +          "description": "Set true when you chose these colors and fonts yourself from a look the user described in words, and they gave no hex codes or font names for them. They are then checked for readability and adjusted if needed. Leave out when the user gave exact values, which are used exactly.",
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "heading": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Heading text color. Must read clearly on cardBackground."
      +        },
      +        "headingFont": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "arial",
      +                "times-new-roman",
      +                "georgia",
      +                "helvetica",
      +                "roboto",
      +                "open-sans",
      +                "montserrat",
      +                "inter",
      +                "poppins",
      +                "lato",
      +                "oswald",
      +                "raleway",
      +                "nunito",
      +                "nunito-sans",
      +                "rubik",
      +                "ubuntu",
      +                "playfair-display",
      +                "merriweather",
      +                "roboto-slab",
      +                "work-sans",
      +                "dm-sans",
      +                "lora",
      +                "jost",
      +                "manrope",
      +                "quicksand",
      +                "fira-sans",
      +                "barlow",
      +                "mulish",
      +                "cabin",
      +                "karla",
      +                "source-sans-3",
      +                "pt-sans",
      +                "pt-serif",
      +                "libre-baskerville",
      +                "outfit",
      +                "bebas-neue",
      +                "sora",
      +                "space-grotesk",
      +                "lexend",
      +                "plus-jakarta-sans",
      +                "figtree",
      +                "ibm-plex-sans",
      +                "eb-garamond",
      +                "bitter",
      +                "crimson-text"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Heading font id, the closest available match to the look asked for. Serif ids: times-new-roman, georgia, playfair-display, merriweather, roboto-slab, lora, pt-serif, libre-baskerville, eb-garamond, bitter, crimson-text; the rest are sans-serif."
      +        },
      +        "headingWeight": {
      +          "anyOf": [
      +            {
      +              "maximum": 800,
      +              "minimum": 500,
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Heading weight, 500 to 800. Omit for bold (700)."
      +        },
      +        "link": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Inline link color. Leave out to use primary."
      +        },
      +        "name": {
      +          "anyOf": [
      +            {
      +              "maxLength": 60,
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Short theme name shown in the builder, such as \"Moss and champagne\"."
      +        },
      +        "pageBackground": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The canvas behind the document pages."
      +        },
      +        "primary": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Main brand color, used for table headers, borders, dividers, icons, and highlights. The most recognizable brand color, not a neutral."
      +        },
      +        "secondary": {
      +          "anyOf": [
      +            {
      +              "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Soft accent that fills callouts, stat boxes, and subtle blocks. Light colors work best, so a second brand color such as champagne or sand fits here. Leave out to derive it from primary."
      +        }
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only when the user asked for specific colors, fonts, or a look for this document. Exact hex codes and font names they gave go in the color and font fields as sent. If they described colors or a feel in words (\"dark blue\", \"earthy and premium\") without hex codes, design the palette yourself, set designed to true, and name it: a deep, slightly muted primary that reads clearly on cardBackground, an optional secondary, a white or faintly tinted cardBackground (dark only when they ask for dark mode, or for a deck), and fonts that carry the feel. A color word means that hue as the accent, not a dark page. Omit theme when they asked for nothing visual (\"professional\", \"clean\"). The platform derives every role you leave out. Never invent colors the user did not ask for."
      +}
    • addedOutput schema / properties / theme
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The custom theme that was applied, with any adjustments made to it.",
      +  "properties": {
      +    "label": {
      +      "type": "string"
      +    },
      +    "notes": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "label",
      +    "notes"
      +  ],
      +  "type": "object"
      +}
  6. Changed5 schema fields changed
    • changedInput schema / properties / brief / description
      Previous value: -"A short note for the designer, under 200 words: the document type, who reads it and what they will check, the purpose, tone, requested length, and constraints from the conversation (for example \"use the figures exactly\", \"no invented warranties\"). Plain text, not Markdown content."New value: +"A plain-text brief for the designer, who sees only the Markdown and this brief, never the chat. The Markdown carries the facts; the brief carries what the conversation established that changes how the document should be built: its purpose, who reads it and what they will check, the tone, the length or page count the user asked for, anything they asked to see in their own words (for example a chart or side-by-side options), and what must stay exact, separate, or out. Its length follows the document, from a few sentences for a quote to about 300 words for a long contract. Do not summarise the content."
    • changedInput schema / properties / brief / maxLength
      Previous value: -3000New value: +4000
    • addedInput schema / properties / brief / minLength
      Added value: +1
    • addedInput schema / properties / headerFooter
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "slot": {
      +            "enum": [
      +              "top-left",
      +              "top-center",
      +              "top-right",
      +              "bottom-left",
      +              "bottom-center",
      +              "bottom-right"
      +            ],
      +            "type": "string"
      +          },
      +          "text": {
      +            "description": "Short plain text; omit for page_number.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "enum": [
      +              "text",
      +              "page_number"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slot",
      +          "type"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Optional. Text or the page number repeated on every page except the cover. It helps when readers cite or trace pages, as in contracts, SOWs, RFP responses, and longer formal documents, and it clutters short, persuasive, or screen-first documents such as quotes, presentations, and webpages. Decide from the document type and length; omit it when unsure. A footer usually serves best: page_number at bottom-right plus at most one short text (about 50 characters) at bottom-left, such as a confidentiality mark or the document reference."
      +}
    • changedInput schema / required
      Previous value: -[
      -  "title",
      -  "markdown"
      -]New value: +[
      +  "title",
      +  "markdown",
      +  "brief"
      +]
  7. Changed2 schema fields changed
    • addedInput schema / properties / brief
      Added value: +{
      +  "description": "A short note for the designer, under 200 words: the document type, who reads it and what they will check, the purpose, tone, requested length, and constraints from the conversation (for example \"use the figures exactly\", \"no invented warranties\"). Plain text, not Markdown content.",
      +  "maxLength": 3000,
      +  "type": "string"
      +}
    • changedInput schema / properties / markdown / description
      Previous value: -"The proposal body as plain Markdown text only (## headings, paragraphs, - lists, | tables |). Must NOT be JSON or a structured page object."New value: +"The approved content as plain Markdown text only (## headings, paragraphs, - lists, | tables |). It carries the facts and wording; the platform decides pages and layout. Must NOT be JSON or a structured page object."
  8. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, open-world, non-destructive creation tool. The description adds valuable workflow context: the platform handles page design, layout, images, and charts, and a fallback card appears if the workspace has no website. It does not spell out permissions or side effects beyond document creation, but the annotations and output schema carry much of that burden.

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?

The description is front-loaded with the core action and then proceeds through prerequisite, fallback behavior, and optional parameters in a logical order. Despite being one paragraph, every sentence carries operational guidance and there is no filler.

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 10-parameter creation tool with 100% schema coverage, rich nested theme descriptions, annotations, and an output schema, the description supplies the missing high-level workflow context. It covers the awkward cases an agent would otherwise miss: check_website prerequisite, no-website card fallback, websiteUrl source, and theme omission behavior.

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 description coverage is 100%, so the baseline is 3, but the description still adds routing semantics beyond the schema: markdown must be plain approved content, do not send JSON/HTML/page objects, websiteUrl is for the user's own site, and theme applies only when the user asked for a specific visual direction. It does not explain every parameter, but the schema already does.

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?

The description opens with a specific verb and resource: 'Create a new proposal from plain Markdown content.' It immediately clarifies the expected content format and distinguishes the tool from content-structuring tools by rejecting JSON/HTML/page objects. It also names the prerequisite sibling tool, check_website.

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?

The description gives explicit sequencing: call check_website before drafting, after initialize_chat has been called. It covers the no-website case, when to pass websiteUrl from the user, and when to pass versus omit theme. These are concrete when/when-not instructions tied to conversation state.

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