Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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

0 this week 74 Trust /100
Trust breakdown (7 categories)

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
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
Install

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

# add to Claude Code
claude mcp add dev-spatialpack-mcp -- npx -y @spatialpack/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-spatialpack-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@spatialpack/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-spatialpack-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@spatialpack/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dev-spatialpack-mcp -- npx -y @spatialpack/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-spatialpack-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@spatialpack/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-spatialpack-mcp --command npx --arg -y --arg @spatialpack/mcp
# ~/.hermes/config.yaml
mcp_servers:
  dev-spatialpack-mcp:
    command: "npx"
    args: ["-y", "@spatialpack/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-spatialpack-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@spatialpack/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dev-spatialpack-mcp -t stdio -c npx -a -y @spatialpack/mcp
// mcp.json
{
  "mcpServers": {
    "dev-spatialpack-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@spatialpack/mcp"
      ]
    }
  }
}
Changelog

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
Diagnostics

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 →

MCP tools · 29 exposed · ~4,459 tokens

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 →

Tool Tokens
analyze ~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.

NameTypeReqDescription
input_pathstringyesAbsolute or sandbox-relative path to the .glb / .gltf file. Must be inside the sandbox root.

No output schema declared.

No examples provided.

autocorrect ~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).

NameTypeReqDescription
bake_usdz_safebooleanFlatten USDZ-lossy materials so AR Quick Look renders. Default true.
input_pathstringyesSource .glb / .gltf path (sandbox-relative). E.g. raw Meshy/Tripo output.
output_pathstringyesDestination .glb path for the repaired asset (sandbox-relative).
presetstringOptimization preset. Default 'web-mobile'.
prune_errornumbersimplifyPrune floater threshold (default 0.02).
targetstringConformance target for scoring. Default 'apple-ar'.

No output schema declared.

No examples provided.

batch_autocorrect ~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.

NameTypeReqDescription
bake_usdz_safebooleanFlatten USDZ-lossy materials so AR Quick Look renders. Default true.
concurrencyintegerParallel workers (default min(4, cpus)).
inputsarrayyesFiles and/or directories (sandbox-relative; dirs are walked recursively for .glb/.gltf).
out_dirstringyesDestination directory for repaired assets + reports (sandbox-relative).
presetstringOptimization preset. Default 'web-mobile'.
prune_errornumbersimplifyPrune floater threshold (default 0.02).
targetstringConformance target for scoring. Default 'apple-ar'.

No output schema declared.

No examples provided.

batch_optimize ~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.

NameTypeReqDescription
concurrencyinteger
fail_fastboolean
inputsarrayyes
meshoptboolean
no_ktx2boolean
out_dirstringyes
presetstringyes
resumeboolean

No output schema declared.

No examples provided.

bundle_glb_zip ~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.

NameTypeReqDescription
generatorstringGenerator tag for the manifest (default: "spatialpack").
output_pathstringyesWhere to write the .glb.zip archive.
primary_arcnamestringFilename for the primary GLB inside the bundle (default: basename of primary_path).
primary_pathstringyesSandbox-relative path to the primary GLB.
sidecar_arcnamesarrayOptional override for sidecar relative paths inside the archive. Must match sidecar_paths length and order. Defaults to sidecar basenames.
sidecar_pathsarraySandbox-relative paths to sidecar files (textures, sounds, etc.).

No output schema declared.

No examples provided.

canonical_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.

NameTypeReqDescription
input_pathstringyes

No output schema declared.

No examples provided.

cohort_recipes_build ~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.

NameTypeReqDescription
allow_ktx2boolean
corpus_dirstringyesDirectory the manifest entries are relative to.
manifest_pathstringyesPath to the corpus MANIFEST.json (sandbox-relative).
max_recipesinteger
out_pathstringyesWhere to write cohort-recipes.json.
presetstringyes
representatives_per_cohortinteger
search_seedinteger

No output schema declared.

No examples provided.

cohort_recipes_lookup ~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.

NameTypeReqDescription
animationstringyes
manifest_pathstringyes
materialstringyes
polystringyes

No output schema declared.

No examples provided.

commerce_readiness ~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.

NameTypeReqDescription
input_pathstringyesAbsolute or sandbox-relative path to the .glb / .gltf file. Must be inside the sandbox root.
targetstringConformance target. Default "apple-ar" (readiness is an AR-commerce question).

No output schema declared.

No examples provided.

compare_images ~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).

NameTypeReqDescription
a_pathstringyes
b_pathstringyes

No output schema declared.

No examples provided.

compatibility_check ~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.

NameTypeReqDescription
input_pathstringyes

No output schema declared.

No examples provided.

dedup_textures ~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.

NameTypeReqDescription
dry_runbooleanCompute the plan without writing any files.
in_placebooleanOverwrite inputs instead of writing to out_dir.
input_pathsarrayyesSandbox-relative GLB paths to scan for shared images.
min_occurrencesintegerImage must appear in this many GLBs to be extracted as shared (default 2).
out_dirstringWhere to write patched GLBs + the shared sidecar dir. Required unless in_place=true.
shared_dir_namestringSubdirectory name for shared images (default "textures").

No output schema declared.

No examples provided.

diagnose_asset ~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.

NameTypeReqDescription
input_pathstringyes

No output schema declared.

No examples provided.

explain_budget ~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.

NameTypeReqDescription
poly_cohortstring

No output schema declared.

No examples provided.

find_similar_assets ~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.

NameTypeReqDescription
exclude_selfbooleanSkip the exact-id self-match when the query is itself in the index.
index_pathstringyesSandbox-relative path to the serialized AssetEmbeddingIndex JSON.
input_pathstringyesSandbox-relative path to the query .glb / .gltf.
kintegerNumber of neighbors to return (default 5).

No output schema declared.

No examples provided.

list_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 ~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.

NameTypeReqDescription
input_pathstringyes
out_dirstringyesDirectory (created if missing) for tier GLBs + manifest.
tiersarrayCustom tier ladder (default: 3-tier high/medium/low).

No output schema declared.

No examples provided.

model_ready ~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.

NameTypeReqDescription
budget_bytesintegerOverride the soft USDZ file-size budget in bytes (default ≈ 25 MB). Over budget is a warning, never a blocker.
input_pathstringyesAbsolute or sandbox-relative path to the .usdz file. Must be inside the sandbox root.
source_extensions_usedarrayglTF 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 ~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.

NameTypeReqDescription
animationsobject
channel_packobject
cohort_quantizeobject
decimateobject
input_pathstringyesSource .glb / .gltf path (sandbox-relative).
ktx2_qualitystring
material_clusteringobject
meshoptboolean
meshopt_methodstring
meshopt_schedulerstring
no_ktx2booleanSkip KTX2 encoding even when toktx is on PATH.
output_pathstringyesDestination .glb path (sandbox-relative).
paletteobject
presetstringyesPreset id: 'web-mobile' | 'web-desktop' | 'quality-max'.
saliencyobject
skinning_weightsobject
symmetryobject
unlitobject
uv_alignobject

No output schema declared.

No examples provided.

phash ~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.

NameTypeReqDescription
input_pathstringyes

No output schema declared.

No examples provided.

phash_distance ~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.

NameTypeReqDescription
astringyes
bstringyes

No output schema declared.

No examples provided.

recipe_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).

NameTypeReqDescription
allow_ktx2boolean
input_pathstringyes
max_recipesinteger
output_pathstringyesWhere to write the winning recipe GLB.
presetstringyes
quality_weightnumber
search_decimateboolean
search_seedinteger
time_budget_msinteger
winner_strategystring
with_quality_gatebooleanEnable visual-diff gating (slow).

No output schema declared.

No examples provided.

recipe_search_with_inheritance ~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`.

NameTypeReqDescription
allow_ktx2boolean
cache_pathstringyesSandbox-relative path to the RecipeCache JSON (SPEC-0087 Phase 2). May not exist yet — empty cache falls through to cold-start.
index_pathstringyesSandbox-relative path to the serialized AssetEmbeddingIndex JSON.
input_pathstringyesSandbox-relative path to the .glb / .gltf to optimize.
kintegerNeighbors to consider for inheritance (default 5).
max_recipesinteger
min_similaritynumberCosine-similarity floor for a neighbor to contribute a seed (default 0).
output_pathstringyesWhere to write the winning recipe GLB.
presetstringyes
search_seedinteger

No output schema declared.

No examples provided.

safety_gate ~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`.

NameTypeReqDescription
assetsarrayyesPer-asset visual-diff bundles. ssim/edgeDelta in [0,1]; ΔE94 in CIE units.
cohortstringyesCohort name (e.g. "static-props", "skinned-animated", "all").
feature_idstringyesStable label for the candidate under test (e.g. "spec-0091-source-texture-dedup").
output_pathstringOptional sandbox-relative path to write the SafetyGateReport JSON (`.md` sibling auto-emitted).

No output schema declared.

No examples provided.

splat_to_usdz ~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).

NameTypeReqDescription
formatstringInput format (ply | splatz | glb). Auto-detected from magic bytes when omitted.
input_pathstringyesSandbox-relative path to a Gaussian-splat .ply, .splatz, or KHR_gaussian_splatting .glb file.
lod_quality_gatestringRender-free degeneracy gate: off (default) | warn | strict (strict refuses + emits nothing).
max_sh_degreeintegerClamp the SH degree down to this value (0..3) before emitting.
output_pathstringyesSandbox-relative path to write the .usdz to.
realitykit_buffers_dirstringOptional sandbox-relative dir; when set, also write the RealityKit f32 buffers + layout.json.
up_axisstringStage up-axis (default Y, the captured fixture).

No output schema declared.

No examples provided.

unbundle_glb_zip ~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.

NameTypeReqDescription
input_pathstringyesSandbox-relative path to the .glb.zip archive.
out_dirstringyesSandbox-relative directory to extract into (created if missing).

No output schema declared.

No examples provided.

usdc_to_usda ~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.

NameTypeReqDescription
input_pathstringyesSandbox-relative path to a .usdc binary.
max_chars_returnedintegerTruncate the returned text to this many chars (default 200000). The full text is always written to output_path if provided.
output_pathstringOptional sandbox-relative path to write the USDA text to.

No output schema declared.

No examples provided.

usdz_export ~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).

NameTypeReqDescription
budget_bytesinteger
input_pathstringyes
output_pathstringyes
presetstring
validateboolean

No output schema declared.

No examples provided.

usdz_validate ~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.

NameTypeReqDescription
budget_bytesinteger
input_pathstringyes

No output schema declared.

No examples provided.

Common questions

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.