generate_pet_bowl
Generates a tapered pet bowl sized S, M, or L for FDM printing, with optional wall text, QR or photo bottoms, and food-safe material checks. Previews the result in an inline 3D stage.
Instructions
Generate a tapered pet bowl optimized for FDM printing. 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_pet_bowl"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Bowl size — ``"S"``, ``"M"``, or ``"L"``. Default: "M". | |
| bottom | No | ``"plain"``, ``"pocket"``, ``"text:..."`` or ``"qr:URL"``. A pocket, QR code or lettering here under a photo or lettering on ``interior_bottom`` raises the floor inside the bowl until both fit; the outside is unchanged and the reply gives the new floor thickness. Default: "plain". | |
| wall_mm | No | Wall thickness in mm (default 3.0, min 2.4). Default: 3.0. | |
| 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: "". | |
| exterior | No | Text wrapped on the outside wall as ``"text:..."``, or empty for a plain wall. A photo or logo is refused here; it goes on ``interior_bottom``. Default: "". | |
| material | No | Material (default PETG — food-safe). Default: "PETG". | |
| body_color | No | Body color (default white). 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 or ``"auto"`` is ``"circle"``, since the bowl is round. Default: "". | |
| printer_id | No | Optional active-printer identifier. When supplied, the food-safety check ALSO consults the printer's recorded nozzle. A brass nozzle hard-refuses the pet bowl regardless of how food-safe the filament is — lead trace in brass alloys is the single biggest practical risk for anything that touches a mouth. Omit to skip the nozzle check (material-only gate still applies). Default: "". | |
| include_step | No | Also emit a CAD-exact STEP file — REAL analytic B-rep (true cones for the tapered wall, rim flare and cavity), never a tessellated conversion. On success the response gains a ``step`` block with ``step_path``. Wall text, image decorations and QR bottoms refuse honestly — the mesh outputs are always unaffected. Default: false. | |
| color_overrides | No | JSON dict mapping role → color name/hex. Overrides body_color for "body" role unless body_color is also set. Default: "". | |
| interior_bottom | No | Interior base — ``"plain"``, ``"text:..."`` or a photo or logo file path. A file that is not there is refused. Default: "plain". |