generate_ashtray
Create a custom ashtray with optional text, photo, logo, or QR branding, then inspect the result in an interactive 3D stage and iterate on the design.
Instructions
Generate an ashtray with optional branding; adding a QR code needs Kiln Business. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
INLINE 3D STAGE: on success this tool opens Kiln's interactive 3D stage — an inline viewer panel the user can orbit, zoom, and turn over — in hosts that render MCP Apps panels (Kiln's hosted connection attaches a browser stage link for hosts that don't). Oversized meshes are decimated automatically for the stage; the PNG preview is the floor, not the whole experience.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "generate_ashtray"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Interior base content — ``"text:..."`` for debossed text, the path of a photo or logo to carve into the floor, or empty for plain. A file that is not there is refused. Default: "". | |
| size | No | Size preset — ``"small"``, ``"medium"``, ``"large"``, ``"xl"``. Any other name is refused. Default: "". | |
| shape | No | Ashtray shape — ``"round"`` (default) or ``"square"``. Default: "round". | |
| bottom | No | Bottom config — ``"plain"``, ``"pocket"``, ``"text:..."`` or ``"qr:URL"``. A pocket, QR code or lettering here under a photo or lettering on ``top`` raises the floor inside the ashtray until both fit; the outside is unchanged and the reply gives the new floor thickness. Default: "plain". | |
| brief_id | No | Optional saved-goal id from ``design_session``. When supplied, the produced mesh gets a ``design_brief:<id>`` intent sidecar so the audit's "matches what you asked for" gate, the brief failure_history wiring, and the ``compare_design_versions`` intent diff all light up against the saved goal. Omit to skip — REST callers without a goal still get an auto-inferred brief at dispatch time. Default: "". | |
| material | No | Material (default PLA — warns if not heat-safe). Default: "PLA". | |
| height_mm | No | Height in mm (default 35, min 25). Default: 35.0. | |
| body_color | No | Body color (default white for QR contrast). Default: "white". | |
| photo_mask | No | Photo crop shape for a photograph (a logo on a clean field is carved unmasked whatever is passed; a name outside this list is refused) — ``"circle"``, ``"rectangle"`` or ``"rounded_rectangle"``. Empty follows the ashtray's shape: a disc for ``"round"``, rounded corners for ``"square"``. Default: "". | |
| diameter_mm | No | Diameter in mm (default 100). Default: 100.0. | |
| include_step | No | Also emit a CAD-exact STEP file — REAL analytic B-rep from the same typed parameters, never a tessellated conversion. On success the response gains a ``step`` block with ``step_path``. Photo interiors and QR bottoms refuse honestly — the mesh outputs are always unaffected. Default: false. | |
| cigarette_rests | No | Rest grooves on the rim (default: 3 on round, 4 on square — one per corner; range 0-6 round, 0-4 square). | |
| color_overrides | No | JSON dict mapping role → color name/hex (e.g. ``'{"body": "baby blue"}``). Default: "". |