Vitrine MCP Server
OfficialThe Vitrine MCP Server enables AI agents to manage 3D models, configure scenes, publish embeds, and save scene presets on the Vitrine platform.
Model Management
List all models with IDs, names, and publish status
Upload GLB/glTF files from disk
Get detailed model info (config, thumbnail, model URL)
Delete a model and its associated storage files
Scene Configuration
Get and apply full or partial scene configs (lighting, camera, background, bloom, shadows, tonemapping, auto-rotate, etc.)
List available HDRI environment presets
Retrieve the full SceneConfig JSON schema
Publishing & Embedding
Publish or unpublish a model
Generate ready-to-paste HTML embed code for published models
Looks (Scene Presets)
List, apply, and create named reusable scene presets ("Looks")
Account & Auth
View account info (plan tier, usage counts, limits)
Log in via browser, log out, and remove saved credentials
Submit bug reports or feature requests (auto-creates a GitHub issue)
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vitrine MCP ServerUpload this shoe model and get embed code"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vitrine MCP server
MCP server for vitrine — the 3D product viewer platform. Upload GLB models, configure scenes, publish embeds, and manage Looks from any AI agent.
Setup
Add to your MCP client config (Claude Code, Cursor, Windsurf, etc.):
{
"mcpServers": {
"vitrine": {
"command": "npx",
"args": ["@vitrine3d/mcp"]
}
}
}Works immediately with no API key — anonymous uploads expire after 48 hours.
Keep your models
Say "log me in" to your AI agent. A browser window opens, you sign in (or sign up for free), and your models become permanent. No manual key copying needed.
Or set an API key manually:
{
"mcpServers": {
"vitrine": {
"command": "npx",
"args": ["@vitrine3d/mcp"],
"env": {
"VITRINE_API_KEY": "vt_..."
}
}
}
}Generate keys at app.vitrine3d.com → Account → API Keys.
Related MCP server: Wix MCP Server
What you can do
Ask your AI agent things like:
"Upload this shoe model and give me an embed code"
"Make the lighting warmer and add bloom"
"List my models and publish the chair"
"Create a Look called 'Noir' with dark background and dramatic lighting"
Tools
Models
Tool | Description |
| List all models with IDs, names, and publish status |
| Upload a GLB file from disk |
| Get model details, thumbnail, and merged config |
| Delete a model and its storage |
Configuration
Tool | Description |
| Get the full scene config for a model |
| Apply a config patch (lighting, camera, background, effects) |
| List available HDRI environment presets |
| Get the full config JSON schema |
Publishing
Tool | Description |
| Publish or unpublish a model |
| Get ready-to-paste embed HTML |
Looks
Tool | Description |
| List your saved Looks |
| Apply a Look to a model |
| Save a config as a named Look |
Account
Tool | Description |
| Current plan, usage, and limits |
| Connect your account via browser |
| Remove saved credentials |
| Submit a bug report or feature request |
Resources
Resource | Description |
| Full SceneConfig JSON schema |
| Available HDRI presets |
| Embed code template |
HTTP transport
Run as a hosted HTTP server instead of stdio:
npx @vitrine3d/mcp --http # default port 3000
PORT=8080 npx @vitrine3d/mcp --http # custom portThe server exposes a Streamable HTTP endpoint at /mcp, compatible with Smithery, Glama connectors, and any MCP client that supports HTTP transport.
How it works
You -> AI Agent (Claude, Cursor, etc.)
| MCP protocol (stdio or HTTP)
vitrine MCP server
| HTTPS
api.vitrine3d.com
|
Supabase (database, storage, auth)Documentation
License
MIT
Available Tools
17 toolsvitrine_account_infoAccount InfoA
Get current account info: plan tier, usage counts, and limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states it 'gets' info, with no mention of authentication requirements, rate limits, potential side effects, or response behavior. This is minimal for an operation that likely requires a valid session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is clear, direct, and contains no extraneous information. Every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists key output fields but does not detail the return format, error conditions, or prerequisites (e.g., authentication). Given no output schema, more detail would improve completeness, but for a simple read tool it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is 100%. The description adds value by specifying what the returned info includes (plan tier, usage counts, limits), which goes beyond the empty schema. Baseline for zero params is 4, and the description meets that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('current account info'), and lists the exact contents ('plan tier, usage counts, and limits'), clearly distinguishing it from sibling tools that deal with looks, models, or configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but does not provide explicit guidance on when to use it versus alternatives, nor does it mention any prerequisites or context. Its purpose is implied as a read-only account info retrieval, but no 'when-not' or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_apply_lookApply LookB
Apply a Look preset to a model by setting its look_id.
| Name | Required | Description | Default |
|---|---|---|---|
| look_id | Yes | Look ID to apply | |
| model_id | Yes | Model ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses that this is a mutation (applying a look) but does not explain side effects (e.g., overwriting existing looks), idempotency, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence. It is concise and front-loaded, though it could include more behavioral context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and the tool being a mutation, the description lacks critical context such as return value, reversibility, and error handling. An agent needs more information to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The description adds minimal value by phrasing 'by setting its look_id', but the schema already captures the parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Apply a Look preset to a model' and uses the primary parameter 'look_id'. It distinguishes from sibling tools like vitrine_create_look and vitrine_list_looks, as 'apply' is a distinct operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives. It does not mention prerequisites (e.g., needing a valid look_id from list_looks) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_config_schemaConfig SchemaA
Get the full SceneConfig JSON schema — all fields, types, enums, and defaults.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It indicates a read-only operation ('Get'), which is safe and idempotent. While it doesn't explicitly state safety or side effects, the behavior is clear for a schema retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and quickly conveys the tool's purpose. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is fully complete. It tells the agent exactly what the tool returns and what it contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the input schema fully covers the tool's interface (100% coverage). The description adds no parameter information, but none is needed. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the full SceneConfig JSON schema, specifying fields, types, enums, and defaults. It uses a specific verb ('Get') and resource ('SceneConfig JSON schema'), distinguishing it from sibling tools like vitrine_get_config or vitrine_set_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs the schema structure, but does not explicitly state when to use or avoid this tool versus alternatives. No exclusions or alternatives are mentioned, so it meets a basic 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_create_lookCreate LookB
Save a scene config as a named Look preset.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Look name | |
| config | Yes | Scene config for this look |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is too brief. It does not disclose mutational effects (e.g., whether existing looks are overwritten), error states, or required authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, direct, no fluff. Contains all essential information without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is insufficient. It omits success/failure behavior, overwrite semantics, and any constraints on the config object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description only rephrases the parameter purposes without adding new details beyond 'name' and 'config'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Save' and the resource 'scene config as a named Look preset'. It distinguishes from sibling tools like vitrine_apply_look (apply) and vitrine_list_looks (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Does not mention prerequisites, when not to use, or differentiate from vitrine_set_config or vitrine_apply_look.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_delete_modelDelete ModelADestructive
Delete a model and all its associated storage files.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | Model ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true, indicating destruction. The description adds context about associated storage files, which goes beyond the annotation. However, it does not mention irreversibility, necessary permissions, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is front-loaded with the action and key information. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and no output schema, the description is adequate. It states the action and scope. However, it could mention that deletion is permanent (implied by destructiveHint) and what the return result looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter documented as 'Model ID to delete'. The description does not add any further meaning or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'model', and specifies the scope 'all its associated storage files'. It effectively distinguishes this tool from siblings like vitrine_list_models or vitrine_model_info which are read-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to delete vs. unpublish or archive. No prerequisites, exclusions, or warnings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_feedbackSubmit FeedbackA
Submit a bug report or feature request. Creates a GitHub issue automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Which page/area this relates to | |
| type | Yes | Feedback type | |
| message | Yes | Description of the bug or feature request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it creates a GitHub issue automatically, which is key behavioral info. But lacks side-effect details (e.g., authentication, rate limits, failure modes) since no annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Highly concise and front-loads purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should mention return value (e.g., issue URL). Also omits optional 'page' parameter explanation. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so description adds no extra meaning. Baseline of 3 applies per rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb (submit) and resource (bug report/feature request, GitHub issue). It differentiates from all sibling tools which focus on account, model, config, and look operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly indicates use for bugs or features, but no explicit when-not-to-use or alternatives. However, siblings don't overlap, so context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_get_configGet ConfigA
Get the full merged scene config for a model (look + layout + overrides).
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | Model ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states it retrieves data. It does not disclose whether authentication is required, rate limits, side effects, or return behavior. For a read operation, more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the key action and result. No wasted words, but could include more detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description is mostly adequate. It specifies the scope (merged scene config) and components (look, layout, overrides). Some examples or output hints would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (model_id). The description adds no additional semantic meaning beyond the schema's string type, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool gets the full merged scene config for a model, specifying it includes look, layout, and overrides. This clearly distinguishes it from siblings like vitrine_set_config (set config) and vitrine_model_info (model metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description implies it is for retrieving config, but lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_get_embedGet Embed CodeA
Get ready-to-paste HTML embed code for a published model.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | Model ID (must be published) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the output is 'HTML embed code' but omits side effects, authentication requirements, or error conditions (e.g., what happens if the model is not published). This is insufficient for an agent to safely invoke the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no redundant words. It is front-loaded and conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description sufficiently indicates what the tool returns. It lacks a note about authentication or authorization, but overall it is adequate for an agent to understand when to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described as 'Model ID (must be published)'. The description adds no additional meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('ready-to-paste HTML embed code for a published model'). It distinguishes from sibling tools like vitrine_model_info or vitrine_publish by specifying the output is embed code, not model info or publishing status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a published model's embed code is needed, but does not explicitly state when to use or avoid this tool, nor does it compare with alternatives like vitrine_model_info. The required model_id being published is noted in the schema but not highlighted as a precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_list_hdrisList HDRIsA
List available HDRI environment presets with their slugs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description implies a read-only operation. It clearly states the action (list) and what is returned (slugs), but could mention if there are any limitations or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Action verb 'List' is front-loaded. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description adequately states the purpose and return content (slugs). Could be enhanced by noting the typical use case for environment presets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline is 4. The description adds no parameter information, but none is needed since schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists HDRI environment presets and specifies it returns slugs. It distinguishes from sibling list tools like vitrine_list_looks and vitrine_list_models by naming the resource (HDRIs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention use cases, prerequisites, or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_list_looksList LooksA
List your saved Looks (reusable scene presets).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits, but it only says 'List your saved Looks.' It does not mention whether the list is paginated, if it requires authentication, or any side effects, leaving the agent uninformed about critical behavior beyond the literal listing action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no superfluous information. It immediately conveys the purpose and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and no output schema. The description is straightforward for a list operation, but it does not specify the structure of the returned data (e.g., object fields, pagination), which would be helpful for an agent. It is minimally adequate but leaves gaps in expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema coverage is 100%, so the description adds no parameter details beyond the schema, which is expected. Baseline for 0 parameters is 4, and the description appropriately complements the schema by clarifying the outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'saved Looks', with a clarifying parenthetical about what a Look is. It distinguishes itself from sibling tools like vitrine_list_hdris and vitrine_list_models by specifying the exact entity being listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives (e.g., when to list looks vs. HDRIs or models). The description simply states the function without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_list_modelsList ModelsA
List all your Vitrine 3D models with IDs, names, and publish status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full disclosure burden. It implies a read operation but omits details like authentication requirements, ownership scope (e.g., 'your' is ambiguous), rate limits, or pagination. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, effectively communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless list tool, the description is minimally adequate but lacks usage guidance and behavioral transparency, reducing its overall completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters and 100% schema description coverage. Following baseline guidance, a 0-parameter tool earns a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'Vitrine 3D models', and specifies the output fields (IDs, names, publish status). It distinguishes from sibling tools like vitrine_list_hdris and vitrine_list_looks which list different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, limitations, or scenarios. It lacks explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_loginLog InA
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses non-obvious behavior: 'Opens a browser' (user interaction required) and 'anonymous models will be transferred to your account automatically.' This goes beyond a simple 'login' and adds valuable transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the main action. Every sentence adds value: main action, method, side effect. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and low complexity, the description is complete. It covers purpose, mechanism (browser), and side effect (model transfer). No additional details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so baseline is 4. The description adds meaningful context about what happens during login (browser interaction, model transfer) beyond what the empty schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Connect your Vitrine account' and 'Opens a browser to sign in or sign up.' This provides a specific verb and resource, and distinguishes it from siblings like vitrine_logout and vitrine_account_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to authenticate) but does not explicitly state when to use versus alternatives like vitrine_logout or vitrine_account_info. The mention of 'anonymous models' gives context but no direct guidance on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_logoutLog OutA
Remove saved credentials. You'll start fresh as anonymous on next use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, but the description clearly discloses the behavioral impact: removing credentials and starting fresh as anonymous. This is sufficient for a simple logout action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information, front-loaded with the action (Remove saved credentials). Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and no output schema. The description fully explains its purpose and effect, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description doesn't need to add parameter details. Baseline of 4 applies as no information is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes saved credentials and sets the user as anonymous, distinguishing it from sibling tools like vitrine_login and vitrine_account_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is for logging out, but no explicit when-to-use or alternatives are mentioned. Since vitrine_login is a sibling, the agent may infer, but lack of explicit guidance lowers the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_model_infoModel InfoA
Get detailed info about a model including config, thumbnail, and model URL.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | Model ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states what the tool does without revealing whether it is read-only, requires authentication, or has side effects. The read-only nature is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's core purpose and key outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and lack of annotations, the description provides adequate context for a basic info retrieval. However, it could be improved by mentioning read-only behavior or return format, especially since no annotations are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter described as 'Model ID'. The description does not add additional context or constraints beyond the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: getting detailed info about a model, including config, thumbnail, and model URL. It distinguishes from siblings like vitrine_list_models and vitrine_delete_model by specifying retrieval of details for a single model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing detailed model info but does not explicitly mention when to use versus siblings, such as vitrine_list_models for listing or vitrine_get_config for config only. No exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_publishPublish / UnpublishC
Publish or unpublish a model. Published models are embeddable.
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | Model ID (same as showcase ID) | |
| published | Yes | true to publish, false to unpublish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It mentions 'Published models are embeddable' but lacks details on side effects, permissions required, reversibility beyond the obvious unpublish, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core purpose. It is concise but arguably too brief given the lack of annotations; however, for a simple toggle tool, it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing return value description and side effects. Without annotations or output schema, the description should disclose what the tool returns or whether it is safe. It only states the basic action and a consequence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The description adds no additional semantics for parameters themselves; the extra line about embeddability adds context about the outcome but not about the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (publish/unpublish a model) and mentions a key consequence (emebeddability). It differentiates from sibling tools like vitrine_delete_model or vitrine_upload_model by focusing on the publish toggle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like vitrine_model_info (to check status) or vitrine_delete_model (to remove). No prerequisites or context about when publishing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_set_configSet ConfigA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | SceneConfigPatch — only include fields to change | |
| model_id | Yes | Model ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly indicates a patch operation and lists common adjustable fields. While it doesn't detail side effects or authorization needs, the patch semantics are adequately conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a list and a reference. Front-loaded with the action 'Apply a config patch to a model.' No redundant words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested config object, no output schema, no annotations), the description covers purpose, usage, and common fields. It points to the schema for full details. Could mention return behavior, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The description adds significant value by listing common config fields (bg_mode, bloom_enabled, etc.) and referencing vitrine_config_schema, which is not present in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply a config patch to a model', using a specific verb and resource. It distinguishes from siblings like vitrine_get_config and vitrine_config_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Only include fields you want to change' indicates a partial update. Also suggests using vitrine_config_schema to see all available fields, directing the agent to the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vitrine_upload_modelUpload ModelB
Upload a GLB/glTF file to Vitrine. Provide the absolute file path on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name for the model | |
| file_path | Yes | Absolute path to the GLB file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states the action, lacking details on side effects, authentication, size limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file upload tool, missing details like accepted formats (though implied), file existence check, return value, and success/failure indicators. Lacks completeness given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds the absolute path requirement, which is useful but not extensive. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (upload), the resource (GLB/glTF file to Vitrine), and the requirement (absolute file path). It distinguishes from sibling tools like vitrine_delete_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or not use this tool vs alternatives. No prerequisites or conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.1.0- Added
vitrine_account_info - Added
vitrine_apply_look - Added
vitrine_config_schema - Added
vitrine_create_look - Added
vitrine_delete_model - Added
vitrine_feedback - Added
vitrine_get_config - Added
vitrine_get_embed - Added
vitrine_list_hdris - Added
vitrine_list_looks - Added
vitrine_list_models - Added
vitrine_login - Added
vitrine_logout - Added
vitrine_model_info - Added
vitrine_publish - Added
vitrine_set_config - Added
vitrine_upload_model
17 tool updates
v1.0.0- Removed
vitrine_account_info - Removed
vitrine_apply_look - Removed
vitrine_config_schema - Removed
vitrine_create_look - Removed
vitrine_delete_model - Removed
vitrine_feedback - Removed
vitrine_get_config - Removed
vitrine_get_embed - Removed
vitrine_list_hdris - Removed
vitrine_list_looks - Removed
vitrine_list_models - Removed
vitrine_login - Removed
vitrine_logout - Removed
vitrine_model_info - Removed
vitrine_publish - Removed
vitrine_set_config - Removed
vitrine_upload_model
17 tool updates
v0.2.1- First observed
vitrine_account_info - First observed
vitrine_apply_look - First observed
vitrine_config_schema - First observed
vitrine_create_look - First observed
vitrine_delete_model - First observed
vitrine_feedback - First observed
vitrine_get_config - First observed
vitrine_get_embed - First observed
vitrine_list_hdris - First observed
vitrine_list_looks - First observed
vitrine_list_models - First observed
vitrine_login - First observed
vitrine_logout - First observed
vitrine_model_info - First observed
vitrine_publish - First observed
vitrine_set_config - First observed
vitrine_upload_model
TDQS
Scored across 17 tools
Each tool targets a clearly distinct operation: model CRUD, config management, looks, auth, embedding, and feedback. Even closely related tools like set_config and apply_look are differentiated by whether you are patching config directly or using a preset.
All tools share the consistent vitrine_ prefix and snake_case, but the verb-noun pattern is not uniform. Some tools are verb-first (list_models, get_config), others are noun phrases (model_info, config_schema, account_info), and a few are bare verbs (publish, login, logout, feedback).
At 17 tools, the set is slightly above the ideal 3–15 range, but each tool serves a distinct purpose and covers the main workflows for a 3D model management server. No tool feels redundant or unnecessary, so the count is reasonable despite being a bit heavy.
The surface covers core model CRUD, configuration, publishing, embedding, looks, auth, and account info well. Minor gaps exist, such as no delete or update operation for looks and no explicit model metadata update, but these do not break the primary use cases.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Related MCP Servers
- AlicenseBqualityFmaintenanceA server that enables interaction with Square's API via Goose, supporting queries for locations, customers, and more with context preservation and MCP-compliant responses.124MIT
- -
- FlicenseNot gradedqualityDmaintenanceAn MCP server for managing and publishing 3D files using S3-compatible storage providers like Cloudflare R2 and AWS S3. It enables users to upload models, generate interactive 3D viewers, and manage temporary access via presigned URLs.-
- AlicenseAqualityNot gradedmaintenanceAutomate AliExpress/Alibaba dropshipping product import to Shopify or Wix via DSers. 7 tools for bulk import, variant editing, pricing rules, and multi-store push.1329 npm26-