{"name":"dev.spatialpack/mcp","slug":"spatialpack-mcp","title":"SpatialPack — 3D asset readiness","description":"Test whether 3D assets survive Apple Quick Look and Safari <model>, then fix what fails","url":"https://mcp.market/server/spatialpack-mcp","rating":null,"grade":"C","score":68,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":9,"stars":null,"forks":null,"downloads_week":15,"last_push_at":null,"license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":null,"website":"https://spatialpack.dev","version":"0.1.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@spatialpack/mcp","version":"0.1.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"Path to a SpatialPack checkout. Only needed for the spec:// and learnings:// resources; every tool works without it. Defaults to the process working directory.","format":"filepath","type":"named","name":"--repo-root","valueHint":"/path/to/spatialpack"},{"description":"Directory the server is allowed to read and write. Every file path a tool touches is clamped inside it. Defaults to a per-process temp directory.","format":"filepath","type":"named","name":"--sandbox","valueHint":"/path/to/sandbox"}],"environmentVariables":[{"description":"Sandbox root for asset reads and writes, equivalent to --sandbox. Defaults to a per-process temp directory.","format":"filepath","name":"SPATIALPACK_MCP_SANDBOX"},{"description":"Log level for the JSON-Lines diagnostic stream on stderr: debug, info, warn, error, or silent. Defaults to info.","format":"string","default":"info","choices":["debug","info","warn","error","silent"],"name":"SPATIALPACK_MCP_LOG"}]}],"tools":[{"name":"analyze","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bundle_glb_zip","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canonical_cid","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"cohort_recipes_build","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"cohort_recipes_lookup","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"commerce_readiness","description":"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 publ","write_action":false,"price_micros":0,"input_schema":null},{"name":"compare_images","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"compatibility_check","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"diagnose_asset","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"explain_budget","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_similar_assets","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_presets","description":"Return the configured preset ids (web-mobile, web-desktop, quality-max) and their key budget knobs: maxTextureSize, useWebpTextures, preferKtx2, meshoptLevel.","write_action":false,"price_micros":0,"input_schema":null},{"name":"model_ready","description":"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. ","write_action":false,"price_micros":0,"input_schema":null},{"name":"phash","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"phash_distance","description":"Compute the Hamming distance (count of differing bits) between two 16-char hex pHashes. Convention: ≤ 5 = near-duplicate, 6–15 = ambiguous, > 15 = clearly different.","write_action":false,"price_micros":0,"input_schema":null},{"name":"recipe_search_with_inheritance","description":"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`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"safety_gate","description":"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); optiona","write_action":false,"price_micros":0,"input_schema":null},{"name":"unbundle_glb_zip","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"usdc_to_usda","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"usdz_validate","description":"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.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":68,"grade":"C","scanned_at":"2026-09-24T17:28:02.029Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:28:01.966Z","components":{"code":{"score":25,"max":25,"notes":["100 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@spatialpack/mcp","version":"0.1.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-07-28T00:27:45.434Z","repositoryUrl":"git+https://github.com/montabano1/SpatialPack.git","weeklyDownloads":15}],"repo":{"found":false,"owner":"montabano1","repo":"SpatialPack","error":"repo not found"},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":15,"license":"MIT","lastPushAt":null,"score":9}}}},"grade_history":[],"reviews":[]}