Skip to main content
Glama

Viewer job state

viewer_job_state
Read-onlyIdempotent

Used by the interactive 3D viewer shown next to a generation result, not for direct use: the state of one job and, once it has finished, the URL of the model file the viewer can draw plus the download links. Read-only; the conversation never needs to call it, get_job gives the same facts as text.

Input Schema

NameRequiredDescriptionDefault
job_idYesThe job id returned by generate_3d.

Output Schema

NameRequiredDescriptionDefault
errorYes
modelYesNull until the job has produced a file in a viewable format.
job_idYes
statusYespending and processing are running; success, partial, failed and canceled are final. 'partial' means some outputs finished and the rest were refunded.
outputsYes
downloadsYes
media_typeYes
is_terminalYes
library_urlYesWhere the job is kept in the web app.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • removedOutput schema / properties / downloads / items / properties / size_bytes / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / downloads / items / properties / size_bytes / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / properties / error / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "code": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "code",
      -      "message"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / library_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / library_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / model / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "format": {
      -        "enum": [
      -          "glb"
      -        ],
      -        "type": "string"
      -      },
      -      "size_bytes": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "url": {
      -        "description": "Public https URL of a file the viewer can draw.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "url",
      -      "format",
      -      "size_bytes"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "format": {
      +        "enum": [
      +          "glb"
      +        ],
      +        "type": "string"
      +      },
      +      "size_bytes": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "url": {
      +        "description": "Public https URL of a file the viewer can draw.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url",
      +      "format",
      +      "size_bytes"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Adds behavioral context beyond the annotations: the result is only complete after the job finishes, and the payload includes a viewer-usable model URL and download links. 'Read-only' largely restates readOnlyHint=true, but the lifecycle timing ('once it has finished') is genuinely useful and not in the annotations.

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?

Front-loads the ownership constraint and the return contents in one tight sentence, then closes with the routing note. Dense but every clause carries information; only the 'Read-only' clause is slightly redundant with the annotations.

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?

For a single-parameter read tool with a full output schema and complete annotations, the description covers who calls it, when it is meaningful, what it returns at a high level, and the preferred alternative. Nothing an agent needs in order to call it 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?

There is a single parameter and schema coverage is 100%, with the schema already explaining that job_id comes from generate_3d. The description adds no further semantics about the id, so this sits at the baseline where the schema does the work.

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?

States precisely what the tool yields: the state of a single job and, once finished, the model file URL the viewer draws plus download links. It also names its consumer (the interactive 3D viewer) and explicitly distinguishes itself from get_job, so an agent can tell the two apart without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit when-not-to-use ('not for direct use', 'the conversation never needs to call it') and names the alternative that supplies the same facts ('get_job gives the same facts as text'). No inference is required about whether the agent should select this tool.

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.

Resources