Skip to main content
Glama

Show a live 3D model

show_model
Read-onlyIdempotent

Shows one interactive 3D model from world.lapla.si in the conversation, opening at the chapter that answers the user’s question; the user can turn it, step through its chapters and try its lab. Use it after search_models with the slug and chapter (and params) it returned, or when the user names a plate. Also returns a short text summary and the plate’s link, for clients that show no UI.

Input Schema

NameRequiredDescriptionDefault
labNoOpen at the lab, the chapter where the user can change the settings, with its panel open. Only when the user asks to experiment or to change a setting. (In a chat’s inline card the panel starts folded, one tap away; full screen opens it.)
langNozh (Chinese) or en (English).
slugYesThe plate id from search_models (e.g. "seasons").
paramsNoLab settings by id, from search_models or list_chapters: a number for a slider, an option id for a choice, true/false for a toggle.
chapterNoThe chapter id to open at, from search_models or list_chapters (e.g. "tilt"). Default: the cover.

Output Schema

NameRequiredDescriptionDefault
urlYesThe plate’s page on world.lapla.si.
cardYesThe plate’s card picture, if it has one.
hallYesThe hall of the site the plate is in.
langYesThe language of the texts: zh or en.
slugYesThe plate id, for show_model and list_chapters.
plateYesThe plate’s number on the site (e.g. "05", "F07").
titleYes
paramsYesLab settings by id.
chapterYes
summaryYes
chaptersYes
embedUrlYesThe embed page the UI shows.
descriptionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / lab / description
      Previous value: -"Open the lab panel."New value: +"Open at the lab, the chapter where the user can change the settings, with its panel open. Only when the user asks to experiment or to change a setting. (In a chat’s inline card the panel starts folded, one tap away; full screen opens it.)"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "card": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "The plate’s card picture, if it has one."
      +    },
      +    "chapter": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "id": {
      +          "description": "The chapter the model opens at.",
      +          "type": "string"
      +        },
      +        "title": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "title"
      +      ],
      +      "type": "object"
      +    },
      +    "chapters": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "title"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "description": {
      +      "type": "string"
      +    },
      +    "embedUrl": {
      +      "description": "The embed page the UI shows.",
      +      "type": "string"
      +    },
      +    "hall": {
      +      "description": "The hall of the site the plate is in.",
      +      "type": "string"
      +    },
      +    "lang": {
      +      "description": "The language of the texts: zh or en.",
      +      "enum": [
      +        "zh",
      +        "en"
      +      ],
      +      "type": "string"
      +    },
      +    "params": {
      +      "additionalProperties": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "boolean"
      +          }
      +        ]
      +      },
      +      "description": "Lab settings by id.",
      +      "type": "object"
      +    },
      +    "plate": {
      +      "description": "The plate’s number on the site (e.g. \"05\", \"F07\").",
      +      "type": "string"
      +    },
      +    "slug": {
      +      "description": "The plate id, for show_model and list_chapters.",
      +      "type": "string"
      +    },
      +    "summary": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "The plate’s page on world.lapla.si.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "slug",
      +    "plate",
      +    "title",
      +    "summary",
      +    "hall",
      +    "url",
      +    "lang",
      +    "description",
      +    "chapter",
      +    "chapters",
      +    "params",
      +    "embedUrl",
      +    "card"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds behavior they cannot express: it renders an interactive inline UI the user can rotate, page through, and run a lab in, and it falls back to 'a short text summary and the plate's link, for clients that show no UI.' That dual-mode output disclosure is exactly the kind of context an agent needs to predict the call's effect on the conversation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the tool does and what the user can do with it, then the call-ordering guidance. Slightly dense but no sentence is filler; the UI-fallback clause is long but earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't enumerate return fields, and annotations cover the safety profile; the description still supplies the chained-call workflow, the interactive surface, and the no-UI fallback. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter carries a rich, example-bearing description (slug example 'seasons', chapter example 'tilt', lab's panel semantics, params' value typing). The description only restates the source of slug/chapter/params ('it returned'), adding marginal meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource ('Shows one interactive 3D model from world.lapla.si in the conversation') with the added behavioral scope of opening at the answering chapter. It is clearly distinct from search_models (discovery) and list_chapters (enumeration), so an agent can route without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the prerequisite/alternative workflow: 'Use it after search_models with the slug and chapter (and params) it returned, or when the user names a plate.' That covers both the chained-call case and the direct-trigger case. It stops short of stating when not to call it (e.g. when no slug is known and search_models has not run).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.