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.

Input Schema

TableJSON 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. 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

TableJSON 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. 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"
      +  ]
      +}
  2. 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."
  3. 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"
      +  }
      +]
  4. 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"
      +}
  5. 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"
      +]
  6. 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."
  7. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnly=false, destructive=false, openWorld=true; the description goes well beyond that by disclosing the no-website fallback card flow, that cardId/websitePromptResume are card-authored only, and that omitting theme falls back to the workspace theme. These are the side effects and control-flow an agent needs before invoking a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action before the procedural details, and the body is dense with actionable guidance rather than filler. It does, however, restate the Markdown-format prohibition (no JSON/HTML/page markers) that the markdown parameter description already states, which is mild redundancy in an otherwise tight block.

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?

An output schema exists, so return values need not be explained, and with 10 parameters all documented at 100% coverage the description's remaining job is workflow context, which it fully covers: prerequisites, the fallback card path, and theme derivation rules. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning: it tells the agent when to supply theme versus omit it, to pass the user's own site as websiteUrl, and to never set cardId/websitePromptResume itself. It stays thin on a few fields (currency, headerFooter, renderType) that the schema already handles well, so it is not a full 5.

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?

Opens with a specific verb and resource ("Create a new proposal from plain Markdown content") and immediately clarifies the input contract (Markdown + brief) and what the platform does with it (pages, layout, images, charts). This is distinguishable from siblings like list_documents or set_website without opening any schema.

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?

Explicit sequencing: call check_website before drafting, after initialize_chat. Explicit routing for websiteUrl (only the user's own site, not a client's) and an explicit when-to/when-not for theme ("otherwise omit it and the workspace theme is used"). Nothing material is left to inference.

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