Stori3D
NPM · STORI3D-MCP
See and edit the building project open in Stori3D: walls, rooms, openings, finishes, skies.
Available components
Last scanned (5 hours ago)
Scores higher than 38% of npm servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.Unverified
- Actively maintained (last published 19 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 10254 tokens (~131/item across 78 items; 77 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
- Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage77
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 32% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 79 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/stori3d-mcp@0.9.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 93 packages
| Packages resolved | 93 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_drawing_note Annotate a drawing ~228
A note, leader, element tag or dimension on a drawing: drawing plan (a level's plan: level) or south|north|east|west|section-ew|section-ns. Positions are plan points in mm with height above the level floor (mm, default 0): at (where text goes), tip (what a leader or tag points at; element: the tagged element's id), points (2 or more, for a dimension string measured along the line through the first two; offset: how far to its side, mm, default 600). size: text height on paper, mm (2.5, 3.5 default, 5, 7). They show on the sheets and exports.
| Name | Type | Req | Description |
|---|---|---|---|
| at | object | – | – |
| drawing | string | yes | – |
| element | string | – | – |
| kind | string | yes | – |
| level | string | – | – |
| offset | number | – | – |
| points | array | – | – |
| size | number | – | – |
| text | string | – | – |
| tip | object | – | – |
No output schema declared.
No examples provided.
apply_palette Apply a style palette ~173
Recolour every built-in piece by role in one step with a style palette (list_palettes): upholstery, timber, stone, metal, lamp shades and so on each take the palette's finish; screens, bulbs, plants, books, people and cars keep theirs, as do asset-library models. walls and floors also paint every room's walls and floor slab. The project keeps the palette, so pieces placed afterwards come in it. One undo step. Repaint single surfaces afterwards with paint_surface.
| Name | Type | Req | Description |
|---|---|---|---|
| floors | boolean | – | Also paint every room's floor (default false) |
| palette | string | yes | Palette id, e.g. "warm_modern", "scandi", "japandi", "industrial", "coastal" |
| walls | boolean | – | Also paint every room's walls (default false) |
No output schema declared.
No examples provided.
batch Batch of changes ~153
Several changes as ONE undo step, all or nothing: if any operation fails, none are applied and the error says which. Each operation is { tool, args } using update_element, create_walls, create_room, place_opening, place_furniture, place_column, place_beam, place_ramp, place_lift, place_parking, create_grid, paint_surface, apply_palette, set_sky, save_view, create_level, copy_level, set_properties, define_property or remove_property. Use it for multi-step edits the user would think of as one change.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | – | Short name for the undo step, e.g. "Furnish bedroom" |
| operations | array | yes | – |
No output schema declared.
No examples provided.
capture_view Look at the model ~281
A picture, so you can check your work. mode: "overview" (the whole building from the south-east, above; site context hidden), "plan" (the 2D plan drawing of a level, north up, with dimensions), "drawing" (an elevation or section, see get_drawing_svg), "element" (one element framed), "view" (a saved view), "current" (exactly what the user sees). Look after significant changes.
| Name | Type | Req | Description |
|---|---|---|---|
| context | boolean | – | Include site context (terrain, neighbouring buildings) |
| drawing | string | – | For mode "drawing" (default south) |
| element | string | – | Element id for mode "element" |
| height | integer | – | Pixels, default 768 (plans keep their proportions) |
| level | string | – | Level id or name for mode "plan" |
| mode | string | – | Default current |
| offset | number | – | For a section drawing: where to cut, mm |
| underlays | boolean | – | Show underlays (plans or drawings the user traced over; hidden by default). Use with mode "current" or "overview" from above to read a plan you are asked to model |
| view | string | – | Saved view id or name, for mode "view" |
| width | integer | – | Pixels, default 1024 |
No output schema declared.
No examples provided.
connect Connect to Stori3D ~60
Pair with the Stori3D tab showing this 6-digit code (Stori3D → AI agent → Connect). Needed once per session before the other tools work.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The 6-digit code shown in Stori3D |
No output schema declared.
No examples provided.
copy_level Copy level above ~52
Copy a level (walls, doors, windows, slabs, furniture, room tags) to a new level on top of the building — the quick way to start the next storey.
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | yes | – |
No output schema declared.
No examples provided.
create_grid Add structural grid ~260
A structural (setting-out) grid for the whole building: numbered lines 1, 2, 3… running north–south at xSpacings (mm, between consecutive lines, eastwards from origin) and lettered lines A, B, C… (no I or O) running east–west at ySpacings (northwards). origin = where lines 1 and A cross (plan mm). Every floor plan shows it with bubbles; it isn't on a level. Typical car park spans: 8400 (three 2400 bays between columns) or 7800–8100. numbers/letters override the labels. Place columns on its crossings.
| Name | Type | Req | Description |
|---|---|---|---|
| extension | number | – | mm the lines run past the outer lines, default 1500 |
| letters | array | – | – |
| name | string | – | – |
| numbers | array | – | – |
| origin | object | yes | Plan point in mm (x east, y north), relative to its level |
| rotation | number | – | – |
| xSpacings | array | yes | mm between consecutive numbered lines; [] for just line 1 |
| ySpacings | array | yes | mm between consecutive lettered lines; [] for just line A |
No output schema declared.
No examples provided.
create_level Add level ~50
An empty level on top of the building (or below it). height = floor to floor, mm.
| Name | Type | Req | Description |
|---|---|---|---|
| below | boolean | – | – |
| height | number | – | – |
| name | string | – | – |
No output schema declared.
No examples provided.
create_roof Create roof ~206
A roof over a room (its id or name) or an outline (wall centre lines, mm). roofType gable (default), hip, shed or flat; pitch in degrees (default 30); overhang past the wall centre lines (default 400 mm); thickness (default 180 mm). It sits on the tallest wall of the level unless eave (mm above the level floor) says where; walls under it are cut to its slope, and attachTop on a wall (update_element) runs it up to the roof. L, T and U shaped rooms get joined roofs with valleys.
| Name | Type | Req | Description |
|---|---|---|---|
| eave | number | – | – |
| level | string | – | – |
| name | string | – | – |
| outline | array | – | – |
| overhang | number | – | – |
| pitch | number | – | – |
| roofType | string | – | – |
| room | string | – | Room id or name (or give outline) |
| thickness | number | – | – |
No output schema declared.
No examples provided.
create_room Create room ~147
A room in one step: walls around the outline (wall centre lines; edges that an existing wall already covers are skipped, so rooms can share walls), a floor slab, and a room tag holding its name and custom properties. Returns the room (area = usable floor inside the walls, m²).
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | – | Wall height mm (default 2700) |
| level | string | – | – |
| name | string | – | – |
| outline | array | yes | Wall centre lines in order; closed for you |
| properties | object | – | – |
| slab | boolean | – | Floor slab (default true) |
| thickness | number | – | Wall thickness mm (default 200) |
No output schema declared.
No examples provided.
create_sheet Create a sheet ~118
A drawing sheet with the title block, numbered after the last (A-101, A-102…) unless number is given. Then place_drawing puts plans, elevations, sections, saved views, schedules and notes on it, and export_file format pdf prints them all.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | e.g. "Ground floor plan" |
| number | string | – | – |
| orientation | string | – | – |
| paper | string | – | Default A3 |
| status | string | – | e.g. Preliminary, For planning, For construction |
No output schema declared.
No examples provided.
create_slab Create floor slab ~84
A floor slab over any outline (plan points, mm; closed for you), on a level: for a terrace, a landing or a floor that isn't a room. Rooms get theirs from create_room. Default thickness 200 mm.
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | – | – |
| name | string | – | – |
| outline | array | yes | – |
| thickness | number | – | – |
No output schema declared.
No examples provided.
create_stair Create stair ~248
A stair from a level up to the next: position = the foot of its first riser, at the middle of its width (plan mm); rotation = the way it climbs, degrees counter-clockwise from east (0 east, 90 north). shape straight, L (quarter turn) or U (half turn), turning left or right; winders: true turns on tapered treads instead of a landing. The riser count follows from the rise (default the level's floor-to-floor height) and maxRiser (default 180). It opens a stairwell in the slab above it. Check the footprint with capture_view mode "plan". Defaults: width 1000, going 280 mm.
| Name | Type | Req | Description |
|---|---|---|---|
| going | number | – | – |
| level | string | – | – |
| maxRiser | number | – | – |
| name | string | – | – |
| position | object | yes | Plan point in mm (x east, y north), relative to its level |
| rise | number | – | – |
| rotation | number | – | – |
| shape | string | – | – |
| turn | string | – | – |
| width | number | – | – |
| winders | boolean | – | – |
No output schema declared.
No examples provided.
create_tour Create walkthrough tour ~285
A walkthrough tour, the way architects draw it: a `path` of points on the plan (mm, x east, y north) that the camera travels through along a smooth curve, at each point's camera `height` above its level's floor and `speed` (m/s) to the next point, pausing where `pause` is set. The camera looks along the path, or turns to a point's `lookAt` near it. Keep paths inside rooms and through door openings (not through walls): a point a metre outside the front door, one just inside, then the middle of each main room; pause 1–2 s where there is something to see. For an opening shot, start with an aerial point (height 15000+, speed 4–8). Alternatively `stops`: saved views or eye/target cameras with travel/hold seconds. `walk`: let visitors walk around from a spot on a floor. Check with list_tours and capture_view.
| Name | Type | Req | Description |
|---|---|---|---|
| fov | number | – | Field of view for path tours, degrees (default 60) |
| loop | boolean | – | – |
| name | string | – | – |
| path | array | – | The camera path (preferred) |
| stops | array | – | Instead of a path: camera stops |
| walk | object | – | Let visitors walk around from here |
No output schema declared.
No examples provided.
create_walls Draw walls ~213
Walls along a polyline of plan points (wall centre lines, mm). closed joins the last point back to the first. Corners join automatically. Default height 2700, thickness 200 (mm). bulges curves segments: bulges[i] is how far segment i (point i to the next) bows out at its middle, mm, + to the left going along the polyline, − to the right, 0 straight; at most half the segment's length (a half circle). type: a wall type (its layers set the thickness; the types are in the guide).
| Name | Type | Req | Description |
|---|---|---|---|
| bulges | array | – | Per segment, mm; missing or 0 = straight |
| closed | boolean | – | – |
| height | number | – | – |
| level | string | – | Level id or name (default: the active level) |
| points | array | yes | – |
| thickness | number | – | – |
| type | string | – | Wall type name, e.g. "Brick cavity 300" |
No output schema declared.
No examples provided.
define_property Define custom property ~90
Add or replace a project property definition: name, type (text, number, boolean, choice), optional unit, choices (for choice), kinds (which element kinds get it; omit for all).
| Name | Type | Req | Description |
|---|---|---|---|
| choices | array | – | – |
| description | string | – | – |
| kinds | array | – | – |
| name | string | yes | – |
| type | string | yes | – |
| unit | string | – | – |
No output schema declared.
No examples provided.
delete_tour Delete walkthrough tour ~30
Delete a tour (id or name). Its share link stops working.
| Name | Type | Req | Description |
|---|---|---|---|
| tour | string | yes | – |
No output schema declared.
No examples provided.
export_file Export a file ~234
Save the project, or a drawing of it, as a file on the user's computer (Downloads unless path says where): ifc (IFC 4, for Revit, Archicad, consultants), glb, gltf, usdz (Apple AR), stl (3D printing), obj (the selection), dxf or svg (a level's plan, or drawing south|north|east|west|section-ew|section-ns; at scale, default 1:100), pdf (every sheet, one a page), xlsx (every schedule, a sheet each) or stori3d (the project file). Returns where it was saved.
| Name | Type | Req | Description |
|---|---|---|---|
| drawing | string | – | dxf/svg: plan (default) or an elevation or section |
| format | string | yes | – |
| level | string | – | dxf/svg plans: level id or name (default the active level) |
| path | string | – | Where to save: a folder or a file path (~ allowed). Default: Downloads |
| scale | number | – | dxf/svg: 100 = 1:100 |
No output schema declared.
No examples provided.
export_image Export an image ~128
A presentation image (PNG) as the viewport draws it, at full size, saved on the user's computer: from the current camera, the overview or a saved view. transparent: the building alone on transparency (for brochures). For photo-real images use render_image. Returns where it was saved.
| Name | Type | Req | Description |
|---|---|---|---|
| height | integer | – | Pixels, default 2000 |
| path | string | – | – |
| transparent | boolean | – | – |
| view | string | – | current (default), overview, or a saved view's id or name |
| width | integer | – | Pixels, default 3000 |
No output schema declared.
No examples provided.
export_video Export a tour video ~107
A walkthrough tour as an MP4 video (H.264), saved on the user's computer: about as long to make as the tour lasts. 1920 × 1080 at 30 fps by default; 1080 × 1920 for phones and Reels. Returns where it was saved.
| Name | Type | Req | Description |
|---|---|---|---|
| fps | – | – | – |
| height | integer | – | – |
| path | string | – | – |
| tour | string | yes | Tour id or name |
| width | integer | – | – |
No output schema declared.
No examples provided.
get_drawing_svg Get elevation or section (SVG) ~222
An elevation (south/north/east/west: the façade seen from that side), a section (section-ew: an east–west cut looking north; section-ns: a north–south cut looking east), or a section line the user placed on the plan (section: its letter) of the whole building as SVG text: hidden-line drawing, cut walls/slabs/roofs solid, level lines with elevations. Drawing units are metres, y down. For a picture, use capture_view with mode "drawing".
| Name | Type | Req | Description |
|---|---|---|---|
| flip | boolean | – | Sections: look the other way (south / west) |
| offset | number | – | Sections: where to cut, mm (north for section-ew, east for section-ns). Default: through the middle |
| scale | number | – | Drawing scale denominator, default 100 |
| section | string | – | A section line placed on the plan, by its letter (e.g. "A"); plans show them as section marks |
| view | string | – | Default south; ignored with section |
No output schema declared.
No examples provided.
get_element Get element ~27
One element by id, in full (outlines included).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
get_plan_svg Get plan (SVG) ~126
The architectural 2D plan of a level as SVG text (walls cut at 1.2 m, doors and swings, dimensions in mm with chains through doors and windows, room names and areas, a north arrow). For a picture you can look at, use capture_view with mode "plan".
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | – | Level id or name (default: the active level) |
| scale | number | – | Drawing scale denominator, default 100 (1:100); US scales too, e.g. 48 for 1/4" = 1'-0" |
No output schema declared.
No examples provided.
get_schedule Get schedule ~129
A schedule table: standard columns for the kind plus a column per custom property. openings = doors and windows (type, width, height, sill, wall); rooms (area, gross area, perimeter, enclosed); walls (length, height, thickness, face area, openings); slabs; stairs (risers, riser height, going); columns; beams; ramps (rise, gradient, transitions, headroom); lifts; parking (bays, accessible bays, bay numbers per row); furniture.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Default json ({ columns, rows }) |
| kind | string | yes | – |
No output schema declared.
No examples provided.
get_selection Get selection ~35
What the user has selected in Stori3D right now — use it when they say "this wall" or "these doors".
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
go_to_view Go to a saved view ~32
Move the user's camera to a saved view (id or name from list_views).
| Name | Type | Req | Description |
|---|---|---|---|
| view | string | yes | – |
No output schema declared.
No examples provided.
import_file Import a file ~242
Bring a file from the user's computer into the project. Models: IFC (from Revit, Archicad; each storey becomes a model on its level), SketchUp as COLLADA .dae or a 3D Warehouse .zip (components kept), glTF/GLB, OBJ, FBX, STL; units are guessed unless given. Underlays to trace over: an image, a PDF page (scale: the drawing's scale, e.g. 100 for 1:100; or width in mm) or a DXF (units; its own if it says). Without a known scale the user is asked to calibrate it. Up to 22 MB.
| Name | Type | Req | Description |
|---|---|---|---|
| as | string | – | Default auto: images, PDFs and DXF are underlays |
| page | integer | – | PDF page (default 1) |
| path | string | yes | The file on the user's computer (~ allowed) |
| scale | number | – | Underlay drawn at 1:scale (PDFs) |
| units | string | – | A model's or DXF's drawing units |
| width | number | – | Underlay's real width, mm |
No output schema declared.
No examples provided.
list_catalogue List catalogue ~152
What can be placed: furniture types for place_furniture (with default sizes in mm, category and style), including about 180 realistic models from the asset library ("ph:…": furniture, Lighting, Decor, Office, plants and trees; ceiling and wall lamps and pictures are hung automatically), the user's My library pieces ("custom:…"), and door and window types for place_opening. The built-in pieces (no prefix) are one modern set: prefer them, and library models of style "modern" or "any", unless the user wants a period look (classic, vintage, industrial, oriental). Filter by category in your own reasoning: the list is long.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
No output schema declared.
No examples provided.
list_comments Read client comments ~97
The comments clients left on the project's review link: each thread's number (as on its pin), open or resolved, where it's pinned (plan point mm and height, level and element ids: get_element or capture_view mode "element" to see it) and its messages (who, what, when). For "summarise the client's comments" or "which ones are about the kitchen".
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | Default open |
No output schema declared.
No examples provided.
list_elements List elements ~326
Elements of the model as plain data, filtered and paged. Kinds: level, wall (start/end points, length along the centre line, bulge and radius for curved walls, height, thickness, face area m², opening ids), slab, roof, stair, door, window (width, height, sill, host wall id, size limits), furniture (type, position, rotation, size, limits), room (area m², enclosed, tag), column, beam (start/end, width, depth, top), ramp (start = foot, end = top, rise, gradient), lift (position, shaft size, height, stops), parking (aisle start/end, count, accessible, bay size, angle), grid (origin, rotation, spacings, labels; not on a level), model (an imported IFC storey, SketchUp/glTF/OBJ model, or a group: source, file, position, rotation, bounds, part count, IFC classes; its parts with list_model_parts). Outlines are summarised unless detail is "full". Every element has id, kind, name, level (the level's id) and properties (custom data).
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | full includes outlines |
| kind | – | – | Only these kinds |
| level | string | – | Level id or name |
| limit | integer | – | Default 100 |
| offset | integer | – | – |
| property | object | – | Only elements with this custom property (set to this value) |
| selected | boolean | – | Only what the user has selected |
No output schema declared.
No examples provided.
list_finishes List finishes ~203
Finishes for paint_surface: id, name, group (Paint & plaster, Brick & block, Concrete & stone, Timber, Tiles, Flooring, Roofing, Metal & glass, Fabric, Landscape), tile (mm per pattern repeat) and source (built-in; ambientCG: photographed PBR materials, "acg:…"; or Poly Haven: photographed textures, "pht:…", e.g. oak and walnut veneers, linen, bouclé, wool, leather, render and microcement in several colours). Filter with group and/or search words (e.g. "oak", "terrazzo", "white paint"). With element instead: that element's surfaces and the finish on each (a room gives walls, floor and ceiling).
| Name | Type | Req | Description |
|---|---|---|---|
| element | string | – | An element or room id: list its surfaces and their finishes instead |
| group | string | – | – |
| search | string | – | Words to match in id, name or group |
No output schema declared.
No examples provided.
list_model_parts List a model's parts ~127
The parts of an imported model (list_elements kind model): each part's id, name and, for IFC, its class (IFCWALL, IFCDOOR…), GlobalId and property sets (e.g. Pset_WallCommon FireRating). Filter by IFC class; paged. Part ids work with select and capture_view mode "element".
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The model's id |
| ifcClass | string | – | e.g. IFCWALL, IFCWINDOW |
| limit | integer | – | Default 100 |
| offset | integer | – | – |
No output schema declared.
No examples provided.
list_palettes List style palettes ~92
Style palettes for apply_palette: matched sets of finishes (walls, floor, light and dark timber, fabric, bouclé, textiles, lamp shades, an accent, leather, stone, worktop, metal, brass, tapware, joinery, rug, pots) such as Warm modern, Scandi, Japandi, Industrial and Coastal, with the finish id in each slot and which one the project uses.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_properties List custom properties ~35
The project's custom property definitions (name, type text/number/boolean/choice, unit, choices, which kinds they apply to).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_sheets List sheets ~98
The drawing sheets (number, name, paper, orientation, status, revision and revisions, and each drawing on them: id, kind plan|elevation|view|schedule|note, level or view, scale, position in mm from the top left), the title block (project, practice, project number, drawn by, layout, extra fields), the notes and dimensions on drawings, and the choices: paper sizes, statuses, schedules.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_skies List skies ~59
Skies for set_sky (HDRI environments: clear, cloudy, sunset, overcast, city, countryside, night, studio) with id, name and group, plus the project's current sky and its settings (null: the default lighting).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_tours List walkthrough tours ~74
The project's walkthrough tours: camera paths played like a video (stops with plan positions in mm and heights above the ground in mm, travel and pause seconds, loop, where visitors may walk from, and the player-only `link` and scroll `story` link if shared), plus the project details shown with shared tours.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_underlays List underlays ~78
The underlays: plans and drawings (images, PDF pages, DXF linework) the user brought in to trace over, with their file, level, extent in plan (mm) and whether they show. To read one, capture_view with underlays: true (mode "current" after set_camera from above, or "overview").
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_views List saved views ~35
The project's saved camera views (id and name). Go to one with go_to_view or picture it with capture_view mode "view".
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
paint_surface Paint surfaces ~255
Put a finish (list_finishes) on surfaces of one or more elements, as one undo step. surface by kind: room — walls (every wall face inside the room), floor (its floor slab), ceiling (the underside of the slab above); wall — left, right (seen walking from its start to its end) or both; slab — top or underside; roof — roofing or gables; stair — flights or rails; column, furniture, door, window — all, or a part name (list_finishes with element lists them). Default: a room's walls, a wall's both sides, a slab's top, otherwise all. A wall face is one surface along its whole length: painting one room's walls also colours that face where the wall continues past the room. Asset library models ("ph:…") keep their own materials. scale multiplies the tile size (2 = pattern twice as big); rotation turns the pattern (90 for boards or tiles running the other way).
| Name | Type | Req | Description |
|---|---|---|---|
| finish | string | yes | Finish id from list_finishes |
| ids | – | yes | Element or room id(s) |
| rotation | number | – | Degrees |
| scale | number | – | – |
| surface | string | – | – |
No output schema declared.
No examples provided.
place_beam Place beam ~202
A horizontal beam along its centre line from start to end (plan mm), default 400 wide × 600 deep with its top just under the floor above (the level's floor-to-floor height − 200). top = height of its top above the level floor, mm. For a transfer beam carrying apartment walls over a car park, make it deeper (e.g. 600 × 1200) and run it along the walls above. Beams above the plan cut are drawn dashed in plans; cut solid in sections.
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | boolean | – | – |
| depth | number | – | – |
| end | object | yes | Plan point in mm (x east, y north), relative to its level |
| level | string | – | – |
| name | string | – | – |
| start | object | yes | Plan point in mm (x east, y north), relative to its level |
| top | number | – | – |
| width | number | – | – |
No output schema declared.
No examples provided.
place_column Place column ~148
A structural column standing on its level: position = centre of its foot (plan mm), shape rect (width × depth) or round (width = diameter), default 300 × 300 mm and the level's floor-to-floor height. rotation in degrees counter-clockwise. Cut solid in plans and sections.
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | boolean | – | – |
| depth | number | – | – |
| height | number | – | – |
| level | string | – | – |
| name | string | – | – |
| position | object | yes | Plan point in mm (x east, y north), relative to its level |
| rotation | number | – | – |
| shape | string | – | – |
| width | number | – | – |
No output schema declared.
No examples provided.
place_drawing Place a drawing on a sheet ~204
Put a drawing on a sheet (id, number or name) where there's clear room, at the largest usual scale that fits unless scale is given: kind plan (level), elevation or section (view south|north|east|west|section-ew|section-ns), view (a saved view's picture), schedule (view = openings|rooms|walls|slabs|stairs|columns|beams|ramps|lifts|parking|furniture) or note (text). x, y: its centre, mm from the sheet's top left.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| level | string | – | – |
| scale | number | – | 100 = 1:100 |
| sheet | string | yes | – |
| text | string | – | For a note |
| title | string | – | Its caption (default: what it shows) |
| view | string | – | – |
| x | number | – | – |
| y | number | – | – |
No output schema declared.
No examples provided.
place_furniture Place furniture ~181
A piece of furniture: type from list_catalogue, position (plan mm, its centre) and rotation in degrees counter-clockwise: 0 faces south (back to the north), 90 faces east, 180 north, 270 west. Against a wall, face away from it. Sizes in mm within its limits (fixed dimensions can't change) unless clamp is true. Leave clearances: ~900 mm walkways, 600 mm in front of storage.
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | boolean | – | – |
| depth | number | – | – |
| height | number | – | – |
| level | string | – | – |
| name | string | – | – |
| position | object | yes | Plan point in mm (x east, y north), relative to its level |
| rotation | number | – | – |
| type | string | yes | – |
| width | number | – | – |
No output schema declared.
No examples provided.
place_lift Place lift ~190
A lift shaft centred on position (plan mm), default 2000 × 2200 clear inside, 200 walls, rising from its level through every level above plus a 3600 overrun, with 900 × 2100 landing doors at each floor it reaches (they follow the levels). The floors it passes through are opened inside the shaft. rotation in degrees: at 0 the doors face south (−y).
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | boolean | – | – |
| depth | number | – | – |
| doorHeight | number | – | – |
| doorWidth | number | – | – |
| height | number | – | – |
| level | string | – | – |
| name | string | – | – |
| position | object | yes | Plan point in mm (x east, y north), relative to its level |
| rotation | number | – | – |
| wall | number | – | – |
| width | number | – | – |
No output schema declared.
No examples provided.
place_opening Place door or window ~195
A door or window in a wall. offset = mm from the wall's start point to the opening's centre (get the wall's start/end/length from list_elements). Windows take a sill height (mm above the floor); doors stand on the floor. flip turns it to face the other side (door swing); hand puts the hinges on the right. Fails with the allowed range if it doesn't fit or overlaps another opening, unless clamp is true. Types: list_catalogue.
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | boolean | – | – |
| flip | boolean | – | – |
| hand | string | – | Hinges on the left (default) or right, seen from the side it opens to |
| height | number | – | – |
| name | string | – | – |
| offset | number | yes | – |
| sill | number | – | – |
| type | string | yes | – |
| wall | string | yes | – |
| width | number | – | – |
No output schema declared.
No examples provided.
place_parking Lay out parking bays ~300
A row of marked car bays along an aisle line from start to end (plan mm); the bays lie to the LEFT of start → end seen from above (so start (0,0) → end (24000,0) puts them north of y = 0). As many bays as fit unless count is given. Defaults: 2400 × 5400 bays at 90° (AS/NZS 2890.1 class 1A). angle 30–90° for angled parking. accessible = how many bays at the start of the row are accessible ones, each with a 2400 hatched shared area beside it (AS/NZS 2890.6). startNumber numbers the bays. Allow a 5800 aisle (90°) between facing rows. Plans draw the lines and bay numbers; get_schedule kind parking and project_summary give the bay count.
| Name | Type | Req | Description |
|---|---|---|---|
| accessible | integer | – | – |
| angle | number | – | – |
| bayLength | number | – | – |
| bayWidth | number | – | – |
| clamp | boolean | – | – |
| count | integer | – | – |
| end | object | yes | Plan point in mm (x east, y north), relative to its level |
| level | string | – | – |
| name | string | – | – |
| start | object | yes | Plan point in mm (x east, y north), relative to its level |
| startNumber | integer | – | – |
No output schema declared.
No examples provided.
place_ramp Place ramp ~295
A straight ramp rising from start (its foot, on the level floor) to end, by default rising the level's floor-to-floor height so it arrives at the floor above, which is then opened over it where headroom (default 2200 mm) would be lost. Default width 3600 (one-way car ramp; two-way ≈ 6100), slab 200 thick, with a 2000 mm half-gradient transition at each end (AS/NZS 2890.1 needs them over 1:8; pass transition 0 for none). The returned gradient is the main slope; residential car ramps up to 1:4 if 20 m or shorter, 1:5 if longer (public 1:5 / 1:6); ramps for people 1:14. To go down to a basement, place it on the lower level, foot at the bottom.
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | boolean | – | – |
| end | object | yes | Plan point in mm (x east, y north), relative to its level |
| headroom | number | – | – |
| level | string | – | – |
| name | string | – | – |
| rise | number | – | – |
| start | object | yes | Plan point in mm (x east, y north), relative to its level |
| thickness | number | – | – |
| transition | number | – | – |
| width | number | – | – |
No output schema declared.
No examples provided.
project_summary Project summary ~81
Start here. The open project at a glance: levels (id, name, elevation and floor-to-floor height in mm, room count and usable room area in m²), element counts, custom property definitions, site location and sun, the active level and the selection. Units: lengths mm, areas m², angles degrees; plan x east, y north.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
remove_drawing_note Remove an annotation ~40
Remove a note, leader, tag or dimension from a drawing (its id from list_sheets). Undoable.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
How do I install the Stori3D MCP server?
Stori3D runs locally as an npm package, launched with npx -y stori3d-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · stori3d-mcp
claude mcp add richy7734-stori3d-mcp -- npx -y stori3d-mcp
What is the Stori3D MCP server?
Stori3D is an MCP server listed in the public MCP registry as io.github.richy7734/stori3d-mcp. See and edit the building project open in Stori3D: walls, rooms, openings, finishes, skies. This page covers its npm package (stori3d-mcp).
Is the Stori3D MCP server safe to use?
Stori3D scores 70 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Stori3D MCP server expose?
Stori3D exposes 77 tools: connect, status, project_summary, list_elements, get_element, and 72 more. Their descriptions and schemas cost roughly 10,099 tokens of context every time the server is loaded.
Is the Stori3D MCP server still maintained?
Stori3D is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.