SpatialPack — 3D asset readiness
NPM · @SPATIALPACK/MCP · SCANNED SEP 20
Test whether 3D assets survive Apple Quick Look and Safari <model>, then fix what fails
Available components
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 Security90
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects sharp 0.34.5, reached via @spatialpack/core > sharp. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 42 of 185 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- 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
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 54 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability80
- 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 4816 tokens (~137/item across 35 items; 29 tools + 6 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 Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage84
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 52% 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
- We read all 29 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 31 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
How do I install the SpatialPack — 3D asset readiness MCP server?
SpatialPack — 3D asset readiness runs locally as an npm package, launched with npx -y @spatialpack/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 · @spatialpack/mcp
claude mcp add dev-spatialpack-mcp -- npx -y @spatialpack/mcp
{
"mcpServers": {
"dev-spatialpack-mcp": {
"command": "npx",
"args": [
"-y",
"@spatialpack/mcp"
]
}
}
} {
"servers": {
"dev-spatialpack-mcp": {
"command": "npx",
"args": [
"-y",
"@spatialpack/mcp"
]
}
}
} codex mcp add dev-spatialpack-mcp -- npx -y @spatialpack/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-spatialpack-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@spatialpack/mcp"
],
"enabled": true
}
}
} openclaw mcp add dev-spatialpack-mcp --command npx --arg -y --arg @spatialpack/mcp
mcp_servers:
dev-spatialpack-mcp:
command: "npx"
args: ["-y", "@spatialpack/mcp"] {
"McpServers": {
"dev-spatialpack-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@spatialpack/mcp"
]
}
}
} assistant mcp add dev-spatialpack-mcp -t stdio -c npx -a -y @spatialpack/mcp
{
"mcpServers": {
"dev-spatialpack-mcp": {
"command": "npx",
"args": [
"-y",
"@spatialpack/mcp"
]
}
}
} 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.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 0
- Stability: 0.97 → pass security
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
- 10 Sept 26 0
- Stability: 0.97 → pass security
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 20 Sept 2026 · Analysed npm/@spatialpack/mcp@0.1.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 →
Vulnerabilities 2 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-f88m-g3jw-g9cj | high | yes | ||
| GHSA-rgj7-g3m4-5g8c | high | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 185 packages
| Packages resolved | 185 |
|---|---|
| Stale | 42 |
| 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 →
analyze Analyze a glTF / GLB asset ~120
Run the SpatialPack analyzer against a GLB or glTF file. Returns the full structured report: vertex / triangle / texture / animation counts, cohort tags (texture, animation, poly), KHR / EXT extensions used, estimated GPU texture memory, and a per-target compatibility rollup (Three.js, Babylon, model-viewer, AR Quick Look, Scene Viewer). Read-only — does not modify the input.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | Absolute or sandbox-relative path to the .glb / .gltf file. Must be inside the sandbox root. |
No output schema declared.
No examples provided.
autocorrect Autocorrect an asset for commerce readiness ~260
SPEC-0125/0126: repair a GLB / glTF so it is commerce-ready for AR Quick Look + web, and prove it. Runs floater removal + USDZ-safe material bake (transmission→alpha; clearcoat/sheen/etc. flattened) + preset optimization, then RE-SCORES readiness and returns the before→after report: applied repairs, size reduction, resolvedBlockers (what it fixed) and remainingBlockers (what needs manual work). Writes the repaired GLB to output_path (sandbox). Set bake_usdz_safe=false to keep lossy materials (leaves the AR blocker).
| Name | Type | Req | Description |
|---|---|---|---|
| bake_usdz_safe | boolean | – | Flatten USDZ-lossy materials so AR Quick Look renders. Default true. |
| input_path | string | yes | Source .glb / .gltf path (sandbox-relative). E.g. raw Meshy/Tripo output. |
| output_path | string | yes | Destination .glb path for the repaired asset (sandbox-relative). |
| preset | string | – | Optimization preset. Default 'web-mobile'. |
| prune_error | number | – | simplifyPrune floater threshold (default 0.02). |
| target | string | – | Conformance target for scoring. Default 'apple-ar'. |
No output schema declared.
No examples provided.
batch_autocorrect Autocorrect a whole catalog for commerce readiness ~238
SPEC-0128: repair + re-score every GLB / glTF under the given files/dirs (recursive), writing each repaired asset + a per-asset report into out_dir, plus a roll-up that tallies readiness status transitions (not-ready→ready/warnings), how many assets were rescued, how many remain not-ready, and total size reduction. The agency / generator catalog surface. Set bake_usdz_safe=false to keep lossy materials.
| Name | Type | Req | Description |
|---|---|---|---|
| bake_usdz_safe | boolean | – | Flatten USDZ-lossy materials so AR Quick Look renders. Default true. |
| concurrency | integer | – | Parallel workers (default min(4, cpus)). |
| inputs | array | yes | Files and/or directories (sandbox-relative; dirs are walked recursively for .glb/.gltf). |
| out_dir | string | yes | Destination directory for repaired assets + reports (sandbox-relative). |
| preset | string | – | Optimization preset. Default 'web-mobile'. |
| prune_error | number | – | simplifyPrune floater threshold (default 0.02). |
| target | string | – | Conformance target for scoring. Default 'apple-ar'. |
No output schema declared.
No examples provided.
batch_optimize Batch-optimize a directory of GLBs / glTFs ~143
Walk a list of files and/or directories (recursive for .glb/.gltf), run the SpatialPack optimizer on each at the requested preset, and write per-asset reports + optimized GLBs into out_dir. Continues on per-asset error by default (failFast=false). Honors a resume mode that skips assets whose report file already exists.
| Name | Type | Req | Description |
|---|---|---|---|
| concurrency | integer | – | – |
| fail_fast | boolean | – | – |
| inputs | array | yes | – |
| meshopt | boolean | – | – |
| no_ktx2 | boolean | – | – |
| out_dir | string | yes | – |
| preset | string | yes | – |
| resume | boolean | – | – |
No output schema declared.
No examples provided.
bundle_glb_zip Bundle a GLB + sidecars into a single .glb.zip (SPEC-0091) ~225
Pack a primary GLB plus sidecar files (textures/, etc.) into a single `.glb.zip` archive with a versioned manifest. Sidecar paths inside the archive default to their basenames; pass `sidecar_arcnames` to override. Auto-DEFLATE per entry, falling back to stored when DEFLATE wastes bytes. Returns the manifest and on-disk size.
| Name | Type | Req | Description |
|---|---|---|---|
| generator | string | – | Generator tag for the manifest (default: "spatialpack"). |
| output_path | string | yes | Where to write the .glb.zip archive. |
| primary_arcname | string | – | Filename for the primary GLB inside the bundle (default: basename of primary_path). |
| primary_path | string | yes | Sandbox-relative path to the primary GLB. |
| sidecar_arcnames | array | – | Optional override for sidecar relative paths inside the archive. Must match sidecar_paths length and order. Defaults to sidecar basenames. |
| sidecar_paths | array | – | Sandbox-relative paths to sidecar files (textures, sounds, etc.). |
No output schema declared.
No examples provided.
canonical_cid Canonical-vertex content identifier (CID) ~71
Compute the SPEC-0055 16-char hex SHA-256 prefix of the canonicalized geometry stream. Robust to mesh / primitive / attribute ordering and endianness; excludes textures and materials. Use as a deterministic geometry-identity key for caching and deduplication.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | – |
No output schema declared.
No examples provided.
cohort_recipes_build Build cohort-recipes lookup from a corpus manifest ~158
Run TPE recipe-search per cohort bucket (poly × animation × material) using a representative subset of the corpus. Emits a sidecar `cohort-recipes.json` the runtime / batch pipeline can use to pick the right recipe for any given asset by its cohort tags.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_ktx2 | boolean | – | – |
| corpus_dir | string | yes | Directory the manifest entries are relative to. |
| manifest_path | string | yes | Path to the corpus MANIFEST.json (sandbox-relative). |
| max_recipes | integer | – | – |
| out_path | string | yes | Where to write cohort-recipes.json. |
| preset | string | yes | – |
| representatives_per_cohort | integer | – | – |
| search_seed | integer | – | – |
No output schema declared.
No examples provided.
cohort_recipes_lookup Look up the recipe for a given cohort from a manifest ~72
Read a cohort-recipes.json manifest and resolve the recipe for the given cohort tags. Falls back to same-poly+animation, then same-poly only, then null.
| Name | Type | Req | Description |
|---|---|---|---|
| animation | string | yes | – |
| manifest_path | string | yes | – |
| material | string | yes | – |
| poly | string | yes | – |
No output schema declared.
No examples provided.
commerce_readiness Commerce-readiness scorecard ~162
SPEC-0124: score whether a GLB / glTF is commerce-ready for AR Quick Look + web. Composes ACG-2.0 conformance with AR-parity (lossy materials like KHR_materials_transmission, structural USDZ risks, geometry) into ONE verdict — ready | warnings | not-ready — plus explicit must-fix blockers and review warnings. Read-only; does not modify the input. Use this to gate AI-generated 3D output before publishing.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | Absolute or sandbox-relative path to the .glb / .gltf file. Must be inside the sandbox root. |
| target | string | – | Conformance target. Default "apple-ar" (readiness is an AR-commerce question). |
No output schema declared.
No examples provided.
compare_images Compare two PNGs (MAE / ΔE94 / Sobel-edge / SSIM) ~80
Pixel-precise comparison of two PNG buffers of identical dimensions. Returns differing-pixel count, MAE per channel, ΔE94 mean/max/p95 (CIE perceptual colour distance), Sobel-edge delta, and SSIM. Inputs are file paths (sandbox-relative).
| Name | Type | Req | Description |
|---|---|---|---|
| a_path | string | yes | – |
| b_path | string | yes | – |
No output schema declared.
No examples provided.
compatibility_check Per-target compatibility rollup ~63
Run the analyzer against the input asset and surface the per-target compatibility matrix: Three.js, Babylon.js, model-viewer, AR Quick Look, Scene Viewer. Returns warnings and notes per target so a caller can pick a delivery format.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | – |
No output schema declared.
No examples provided.
dedup_textures De-duplicate embedded textures across a set of GLBs (SPEC-0091) ~214
Scan a set of GLBs for byte-identical embedded images and extract any image shared by ≥ `min_occurrences` GLBs into a shared sidecar directory. Rewrites each input GLB to reference the sidecar via `image.uri`. Returns the per-image and per-GLB savings report. Set `dry_run: true` to plan without writing. Default `min_occurrences` is 2.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | Compute the plan without writing any files. |
| in_place | boolean | – | Overwrite inputs instead of writing to out_dir. |
| input_paths | array | yes | Sandbox-relative GLB paths to scan for shared images. |
| min_occurrences | integer | – | Image must appear in this many GLBs to be extracted as shared (default 2). |
| out_dir | string | – | Where to write patched GLBs + the shared sidecar dir. Required unless in_place=true. |
| shared_dir_name | string | – | Subdirectory name for shared images (default "textures"). |
No output schema declared.
No examples provided.
diagnose_asset Inspect an asset and produce actionable optimization recommendations ~82
Run analyze + compatibility-check on the asset and return a structured list of recommendations the caller can act on (e.g. "enable channelPack — material has separate occlusion + metallicRoughness"). Each recommendation includes a `tool` + `suggested_args` so the model can chain into `optimize` with confidence.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | – |
No output schema declared.
No examples provided.
explain_budget Explain the cohort budgets used by SpatialPack ~74
Return the SPEC-0030 cohort budget table (texture / animation / poly), the SPEC-0046 cohort attribute-quantization budgets, and the SPEC-0059 per-cohort meshopt method scheduler. Pure data — useful for the model to explain trade-offs to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| poly_cohort | string | – | – |
No output schema declared.
No examples provided.
find_similar_assets Find top-K visually-similar assets via SPEC-0087 embeddings ~158
Embed the query asset, query an on-disk AssetEmbeddingIndex, and return the top-K nearest neighbors by cosine similarity. The index must have been built by `spatialpack index build` (or the equivalent core helpers); pass its sandbox-relative path. K defaults to 5. Read-only — does not modify either the query or the index.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_self | boolean | – | Skip the exact-id self-match when the query is itself in the index. |
| index_path | string | yes | Sandbox-relative path to the serialized AssetEmbeddingIndex JSON. |
| input_path | string | yes | Sandbox-relative path to the query .glb / .gltf. |
| k | integer | – | Number of neighbors to return (default 5). |
No output schema declared.
No examples provided.
list_presets List available SpatialPack presets ~49
Return the configured preset ids (web-mobile, web-desktop, quality-max) and their key budget knobs: maxTextureSize, useWebpTextures, preferKtx2, meshoptLevel.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
lod_bundle Build a multi-tier LOD bundle ~108
Bake multiple quality tiers (default: high / medium / low) of a single source GLB and emit a sidecar spatialpack.lod.json manifest pointing at them. The runtime picks the largest tier whose recommendedMinPixelHeight ≤ the projected screen height.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | – |
| out_dir | string | yes | Directory (created if missing) for tier GLBs + manifest. |
| tiers | array | – | Custom tier ladder (default: 3-tier high/medium/low). |
No output schema declared.
No examples provided.
model_ready Safari <model>-ready USDZ gate (SPEC-0161) ~263
SPEC-0161: score whether a USDZ will load + render in Safari 27's HTML <model> element and Apple AR Quick Look. Composes USDZ packaging conformance with the AR-Quick-Look render constraints and the <model>-specific deltas (centimeter 100x scale bug, .usdz extension/MIME negotiation, empty-stage) into ONE verdict — ready | warnings | not-ready — plus explicit must-fix blockers and review warnings. Read-only; does not modify the input. HONESTY: this is documented-constraint conformance, NOT a live Safari/Quick Look render — Apple ships no headless <model>/RealityKit renderer, so verify high-value SKUs on a real device.
| Name | Type | Req | Description |
|---|---|---|---|
| budget_bytes | integer | – | Override the soft USDZ file-size budget in bytes (default ≈ 25 MB). Over budget is a warning, never a blocker. |
| input_path | string | yes | Absolute or sandbox-relative path to the .usdz file. Must be inside the sandbox root. |
| source_extensions_used | array | – | glTF extensions the SOURCE asset declared used (e.g. from analyze.extensionsUsed); the USDZ-lossy subset surfaces as warnings (the <model> render differs from the glTF). |
No output schema declared.
No examples provided.
optimize Optimize a glTF / GLB asset ~317
Run the full SpatialPack optimization pipeline against a preset. Writes a new GLB to `output_path` (must be inside the sandbox) and returns the structured optimization report — pass-by-pass before/after stats, baseline comparison, KTX2 status, quality notes. All opt-in passes (decimate, saliencyAware decimation, channelPack ORM, palette PNG re-encode, materialClustering, symmetry detection, cohort-quantize, lockBorder, etc.) are exposed as flat options.
| Name | Type | Req | Description |
|---|---|---|---|
| animations | object | – | – |
| channel_pack | object | – | – |
| cohort_quantize | object | – | – |
| decimate | object | – | – |
| input_path | string | yes | Source .glb / .gltf path (sandbox-relative). |
| ktx2_quality | string | – | – |
| material_clustering | object | – | – |
| meshopt | boolean | – | – |
| meshopt_method | string | – | – |
| meshopt_scheduler | string | – | – |
| no_ktx2 | boolean | – | Skip KTX2 encoding even when toktx is on PATH. |
| output_path | string | yes | Destination .glb path (sandbox-relative). |
| palette | object | – | – |
| preset | string | yes | Preset id: 'web-mobile' | 'web-desktop' | 'quality-max'. |
| saliency | object | – | – |
| skinning_weights | object | – | – |
| symmetry | object | – | – |
| unlit | object | – | – |
| uv_align | object | – | – |
No output schema declared.
No examples provided.
phash Perceptual hash of a PNG (64-bit DCT-based) ~65
Compute the SPEC-0052 64-bit DCT-based perceptual hash of a PNG. Returns a 16-character hex string. Pair with `phash_distance` to short-circuit visual diffs when two renders are byte-equivalent.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | – |
No output schema declared.
No examples provided.
phash_distance Hamming distance between two pHashes ~67
Compute the Hamming distance (count of differing bits) between two 16-char hex pHashes. Convention: ≤ 5 = near-duplicate, 6–15 = ambiguous, > 15 = clearly different.
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | – |
| b | string | yes | – |
No output schema declared.
No examples provided.
recipe_search Auto-tune optimization recipes via TPE Bayesian search ~206
Sweep optimization recipes (preset × meshopt × decimate × KTX2 quality) for the input asset and return the winning recipe under the configured policy. Uses cohort-aware pruning + grid warm-start + TPE Bayesian search (SPEC-0044). The visual-quality gate is OFF by default — pass `with_quality_gate: true` to enable Playwright + ΔE94 / SSIM gating (much slower, ~30s per candidate).
| Name | Type | Req | Description |
|---|---|---|---|
| allow_ktx2 | boolean | – | – |
| input_path | string | yes | – |
| max_recipes | integer | – | – |
| output_path | string | yes | Where to write the winning recipe GLB. |
| preset | string | yes | – |
| quality_weight | number | – | – |
| search_decimate | boolean | – | – |
| search_seed | integer | – | – |
| time_budget_ms | integer | – | – |
| winner_strategy | string | – | – |
| with_quality_gate | boolean | – | Enable visual-diff gating (slow). |
No output schema declared.
No examples provided.
recipe_search_with_inheritance Recipe search seeded with k-NN inherited recipes ~262
Run multi-fidelity TPE recipe search (SPEC-0044) against the input asset, but seed the queue with the winning recipes already cached for the input's k nearest neighbors in the supplied AssetEmbeddingIndex. Composes SPEC-0087 Phase 2 (k-NN recipe inheritance) + SPEC-0096 (index management). Visual quality gate is OFF — same constraint as `recipe_search`.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_ktx2 | boolean | – | – |
| cache_path | string | yes | Sandbox-relative path to the RecipeCache JSON (SPEC-0087 Phase 2). May not exist yet — empty cache falls through to cold-start. |
| index_path | string | yes | Sandbox-relative path to the serialized AssetEmbeddingIndex JSON. |
| input_path | string | yes | Sandbox-relative path to the .glb / .gltf to optimize. |
| k | integer | – | Neighbors to consider for inheritance (default 5). |
| max_recipes | integer | – | – |
| min_similarity | number | – | Cosine-similarity floor for a neighbor to contribute a seed (default 0). |
| output_path | string | yes | Where to write the winning recipe GLB. |
| preset | string | yes | – |
| search_seed | integer | – | – |
No output schema declared.
No examples provided.
safety_gate Gate a cohort of assets against cohort-aware visual-diff thresholds (SPEC-0090) ~239
Apply SpatialPack's cohort-aware quality gate (SPEC-0036 thresholds + SPEC-0090 reporting) to a set of per-asset visual-diff metrics. Each input asset carries its cohort tags (textured/untextured · animated/static · low/medium/high poly) and worst-of-N ssim/ΔE94/edgeDelta numbers from an orbit-8 render. Returns per-asset verdicts plus an aggregate `summary` (`pass` iff every asset passed); optionally writes a JSON report and a `gate-report.md` to `output_path`.
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | Per-asset visual-diff bundles. ssim/edgeDelta in [0,1]; ΔE94 in CIE units. |
| cohort | string | yes | Cohort name (e.g. "static-props", "skinned-animated", "all"). |
| feature_id | string | yes | Stable label for the candidate under test (e.g. "spec-0091-source-texture-dedup"). |
| output_path | string | – | Optional sandbox-relative path to write the SafetyGateReport JSON (`.md` sibling auto-emitted). |
No output schema declared.
No examples provided.
splat_to_usdz Splat → Apple ParticleField USDZ (SPEC-0160) ~337
Convert a Gaussian splat file (PLY, .splatz, or KHR_gaussian_splatting GLB) into an Apple ParticleField3DGaussianSplat USDZ (OpenUSD 26.03 schema pin) for RealityKit / Reality Composer Pro / Safari `<model>`. Pure-TS — no Apple toolchain. Optionally also writes the RealityKit per-channel f32 buffer set + layout.json sidecar via `realitykit_buffers_dir`. STRUCTURAL CONFORMANCE ONLY — the emitted USDZ is a valid package whose ParticleField3DGaussianSplat prim this tool re-parses; it is NOT RealityKit/visionOS render-verified (that requires Apple hardware, SPEC-0160 Phase D).
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Input format (ply | splatz | glb). Auto-detected from magic bytes when omitted. |
| input_path | string | yes | Sandbox-relative path to a Gaussian-splat .ply, .splatz, or KHR_gaussian_splatting .glb file. |
| lod_quality_gate | string | – | Render-free degeneracy gate: off (default) | warn | strict (strict refuses + emits nothing). |
| max_sh_degree | integer | – | Clamp the SH degree down to this value (0..3) before emitting. |
| output_path | string | yes | Sandbox-relative path to write the .usdz to. |
| realitykit_buffers_dir | string | – | Optional sandbox-relative dir; when set, also write the RealityKit f32 buffers + layout.json. |
| up_axis | string | – | Stage up-axis (default Y, the captured fixture). |
No output schema declared.
No examples provided.
unbundle_glb_zip Extract a .glb.zip archive (SPEC-0091) ~101
Read a `.glb.zip` and write the primary GLB + every sidecar to `out_dir`, preserving the relative paths recorded in the manifest. Verifies CRC32 + cross-checks manifest names against archive entries. Returns the manifest and per-entry output paths.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | Sandbox-relative path to the .glb.zip archive. |
| out_dir | string | yes | Sandbox-relative directory to extract into (created if missing). |
No output schema declared.
No examples provided.
usdc_to_usda Convert binary USDC → USDA text (SPEC-0076 Phase H) ~158
Read a binary USDC file and emit the equivalent USDA text — the same conversion the Pixar `usdcat` tool performs. Returns the rendered text directly; pass `output_path` to also write it to disk (sandbox-relative). Useful for inspecting a USDZ payload, diffing generated USDC against a Pixar reference, or letting an AI agent read scene structure as plain text.
| Name | Type | Req | Description |
|---|---|---|---|
| input_path | string | yes | Sandbox-relative path to a .usdc binary. |
| max_chars_returned | integer | – | Truncate the returned text to this many chars (default 200000). The full text is always written to output_path if provided. |
| output_path | string | – | Optional sandbox-relative path to write the USDA text to. |
No output schema declared.
No examples provided.
usdz_export Export GLB → USDZ ~104
Convert a GLB to a USDZ for AR Quick Look using the local converter (usd_from_gltf, usdzconvert, or xcrun usdz_converter — the first one found on PATH). Includes a post-export validation pass when `validate: true` (default true).
| Name | Type | Req | Description |
|---|---|---|---|
| budget_bytes | integer | – | – |
| input_path | string | yes | – |
| output_path | string | yes | – |
| preset | string | – | – |
| validate | boolean | – | – |
No output schema declared.
No examples provided.
usdz_validate Validate a USDZ asset ~63
Open a .usdz, walk its contents, and report compatibility warnings (size budget, asset-ref resolution, missing textures, file-size cap). Pure-JS read; no converter required.
| Name | Type | Req | Description |
|---|---|---|---|
| budget_bytes | integer | – | – |
| input_path | string | yes | – |
No output schema declared.
No examples provided.
What is the SpatialPack — 3D asset readiness MCP server?
SpatialPack — 3D asset readiness is an MCP server listed in the public MCP registry as dev.spatialpack/mcp. Test whether 3D assets survive Apple Quick Look and Safari <model>, then fix what fails. This page covers its npm package (@spatialpack/mcp).
Is the SpatialPack — 3D asset readiness MCP server safe to use?
SpatialPack — 3D asset readiness scores 74 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 20 September 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 SpatialPack — 3D asset readiness MCP server expose?
SpatialPack — 3D asset readiness exposes 29 tools: analyze, optimize, recipe_search, lod_bundle, usdz_export, and 24 more. Their descriptions and schemas cost roughly 4,459 tokens of context every time the server is loaded.
Is the SpatialPack — 3D asset readiness MCP server still maintained?
SpatialPack — 3D asset readiness is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the SpatialPack — 3D asset readiness MCP server under?
SpatialPack — 3D asset readiness declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.