Skip to main content
Glama

Make Viewer

make_viewer

Build a standalone Three.js HTML viewer with the 3D model embedded as a data URI, so you can share one file without a server, CORS setup, or hosting.

Instructions

Build a single self-contained Three.js HTML page with the model embedded.

The mesh is embedded as a data URI, so the page needs no server, no CORS and no hosting — send the file to anyone. Note that three.js itself loads from a CDN by default: for an air-gapped machine, set FORGE3D_THREE_URL to a local mirror before building the page. For embedding inside an existing web app, use the forge3d-viewer custom element instead (viewer_assets/forge3d-viewer.js).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "path": "<path>"
    },
    "name": "make_viewer"
  }
}

Input Schema

NameRequiredDescriptionDefault
pathYes
specNo
titleNo
out_htmlNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.7

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the mesh is a data URI (no server/CORS/hosting) and that three.js loads from a CDN by default, which is real behavioral context. However, it never says that this writes a file, where the file lands without `out_html`, or whether an existing file is overwritten.

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?

Three tight sentences, front-loaded with what the tool produces before the caveats. Every sentence carries information, though the parenthetical file path for the custom element is slightly in the weeds for a tool-selection description.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the artifact behavior is well covered. The significant remaining hole is the four undocumented input parameters, which leaves the definition incomplete for a tool whose parameters govern the output path and scene spec.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, so the description must compensate and it largely does not. It never mentions `path`, `spec`, `title`, or `out_html`; the only hints are indirect ('the model' for path, 'the page' for out_html). An agent must read the bare schema to learn what any parameter does.

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

Purpose4/5

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

The first sentence gives a concrete verb and artifact: 'Build a single self-contained Three.js HTML page with the model embedded.' That is far more specific than the name alone. It does not distinguish itself from the sibling 'make_scene_viewer', which an agent would plausibly confuse it with, so it stops short of a 5.

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?

It gives two conditional branches: use the `forge3d-viewer` custom element when embedding in an existing web app, and set FORGE3D_THREE_URL for air-gapped machines. That is genuine when-to-use guidance for the output artifact. It never states when to choose this over make_scene_viewer, so the sibling-selection gap remains.

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