scenario-3d
Use when generating or handling 3D assets through the Scenario MCP server, including text-to-3D or image-to-3D meshes, GPT-6 Astra 3D or Claude Opus 5.5 3D, GLB, FBX, OBJ, STL, or VOX files, PBR-textured or game-ready models, voxel models, multi-view reconstruction, editing a mesh by prompt, retextu…
Install / Use
npx skills add scenario-labs/skills --skill scenario-3dInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Our assessment of scenario-3d
scenario-3d scores 86/100 on our quality scale, 1862nd of 2,896 Automation skills we index.
Its SKILL.md is 17 KB long, well organised into 10 sections and no code examples: a thorough specification that gives an agent plenty to work with.
With 1,048 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 8 days ago, so scenario-3d is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
scenario-3d compared with similar skills
All 4 of these similar skills score higher than scenario-3d; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| scenario-3d (this skill)by scenario-labs | 86 | 1.0k | 8d ago | SKILL.md |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.1k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 89.9k | 1d ago | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | today | MCP Server |
Frequently asked questions
- How do I install scenario-3d?
- Run
npx skills add scenario-labs/skills --skill scenario-3d. The install tabs above show the steps for each supported agent. - Which AI agents does scenario-3d work with?
- It is written for Claude Code, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is scenario-3d safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is scenario-3d still maintained?
- The repository was last updated 8 days ago, so scenario-3d is actively maintained.
Skill content
View source on GitHubname: scenario-3d description: Use when generating or handling 3D assets through the Scenario MCP server, including text-to-3D or image-to-3D meshes, GPT-6 Astra 3D or Claude Opus 5.5 3D, GLB, FBX, OBJ, STL, or VOX files, PBR-textured or game-ready models, voxel models, multi-view reconstruction, editing a mesh by prompt, retexture, remesh, UV unwrap, auto-rigging a biped or quadruped, or retargeting an animation, previewing a mesh in the 3D viewer, or downloading a model for import into Unity, Unreal, Godot, or Blender. license: MIT
Scenario 3D Asset Workflows
Overview
Generate a concept image first, then run image-to-3D: it has a larger catalog and more art direction
than text-to-3D (txt23d). Per-family contracts: scenario-meshy, scenario-rodin,
scenario-sparc3d. Walkable scenes and Gaussian splats: scenario-3d-worlds. PBR retexture of a
finished mesh or scene: scenario-patina-retexture. Inside Blender, through the Scenario for
Blender extension: scenario-blender. Connection and the core loop: the scenario skill. If a
sibling skill named here is missing from your available skills, ask the user to install it
(npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and
flag the gap.
Quick reference
| Step | Tool | Notes |
| -------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| Find 3D models | recommend with the capability and the user's own words (search for a name) | Capabilities: txt23d, img23d, 3d23d |
| Inspect inputs | model_schema_get | Always call before model_run |
| Generate | model_run | Pass reference images as asset IDs |
| Wait | jobs_wait | Any job_id returned without assets goes in job_ids; never poll job_get in a loop |
| Preview | asset_display | Interactive GLB/FBX/VOX/OBJ viewer on MCP App hosts |
| Download | asset_download | Returns a URL; save with curl -L |
Worked example: game-ready treasure chest
- Plan check. Before step 1, run
recommendfor every later step (step 2, plus any rig or retexture). An entry markedrequires_plan_upgradefails with a 403 (ModelAccessRestrictedError) only after earlier steps were paid: settle the upgrade or pick another member first. If theimg23dcall answersask_userabout existing concepts, take the concept-image branch: step 1 makes them. - Batch price. Price per asset from one real concept:
dry_runeach candidate on it (later legs per step 4), times the count. At authoring time one LLM-based member quoted 1,300 CU at its default effort, a single-image Tripo generator 45. Past the plan's credits, each job's wait grows with its cost.
-
Generate the concept: pick a text-to-image model via
recommendwith the user's own words asprompt, thenmodel_schema_getandmodel_run. Prompt a single centered subject on a plain background. Show a non-biped creature at eye level, from the side or three-quarters, every leg visible and clear of the body: top-down hides leg undersides and body height. A biped headed for a rig takes the pose in Rigging and animation. If the user has a reference,upload_assetit (plusupload_asset_completewhen multipart) and pass that asset ID instead. -
recommendwithcapability="img23d"and the user's own words asprompt. Live members include the Hunyuan 3D, Meshy, Tripo, and Trellis families, and Scenario's own LLM-based 3D generation: GPT-6 Astra 3D and Claude Opus 5.5 3D (the cheaper at authoring time; compare both withdry_run). Those two LLM-based members alone:- reconstruct one object from 1 to 8 photos or renders into an editable mesh with named parts and per-part PBR materials;
- suit props and hard-surface subjects, not characters or creatures;
- price by
buildEffort:standard,high(the default),maximum; - cap the exported triangle count with
faceBudget(the game range in step 3); - change a result by editing it (see Refining meshes).
-
model_schema_get: inspect image inputs, polycount, PBR, and topology controls. Target 10k to 50k triangles for this prop; never assume defaults meet that budget. Use only exposed controls:- Numeric field: read
minandmax, or the description when they are absent. - Enum: read
allowed_valuesand their topology and count meanings (scenario-rodincoversqualityMeshOption). A quad count is not a triangle count. - No face control, or the target is below its range: generate, then remesh down if needed
(Refining meshes). Never invent a face field;
scenario-sparc3dcovers members without one.
Check the output's triangle count against the budget. At authoring time:
- Tripo (
faceLimit) and Meshy (targetPolycount, set wherescenario-meshysays) reached both ends. At 10k, an eight-legged creature kept every leg and claw, and a chest its padlock and handles. Meshy's Smart Topology members capped lower, at 15k or 30k. - Hunyuan 3D (
faceCount, from 40k) covers only the top of the range, and Trellis (decimationTarget, from 100k) starts above it. Remesh only for a target under the member's floor.
- Numeric field: read
-
model_runwithparameters={"image": "asset_xxx", ...}anddry_run=trueto price it. Then run it for real withwait=falseand pass itsjob_idtojobs_wait(job_ids=["<job_id>"]); a dry run creates no job. Re-calljobs_waitwith the returnedpending_job_idsif it times out. A downstream step (rig, retexture) has no payload todry_rununtil its input mesh exists: quote it fromrecommend, then re-price withdry_runon the real asset before launching. Neverdry_runit with a placeholder id: file ids resolve before plan access is checked, so it returns 404 and proves nothing. -
asset_displaythe outputasset_id, thenasset_downloadandcurl -L -o chest.glb "<url>". Omitformatwhenasset_getshowsproperties.formatglb: it returns the stored original byte for byte.formatconverts toglb,fbx, orobj; passglbfor the LLM-based members, which store a Blender file. On a stored GLB,format: "glb"re-exports it: at authoring time the same textures and triangles, smaller indices, a different file. Ask forfbxfor a Unity project without a glTF importer, and keep the GLB too: at authoring time the FBX embedded only two images, so it may miss PBR maps.
Prompt-only build. Both LLM-based members support txt23d. When the user wants no concept to
approve, skip step 1. In step 2, recommend with capability="txt23d" and the user's words as
prompt. Follow steps 3 to 5 with images: []; describe the object and name required parts in
prompt. A chest's lid, body, and padlock returned as those node names.
Multi-view models take several images of one subject; read the count and fields off
model_schema_get. Side fields follow the subject: on the Tripo multi-view members at authoring
time, leftImage was the character's own left (nose toward frame left), rightImage the mirror. A
sheet labeled by the viewer's side reverses them, and a swapped pair can fuse front and back into
one shell.
Texture and lighting controls
Several image-to-3D families split texture from geometry. Read each dial in model_schema_get
before promising a look. Authoring-time examples from the Tripo members:
texture: falsereturns a bare mesh and is acost_impactfield: the cheap path when the user textures in a DCC.textureQualityalso moves the price; an empty texture version picker keeps the provider's default.delightstrips lighting baked into the reference so the mesh relights in the engine. It defaulted to on; turn it off only when painted shading is the art style. The export stays a lit material either way: for no relighting at all, the user sets an unlit shader on import.pbr, on by default, ignored the texture parameters per its description. A requested texture setting holds only withpbr: falsethere: read that description on the chosen member and say which won.- Geometry and texture take separate seeds (
seed,textureSeed): holdseedand the image, varytextureSeedfor texture variants on one shape. autoSizescales the output to real-world meters and defaulted to off: settruefor a real-scale import.dimensionsstill reads the unit-normalized mesh (longest side 1.0), since the meters sit in the GLB's node scale: not a failure.
Inspecting results
Hosts without MCP Apps get the app_url link instead of the viewer. The viewer's capture button
calls capture_3d_view, an app-only tool: it uploads the current view as an image asset and posts
its asset_id into the conversation. Reuse it as a generation reference or a similarity search
image. Never call capture_3d_view yourself: it needs PNG canvas data only the viewer has.
Refining meshes
3D-to-3D utilities retexture, remesh, UV-unwrap, and segment parts: recommend with
capability="3d23d" plus the operation in the user's own words. Most take the source asset_id in
a kind: "3d" file field, usually model (also mesh, file3d, sceneFile). A 400
Input model is required or Provide a reference image or a 3D model means the mesh went in under
another name (an image field, or a URL).
The LLM-based members of step 2 also edit an existing mesh, prop or character:
sceneFiletakes itsasset_id(any 3D model, returned in the same format),imagesstays empty,promptstates the change.buildEffortfits the change, not the object:standardfor a recolor,highormaximumto add or reshape parts.- Price follows
buildEffort, not the mesh, andrecommendpriced no edit at authoring time: adry_runon any project mesh quotes it. - A recolor kept every part name and the face count. A reshape is uncapped (
faceBudgetignored): it took a 4,817-triangle cat to 788,954, so plan a remesh before an engine. - A replaced material keeps its old name; only added parts get new ones. The edit is generated: check what the prompt did not name against the source.
- GPT-6 Astra 3D's description also claimed Mixamo-named rigs, ARKit face shapes, animation loops,
UV re-unwraps, and modular kits, so it competes in those
recommendcalls.
Splitting a finished mesh into parts is a contested lane, so it stays a recommend pick. At
authoring time several vendors offered segmentation with a granularity control, one combined it with
a PBR retexture, and image-to-parts members built parts from the picture instead. A convincing mesh
is not a game-ready one: part separation, joints, materials, and animation are each their own pass.
Polygon caps differ by topology (a quad cap sat well under the triangle cap on one member): read the
slider's max instead of promising a count. A named provider feature is a valid search target,
but an empty result or one member's enum does not prove a capability absent platform-wide.
recommend the unmet need (a hinged prop), inspect the returned schemas, and r
Truncated for display — read the full file on GitHub.
Related Skills
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.1kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
89.9k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
