vitrine MCP server — manage 3D product viewers, scenes, and embeds from AI agents
Strong server with well-structured tools, clear naming conventions, and good schema coverage. All 17 tools follow verb_noun patterns (list_, upload_, delete_, get_, set_, publish_, apply_, create_, send_). Descriptions are substantive (100-250 chars typical) and action-oriented. Input schemas are present and properly typed for all tools. Key strengths: explicit risk classifications (READ_ONLY, WRITE, DESTRUCTIVE), consistent naming across resource domains (models, config, looks, showcases), parameter descriptions included for all. Gaps: some parameter descriptions are terse (e.g., vitrine_upload_model's 'name' param just says 'Display name for the model'); output schemas not documented in source (return types inferred but not explicitly specified); error recovery guidance limited.
Get current account info: plan tier, usage counts, and limits.
Apply a Look preset to a model by setting its look_id.
Get the full SceneConfig JSON schema — all fields, types, enums, and defaults.
Save a scene config as a named Look preset.
Delete a model and all its associated storage files.
Submit a bug report or feature request. Creates a GitHub issue automatically.
Output schemas not explicitly documented. Tool descriptions state what is returned (e.g., 'Get detailed info including config, thumbnail, and model URL') but the actual response field structure and types are not visible in the provided code. LLMs cannot reliably infer pagination, field names, or nested structures from prose alone.
Parameter descriptions inconsistent in depth. vitrine_upload_model's 'name' param description ('Display name for the model') lacks guidance on length, character restrictions, or uniqueness. vitrine_set_config's 'config' param references an external schema discovery tool (vitrine_config_schema) rather than documenting the structure inline or providing format/constraint hints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 78 | <=2025-11-25 | v2 |
Get the full merged scene config for a model (look + layout + overrides).
Get ready-to-paste HTML embed code for a published model.
List available HDRI environment presets with their slugs.
List your saved Looks (reusable scene presets).
List all your Vitrine 3D models with IDs, names, and publish status.
Connect your Vitrine account. Opens a browser to sign in or sign up. If you have anonymous models, they will be transferred to your account automatically.
Remove saved credentials. You'll start fresh as anonymous on next use.
Get detailed info about a model including config, thumbnail, and model URL.
Publish or unpublish a model. Published models are embeddable.
Apply a config patch to a model. Only include fields you want to change. Common fields: bg_mode, bg_color, hdri_name, hdri_exposure, bloom_enabled, bloom_intensity, auto_rotate, camera_fov, camera_pitch, camera_yaw, tonemapping_mode, shadow_catcher_enabled. Use vitrine_config_schema to see all available fields.
Upload a GLB/glTF file to Vitrine. Provide the absolute file path on disk.
No documented error recovery paths. Tool descriptions do not specify what happens on failure (e.g., 'If model_id not found, returns 404 with available model IDs' or 'Invalid file format, supported formats: GLB, glTF'). Errors are likely returned as unstructured API responses without actionable guidance for LLM retry or correction.
Destructive operation vitrine_delete_model lacks confirmation/dry-run mechanism. Deleting a model is irreversible, but the tool offers no confirmation step. An LLM could accidentally delete a model due to hallucination or misunderstanding. Consider adding an optional 'confirm' parameter or a separate 'confirm_delete' tool.
Resource chain gaps: vitrine_list_models returns model info, but output schema not documented. If an agent wants to fetch config after listing, it needs model_id from the list response, if that ID is missing or named differently, the chain breaks. Verify output field names match downstream parameter names.