Skip to main content
Glama

Create ebook

create_ebook

Create a fully designed Unplain ebook from a title and Markdown content. Style it in the SAME call: 'brandThemeId' applies the user's saved identity (list_brand_themes), 'preset' applies one of Unplain's built-in looks, 'theme' sets individual colours, fonts and sizes, and they layer in that order, so one call can say "the Journal preset with an oxblood accent". Every new ebook is then designed automatically over that theme, free on every plan: its layout, a designed cover, contents page, chapter openers and feature pages. Send design 'none' to keep the plain layout. Call get_design_options first for the valid fonts, presets and ranges. 'cta' is the CTA page Unplain adds at the end: its layout, headline, body, button label, link and showButton switch (false, or an empty label, hides the button), social links and the footer credit switch, the same fields as the editor's CTA settings. A shown button needs a real url: with none, one Unplain cannot link to, or the placeholder https://example.com it is left out of the PDF, and warnings say so. Send only the keys to change; the rest stay as they are. Cover artwork is separate: create the ebook, then call generate_cover_image. mode: 'final' (default) also renders a PDF and returns a job to poll with get_export_status; 'draft' only creates the project. The caller's plan limits apply exactly as they do in the Unplain web app: check get_account first, because a document longer than the plan allows is created and rendered but its PDF is withheld.

Input Schema

NameRequiredDescriptionDefault
ctaNoThe CTA page Unplain adds at the end of the ebook: its layout, headline, body, button (and whether it is shown), the address the button opens, the social links and the footer credit switch. Unplain writes this page, so it takes no part of the document and never counts toward the free plan's page limit. Send only what should change; every key left out stays as it is.
tocNoTable of contents. A guide of more than a few sections reads better with one.
modeNodraft: create the project only. final: also render and return a PDF.final
themeNoIndividual theme properties for THIS ebook only, applied on top of any preset or Brand Theme in the same call. Every field is optional; send only what you want to change.
titleYes
authorNo
designNoauto (the default): Unplain designs the new ebook automatically, free on every plan, on top of its theme (the Brand Theme, preset or theme colors and fonts): its layout, a designed cover, contents page and chapter openers, and feature pages, never pushing a free plan ebook over the free page limit. none: keep the plain layout.
presetNoApply a built-in Unplain preset as the starting look (colors, fonts, type scale, corner radius, cover layout, footer). Content is never touched. Combine with 'theme' to adjust individual properties on top. See get_design_options for what each preset looks like.
contentYes
subtitleNo
coverStyleNoCover layout. 'editorial', 'centered', 'bold' and 'top' place the title over a full-bleed image (or the page background when there is none); 'imageOnly' fills the page with the image and no text, logo or overlay. 'imageTop' and 'imageBottom' set the image as a clean band above or below the title and need an image to look right.
brandThemeIdNoApply one of the caller's saved Brand Themes, from list_brand_themes: its colors, fonts, logo and social links. Use this when the user says "my brand" or names their company. Applied BEFORE preset and theme, so those can adjust it. When omitted (and no preset is given), Unplain applies the one theme the content clearly belongs to (it links to the theme's website and is titled with its name), else the default Brand Theme, and reports it as brandThemeApplied. A workspace with no Brand Theme gets the built-in preset the content clearly calls for, if any (presetApplied).
idempotencyKeyNorepeat calls with the same key return the existing project instead of a duplicate

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / cta / properties / showButton / description
      Previous value: -"Whether the CTA page draws its button (true when never set). false hides it and keeps buttonText and url, so true brings the same button back. The button draws only when this is true and buttonText is not empty; give it a url too, or it links nowhere."New value: +"Whether the CTA page draws its button (true when never set). false hides it and keeps buttonText and url, so true brings the same button back. The button draws only when this is true and buttonText is not empty, and it is in the PDF only with a real url."
    • changedInput schema / properties / cta / properties / url / description
      Previous value: -"Where the button goes: a web address (a bare domain is read as https) or an email address (opened as mailto:). Any other scheme is refused. An empty string leaves the button with no link; to have no button, set showButton to false instead."New value: +"Where the button goes: a web address (a bare domain is read as https) or an email address (opened as mailto:). Any other scheme is refused. A new ebook has none. A shown button with no url, or the placeholder \"https://example.com\", is left out of the PDF and the call warns; to have no button, set showButton to false instead."
  2. Changed4 schema fields changed
    • changedInput schema / properties / cta / description
      Previous value: -"The CTA page Unplain adds at the end of the ebook: its layout, headline, body, button, the address the button opens, the social links and the footer credit switch. Unplain writes this page, so it takes no part of the document and never counts toward the free plan's page limit. Send only what should change; every key left out stays as it is."New value: +"The CTA page Unplain adds at the end of the ebook: its layout, headline, body, button (and whether it is shown), the address the button opens, the social links and the footer credit switch. Unplain writes this page, so it takes no part of the document and never counts toward the free plan's page limit. Send only what should change; every key left out stays as it is."
    • changedInput schema / properties / cta / properties / buttonText / description
      Previous value: -"The button's label, for example \"Book a call\". An empty string hides the button."New value: +"The button's label, for example \"Book a call\". An empty string hides the button (no default label is drawn in its place)."
    • addedInput schema / properties / cta / properties / showButton
      Added value: +{
      +  "description": "Whether the CTA page draws its button (true when never set). false hides it and keeps buttonText and url, so true brings the same button back. The button draws only when this is true and buttonText is not empty; give it a url too, or it links nowhere.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / cta / properties / url / description
      Previous value: -"Where the button goes: a web address (a bare domain is read as https) or an email address (opened as mailto:). Any other scheme is refused. An empty string leaves the button with no link."New value: +"Where the button goes: a web address (a bare domain is read as https) or an email address (opened as mailto:). Any other scheme is refused. An empty string leaves the button with no link; to have no button, set showButton to false instead."
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses important behavior beyond the annotations: final mode renders a PDF and returns a polling job, plan limits can create an ebook while withholding its PDF, and CTA button warnings occur for invalid URLs. It also clarifies the layering order of brandThemeId, preset, and theme without contradicting any annotation.

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

Conciseness4/5

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

The description is front-loaded with the core action and is appropriate for a complex 13-parameter creation tool. It is dense but mostly earns its length, though some CTA and design details could be tightened.

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?

Given the absence of an output schema, the description provides enough context to invoke the tool correctly: it covers required inputs conceptually, design layering, CTA page behavior, PDF rendering mode, plan-limit effects, and the follow-up get_export_status flow.

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

Parameters5/5

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

It adds substantial meaning beyond the schema by explaining how brandThemeId, preset, and theme layer in order and how automatic design applies on top of that. It also explains CTA page behavior, partial updates with only changed keys, and why cover artwork is not handled here.

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: creating a fully designed Unplain ebook from a title and Markdown content. It clearly distinguishes what this call does from adjacent steps by noting that cover artwork is separate and requires generate_cover_image afterward.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong contextual guidance: call get_design_options before styling, use list_brand_themes for saved identities, check get_account for plan limits, and choose draft vs final depending on whether a PDF is needed. It stops short of explicitly comparing this tool to close siblings such as create_ebook_from_url or update_ebook.

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