Generate a print-ready PDF catalog from Abyssale
printer_multipage is a distinct Abyssale design type — built as a sequence of print pages (with bleed/safe area/dpi), not the formats[] a regular banner design has. It needs its own generation call and its own way of addressing content: generate_static_banner and generate_banners_async both reject this design type outright.
Prerequisites
The Abyssale MCP server must be connected with the generate:banner scope (and read:design for the lookup step).
Steps
Confirm the design is
printer_multipage. Usesearch_designs/list_designsto find it, then check its type before proceeding — if it isn'tprinter_multipage, this is the wrong skill; useabyssale-variationsinstead.Get the page structure before writing any overrides. Call
get_design_as_importon the design. This returns every page'spayload.pages[]entry, in order, with each page'slayers[].name. Never guess page or layer names — pages have no id/name field of their own; you address the Nth page positionally aspage_1,page_2, … (1-indexed, matching array order).Build the overrides. For each page you want to change, pass an object keyed by that page's layer names (from step 2), each mapping to the override properties for that layer — same override shape as
generate_banners_asyncuses per-element.Call
generate_multipage_pdfwithdesign_idand thepagesobject from step 3. Two important behaviors:- Wrong page/layer names fail silently — an unknown key is accepted and simply does nothing, no error. If a page didn't change the way you expected, re-check the names against
get_design_as_import's output rather than assuming the API rejected something. - It waits internally for up to ~60 seconds and returns the finished PDF directly if ready in time. Pass
wait_for_result: falseup front if the catalog has many pages (likely slow) or the user said not to wait — you'll get ageneration_request_idback immediately instead.
- Wrong page/layer names fail silently — an unknown key is accepted and simply does nothing, no error. If a page didn't change the way you expected, re-check the names against
If you got back a
generation_request_id(either becausewait_for_result: falsewas set, or the 60s window ran out), poll it withcheck_generation_status— the same status tool used for async banner/video generation.Print options: pass
print.display_crop_marksif the user wants crop marks on the exported PDF, andprint.color_profileif they specify one — otherwise leaveprintunset and let Abyssale use the design's own defaults.
Notes
- Don't try to reach a
printer_multipagedesign throughgenerate_static_banner/generate_banners_async— they reject it outright, this isn't a workaround-able limitation. - Don't invent page or layer names — always source them from a fresh
get_design_as_importcall, since a silent no-op is much harder to debug than an upfront lookup.