generate_assembly_manual
Generate a flat-pack-style PDF assembly manual for a multi-part 3D print, including step-by-step instructions, labeled parts, and optional multilingual sections.
Instructions
Generate a flat-pack-style assembly manual for a multi-part print (Business+).
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": {
"assembly_json": "<assembly_json>"
},
"name": "generate_assembly_manual"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| use_llm | No | When true (the default), step copy is written by Kiln's language model with the deterministic template as fallback; false forces the template generator. Default: true. | |
| branding | No | ``"prominent"``, ``"subtle"``, ``"white_label"``, or omitted / ``"auto"`` to resolve from the caller's plan. | |
| brief_id | No | Optional saved-goal id from ``design_session``. When supplied and the brief resolves, the response's ``data`` block gains a ``design_goal`` block with the design's duty / environment / safety notes / operating story so the agent presenting the manual can say "This manual is for a [duty] design intended for [environment]" without re-reading the brief separately. Future enhancement: a "Designed for" line on the cover page. Default: "". | |
| design_id | No | Design to record this manual under. The generated PDF always lands in its durable home — ``~/.kiln/manuals`` — and when a design identity exists (this parameter, or the assembly's own), the generation lands as a revision in the design's manual history (``list_manual_history`` / ``diff_assembly_manuals`` read it back; the response carries ``manual_id``). Omitted on an untracked assembly, the manual still generates — the response says how to track it. To keep a manual in the cloud, sign the release (``sign_design_release``) and push it (``cloud_push_release``) — the release embeds the manual's fingerprint, so ``verify_manual_authenticity`` can prove any copy against it from anywhere. Default: "". | |
| languages | No | Ordered list of language codes (e.g. ``["en", "de"]``); each gets its own section in one PDF. Omitted, English only. Supported: en, de, fr, es, it, zh, ja; an unsupported code falls back to English. | |
| output_dir | No | Directory to write the PDF + per-page PNGs into. Created if missing. Defaults to ``./assembly_manual``. Default: "./assembly_manual". | |
| printer_id | No | Optional printer id (e.g. ``"bambu_a1"``). When given and a screwed joint threads into a printed part, the parts list carries that printer's self-threading prep (hole sizes, engagement, torque ceiling, lead-in) where Kiln has a curated figure, or a labelled generic starting point; the response adds ``data.hardware_prep``. Omit it for generic hardware rows. Default: "". | |
| version_id | No | Design version the manual documents (default: the PDF fingerprint prefix, the same fallback the auto-trigger path records). Default: "". | |
| design_name | No | Cover-page title; falls back to the assembly's own ``name``. | |
| label_scheme | No | ``"alpha"`` (A, B, C, ... AA, AB), ``"numeric"`` (1, 2, 3), or omitted to pick by part count (alpha for small kits, numeric for large). | |
| assembly_json | Yes | JSON string of the assembly state, as returned by ``create_assembly`` / ``add_assembly_part`` / ``add_assembly_interface``. | |
| co_brand_name | No | A maker name shown on the cover as "Made by <name>" in place of Kiln's wordmark. Omit it to keep Kiln's mark. | |
| gate_interval | No | Insert a "you should now have this" verification gate after every N work steps (default 4). No gates inserted when total work steps <= interval. Default: 4. | |
| cover_language | No | Override the cover's language (defaults to ``languages[0]`` or English). Useful when the cover should match the customer's locale even if the body cycles through several. | |
| step_overrides | No | Optional dict mapping 1-indexed step numbers (string or int keys) to kit-maker copy overrides. Supported fields: ``action``, ``description``, ``orientation_note``, ``tools_needed``, and ``caution``. Use this when the kit includes a custom tool or a designer-known tactile cue the generic copy generator cannot know. | |
| strict_certainty | No | When True (default), refuse to generate unless every step's joint metadata is complete — a shipped manual should never guess. Pass ``False`` for a DERIVED assembly (the ``derive_assembly_plan`` output): inferred steps render with honest DOUBLE-CHECK badges instead of refusing. This is the documented kit chain — derive_assembly_plan → generate_assembly_manual( strict_certainty=False). Default: true. | |
| work_instruction | No | Optional config that turns the consumer manual into a controlled factory work instruction. Omit it (default) and the manual is unchanged. Supply a dict to turn on: configurable part / item numbers on the BOM, per-step fastener torque with its honesty tier (a calibrated figure on a known printer+material, otherwise a "verify on a test joint" feel cue with no fabricated number), a per-step go/no-go inspection check, a build/inspect sign-off on the milestone gates, and a document- control / revision-ECO header (DRAFT-stamped when no change record is supplied). Recognised keys: ``numbering`` (``prefix``, ``pad_width``, ``separator``, ``start_number``, ``revision_style``, ``show_revision_in_part_number`` — defaults render a clean bare sequence "1","2","3"; an org sets ``{"prefix":"KLN","pad_width":5}`` to get ``KLN-00421``); ``control`` (``doc_number``, ``rev``, ``effective_date``, ``change_reference``, ``approved_by``, ``prepared_by``, ``applicability``); ``inspection`` (bool, default true); ``sign_off`` (bool, default true); ``quantity_overrides`` (``{part_id: int}``); ``prior_build_advisories`` (bool, default FALSE — opt-in: fold this design's recorded build history into the steps as inspect-with-care warnings. Off keeps the controlled document deterministic; when history exists the response carries ``data.build_history_available`` so you can ASK the user before turning it on). The response's ``data.work_instruction`` summarises what was applied. | |
| design_name_translations | No | Optional dict mapping language code to a localized product name (e.g. ``{"de": "Gelenkleuchte"}``). Each section renders the matching translation as the cover title; sections without a translation fall back to ``design_name``. Brand names that should not be translated simply pass an empty/missing dict. |