3dstreet.app
3DStreet
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 8 · Act 20 · Transact 0 · Score: Not yet scored
Tool inspector
managedStreetCreate
Create a new managed street from a cross-section (array of segments, listed from one edge to the other). If the scene has geographic context (setLatLon / Google 3D Tiles), the tiles already supply the surroundings: do NOT add boundary segments, buildings or other land-use models unless the user explicitly asks for synthetic surroundings — the cross-section should normally begin and end with sidewalks. For each segment, omit surface/color/elevation/direction/generated to receive the type's preset — the same content a user gets by picking that type in the sidebar (e.g. bike-lane → green asphalt, bike-arrow stencils, cyclists; bus-lane → BUS ONLY stencil, buses; sidewalk → pedestrians). Call listSegmentPresets to see them. Only supply `generated` to override a preset. Returns entityId, width, presetsApplied, warnings and a readBack of what actually mounted.
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | no | Name of the street configuration |
length |
string | no | Length of the street in meters (default: 60) |
position |
string | no | Position as space-separated x y z values (e.g., "0 0 0") |
segments |
array | yes | Array of segment definitions for the street |
Raw JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the street configuration"
},
"length": {
"type": "string",
"description": "Length of the street in meters (default: 60)"
},
"position": {
"type": "string",
"description": "Position as space-separated x y z values (e.g., \"0 0 0\")"
},
"segments": {
"type": "array",
"description": "Array of segment definitions for the street",
"items": {
"type": "object",
"description": "Segment definition",
"properties": {
"name": {
"type": "string",
"description": "Display name of the segment"
},
"type": {
"type": "string",
"description": "Type of segment. Valid values: \"drive-lane\", \"bike-lane\", \"sidewalk\", \"parking-lane\", \"divider\", \"grass\", \"rail\", \"bus-lane\", \"boundary\". \"boundary\" is SYNTHETIC flanking land use (buildings, waterfront, fences) for scenes without geographic context — it renders outside the travelled way at the street edge and auto-tiles models edge-to-edge (`variant` + `side`, no `generated` needed). Do not add boundaries when the scene has a location: the Google 3D Tiles already show the real surroundings and synthetic buildings would overlap them."
},
"surface": {
"type": "string",
"description": "Surface material (e.g., \"asphalt\", \"concrete\", \"grass\", \"sidewalk\", \"gravel\", \"sand\", \"planting-strip\", \"none\", \"solid\"). Optional for building segments — the variant supplies a sensible default. For hatched dividers use `generated.striping` with `striping: \"hatched\"` instead of a surface."
},
"color": {
"type": "string",
"description": "Hex color code (e.g., \"#ffffff\")"
},
"elevation": {
"type": "number",
"description": "Vertical offset in meters (0 = road level, 0.15 = curb/sidewalk height). Negative values are not supported."
},
"width": {
"type": "number",
"description": "Width in meters"
},
"direction": {
"type": "string",
"description": "Traffic direction (\"none\", \"inbound\", \"outbound\")"
},
"variant": {
"type": "string",
"description": "Variant preset for `type: \"boundary\"` segments. Valid values: \"brownstone\" (urban mixed-use SM3D blocks), \"suburban\" (detached single-family houses), \"arcade\" (arched street-front buildings), \"water\" (seawall), \"grass\" (fenced grass strip), \"parking\" (fenced parking lot), \"sp-mixeduse\" (StreetPlan mixed-use), \"sp-residential\" (StreetPlan single-family/townhouse), \"sp-big-box\" (StreetPlan big-box stores), \"custom\" (preserve existing settings). Setting variant on a boundary segment auto-fits the model array; do NOT pass `generated.clones` for boundaries unless you want full control. Only meaningful when `type: \"boundary\"`, and only for scenes without geographic context (see `type`)."
},
"side": {
"type": "string",
"description": "Side of the street the segment sits on. Required for `type: \"boundary\"` (controls placement outside the travelled way edge and which direction the models face). Valid values: \"left\", \"right\". Frame of reference is the street's own cross-section, not the camera: \"left\" is the inbound side and \"right\" the outbound side (right-hand-drive convention; swap for left-hand-drive countries). segments[0] sits at the first edge; getGeoContext reports the compass bearing of each edge.",
"enum": [
"left",
"right"
]
},
"generated": {
"type": "object",
"description": "Optional generated content — omit to receive the type preset. Two different systems: `clones` places 3D models (vehicles, cyclists, trees, lamps, furniture — any listMixins id with generator \"clones\"); `stencil` paints flat road markings (arrows, sharrows, words like BUS ONLY — only ids with generator \"stencil\"). Never put a vehicle in `stencil` or a marking in `clones`.",
"properties": {
"clones": {
"type": "array",
"description": "Clones configuration for repeated 3D models",
"items": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "Clone mode (\"random\", \"fixed\", \"single\")"
},
"modelsArray": {
"type": "string",
"description": "Comma-separated 3D model ids from listMixins (generator \"clones\"), e.g. \"sedan-rig, box-truck-rig\" or \"bus\". Unknown ids are rejected."
},
"spacing": {
"type": "number",
"description": "Distance between models in meters"
},
"count": {
"type": "number",
"description": "Number of models (for random mode)"
},
"facing": {
"type": "number",
"description": "Rotation in degrees"
},
"randomFacing": {
"type": "boolean",
"description": "Random rotation"
},
"cycleOffset": {
"type": "number",
"description": "Offset in the repeating pattern (0-1)"
}
},
"required": [
"mode",
"modelsArray",
"spacing"
]
}
},
"stencil": {
"type": "array",
"description": "Stencil configuration for road markings",
"items": {
"type": "object",
"properties": {
"modelsArray": {
"type": "string",
"description": "Comma-separated painted-marking ids (generator \"stencil\"), e.g. \"bike-arrow\", \"sharrow\", \"word-bus, word-only\". Unknown ids are rejected — use listMixins."
},
"spacing": {
"type": "number",
"description": "Distance between stencils"
},
"padding": {
"type": "number",
"description": "Edge padding"
},
"cycleOffset": {
"type": "number",
"description": "Pattern offset (0-1)"
},
"direction": {
"type": "string",
"description": "Stencil orientation"
},
"stencilHeight": {
"type": "number",
"description": "Height of stencil"
}
},
"required": [
"modelsArray",
"spacing"
]
}
},
"pedestrians": {
"type": "array",
"description": "Pedestrian configuration",
"items": {
"type": "object",
"properties": {
"density": {
"type": "string",
"description": "Pedestrian density (\"normal\", \"dense\")"
}
},
"required": [
"density"
]
}
},
"striping": {
"type": "array",
"description": "Striping configuration for lane markings",
"items": {
"type": "object",
"properties": {
"striping": {
"type": "string",
"description": "Stripe pattern type"
},
"side": {
"type": "string",
"description": "Side of segment (\"left\", \"right\")"
}
},
"required": [
"striping"
]
}
}
}
}
},
"required": [
"type",
"surface",
"color",
"elevation",
"width",
"direction"
]
}
}
},
"required": [
"segments"
]
}
Similar websites
econsor.de
German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.
inkframe-eta.vercel.app
Browser-native Elah video editor for 9:16 and 16:9 exports
agentdesk-demo.vercel.app
Meridian Ops
eworker.ca
E-Worker is business infrastructure powered by AI, with focused apps and connected business work.