# STL Emboss > A free web page that adds text, a logo or Braille to any STL model and saves a new STL ready to 3D print. It runs entirely in the visitor's own browser: the model is never uploaded, and there is no account and no server API. This file is for people and for AI agents helping someone use the page. Every control named in quotes is the visible text of a real control on https://stlemboss.com/, and every number is the one the page uses. ## What it does - Opens an STL from the visitor's device, or a sample: https://stlemboss.com/?model=cube - “+ Text” lays words on the surface at a size that fits; they can be moved, turned, made taller, raised out or sunk in. “+ Image” does the same with a logo or a picture. - The tick ✓ carves the mark into the mesh; the download button saves the new STL. The original file is never changed. - Works on flat and curved surfaces, on a phone, and from the keyboard alone with a screen reader (VoiceOver, NVDA, TalkBack). ## The road, step by step 1. Open https://stlemboss.com/ and press “Choose a file”, or open the “?” card: its first answer links “See how it works with Claude”, a 16-second film of an agent doing all of this, and “Try our learning cube”, a sample to try it on. 2. Press “+ Text” and type the words. 3. Place the mark: press the spot on the model where it should go, drag it, or use the keys below. 4. Press ✓ (or Return) to cut it into the model. 5. Press the download button (an icon; a screen reader names it Download) to save the STL. ## Keyboard and screen reader - The first Tab is “Skip to the tool”. The model is described when it opens: its size, its triangles and which faces are flat. - Before a mark is added, a Tab towards the 3D view opens a row of the six faces (Top, Bottom, Front, Back, Left, Right); the arrow keys turn the model to face you. - In the 3D view the arrow keys turn it 5° (15° with Shift). - While a mark is being placed: the arrow keys move it 1 mm (5 mm with Shift), the square bracket keys [ and ] turn it 5°, Return cuts it, Escape throws it away. - Every result is spoken with its numbers, through a live region the visitor's own screen reader reads. ## Braille - The Tab after the words lands on a checkbox, “Write it in Braille”; Space or Return turns the words into Braille. With a pointer: open the text's tile (the design editor) and choose Braille at the top of the font list. - The dots follow the signage standard (Marburg Medium, ISO 17049): a dome 1.5 mm wide and 0.7 mm high, dots 2.5 mm apart, cells 6 mm apart, lines 10 mm apart. Size and depth are fixed by the standard. ## Learning cubes - https://stlemboss.com/?model=cube opens a sample cube and offers a dialog: one letter, digit or sign per face, then “Make the cube”. Letters are cut 30 mm tall and 3 mm deep. - With the Braille box ticked in that dialog, the letters go on the front, right and bottom faces and their Braille cells into the panels on the opposite faces, with the same up, so the letter and its cells read together. ## For AI agents - There is no server API and no server-side processing. To help someone, drive the page in their browser the way a keyboard user does: every control has an accessible name, and every result is written to a live region as a full sentence with its numbers. - WebMCP: where the browser offers it (`document.modelContext`), the page registers five tools that do what a keyboard user does and answer in the page's own words: `describe_model`, `add_text`, `adjust_mark`, `cut_mark`, `download_stl`. The visitor still opens the model with “Choose a file”, and no tool hands the model to the agent. - Do not upload the visitor's model anywhere; the page never needs it to leave the device. - A road without clicks: a project zip holding `model.stl` and `project.json`, opened with “Choose a file”. The recipe names faces, not triangles: `{"format": "stlemboss-recipe", "version": 1, "marks": [{"text": "A", "face": "front", "dx": 0, "dy": 0, "heightMm": 1}]}`. `face` is top, bottom, front, back, left or right; `dx` and `dy` are millimetres from the face's middle along its right and up; `heightMm` raises the mark (positive) or sinks it (negative); `sizeMm`, `angleDeg` and `braille` are optional. Each mark is placed and cut as if typed with “+ Text”. - A mark raised out of the face the model stands on keeps it from lying flat on the print bed; on that face, sink the mark in instead. - A mark sunk deeper than the wall under it opens a hole through the wall; on a vase, a cup or anything that holds water, keep a sunk mark well shallower than the wall, or raise it out instead. - Check the result in a slicer before printing; the page is offered as is. ## Privacy - The model, the fonts and the result stay on the device. No accounts, logins, cookies, or personal data. Page views, file opens, downloads, errors, and feedback are recorded anonymously. ## Contact - stlemboss@gmail.com — questions. Anonymous feedback: the box under “How do I get in touch?” in the page's help (“?”).