SpatialPack — 3D asset readiness
Test whether 3D assets survive Apple Quick Look and Safari <model>, then fix what fails
Connector by spatialpack.devOfficial · Domain verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/spatialpack-dev-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 15 read · 4 write · 0 delete · 10 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 29
Read from the source code; the running server may list different tools.
Read 15 · Look things up without changing anything.
canonical_cidcohort_recipes_lookupcompare_imagesdedup_texturesexplain_budgetfind_similar_assetslist_presetsphashphash_distancerecipe_searchsplat_to_usdzunbundle_glb_zip
Show 3 more tools
usdc_to_usdausdz_exportusdz_validate
Write 4 · Create, change, send or run things.
cohort_recipes_builddiagnose_assetoptimizesafety_gate
Not yet classified 10 · We could not tell from the name and description.
analyzeautocorrectbatch_autocorrectbatch_optimizebundle_glb_zipcommerce_readinesscompatibility_checklod_bundlemodel_readyrecipe_search_with_inheritance
Secrets and settings it asks for
Other settings (environment variables or headers).
SPATIALPACK_MCP_LOGSPATIALPACK_MCP_SANDBOX
Files it touches
- Any path the agent passes to its tools
Tools (29)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
analyzeAnalyze a glTF / GLB assetRun 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.
autocorrectAutocorrect an asset for commerce readinessSPEC-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).
batch_autocorrectAutocorrect a whole catalog for commerce readinessSPEC-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.
batch_optimizeBatch-optimize a directory of GLBs / glTFsWalk 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.
bundle_glb_zipBundle a GLB + sidecars into a single .glb.zip (SPEC-0091)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.
canonical_cidCanonical-vertex content identifier (CID)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.
cohort_recipes_buildBuild cohort-recipes lookup from a corpus manifestRun 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.
cohort_recipes_lookupLook up the recipe for a given cohort from a manifestRead 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.
commerce_readinessCommerce-readiness scorecardSPEC-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.
compare_imagesCompare two PNGs (MAE / ΔE94 / Sobel-edge / SSIM)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).
compatibility_checkPer-target compatibility rollupRun 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.
dedup_texturesDe-duplicate embedded textures across a set of GLBs (SPEC-0091)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.
diagnose_assetInspect an asset and produce actionable optimization recommendationsRun 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.
explain_budgetExplain the cohort budgets used by SpatialPackReturn 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.
find_similar_assetsFind top-K visually-similar assets via SPEC-0087 embeddingsEmbed 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.
Show 14 more tools
list_presetsList available SpatialPack presetsReturn the configured preset ids (web-mobile, web-desktop, quality-max) and their key budget knobs: maxTextureSize, useWebpTextures, preferKtx2, meshoptLevel.
lod_bundleBuild a multi-tier LOD bundleBake 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.
model_readySafari <model>-ready USDZ gate (SPEC-0161)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-valu…
optimizeOptimize a glTF / GLB assetRun 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.
phashPerceptual hash of a PNG (64-bit DCT-based)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.
phash_distanceHamming distance between two pHashesCompute the Hamming distance (count of differing bits) between two 16-char hex pHashes. Convention: ≤ 5 = near-duplicate, 6–15 = ambiguous, > 15 = clearly different.
recipe_searchAuto-tune optimization recipes via TPE Bayesian searchSweep 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).
recipe_search_with_inheritanceRecipe search seeded with k-NN inherited recipesRun 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`.
safety_gateGate a cohort of assets against cohort-aware visual-diff thresholds (SPEC-0090)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`.
splat_to_usdzSplat → Apple ParticleField USDZ (SPEC-0160)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).
unbundle_glb_zipExtract a .glb.zip archive (SPEC-0091)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.
usdc_to_usdaConvert binary USDC → USDA text (SPEC-0076 Phase H)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.
usdz_exportExport GLB → USDZConvert 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).
usdz_validateValidate a USDZ assetOpen 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.
Signals
- Last release
- Jul 28, 2026 (3 months ago)
Details
- Registry name
dev.spatialpack/mcp- Version
- 0.1.0
- Auth
- No auth
- Packages
- npm @spatialpack/mcp
- License
- License unknown
- Website
- spatialpack.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- Official MCP Registry
Cite this page
SpatialPack — 3D asset readiness MCP server. Agent Mart. https://agentmart.dev/connectors/spatialpack-dev-mcp (last updated 2026-10-24)