Skip to main content
Glama

Check an AI 3D generation

check_3d_generation
Read-onlyIdempotent

Check a generation started with generate_3d_model on the connected PrintPal account: status (processing, completed, failed or stalled), credit accounting, and when completed a fresh download link (valid 1 hour) for the actual delivered file. Never starts or charges a generation. Poll at the returned poll_after_seconds while status is processing; call again later for a fresh link.

Input Schema

NameRequiredDescriptionDefault
generation_uidYesgeneration_uid from generate_3d_model.

Output Schema

NameRequiredDescriptionDefault
phaseNo
promptNo
statusYes
creditsNo
downloadNo
replayedNo
settingsNo
next_stepYes
created_atNo
completed_atNo
billing_policyNo
download_errorNo
generation_uidNo
elapsed_secondsNo
poll_after_secondsNo
reference_image_urlNo
estimated_time_secondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / generation_uid / description
      Added value: +"generation_uid from generate_3d_model."
    • addedInput schema / properties / generation_uid / maxLength
      Added value: +64
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "billing_policy": {
      +      "type": "string"
      +    },
      +    "completed_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "credits": {
      +      "properties": {
      +        "amount": {
      +          "type": "integer"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "remaining": {
      +          "type": "integer"
      +        },
      +        "state": {
      +          "enum": [
      +            "reserved",
      +            "charged",
      +            "restored",
      +            "refunded",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "download": {
      +      "properties": {
      +        "expires_in_seconds": {
      +          "type": "integer"
      +        },
      +        "file_name": {
      +          "type": "string"
      +        },
      +        "format": {
      +          "type": "string"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "download_error": {
      +      "type": "string"
      +    },
      +    "elapsed_seconds": {
      +      "type": "integer"
      +    },
      +    "estimated_time_seconds": {
      +      "type": "integer"
      +    },
      +    "generation_uid": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "next_step": {
      +      "type": "string"
      +    },
      +    "phase": {
      +      "type": "string"
      +    },
      +    "poll_after_seconds": {
      +      "type": "integer"
      +    },
      +    "prompt": {
      +      "type": "string"
      +    },
      +    "reference_image_url": {
      +      "type": "string"
      +    },
      +    "replayed": {
      +      "type": "boolean"
      +    },
      +    "settings": {
      +      "properties": {
      +        "delivered_contents": {
      +          "type": "string"
      +        },
      +        "delivered_format": {
      +          "type": "string"
      +        },
      +        "format": {
      +          "type": "string"
      +        },
      +        "input": {
      +          "enum": [
      +            "text",
      +            "image"
      +          ],
      +          "type": "string"
      +        },
      +        "quality": {
      +          "type": "string"
      +        },
      +        "resolution": {
      +          "type": "string"
      +        },
      +        "texture": {
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "status": {
      +      "enum": [
      +        "starting",
      +        "processing",
      +        "completed",
      +        "failed",
      +        "stalled"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "next_step"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing the status vocabulary (processing, completed, failed, stalled), credit accounting, link expiry of one hour, and that each call produces a fresh link. The polling contract via poll_after_seconds is behavior an agent could not infer from the schema or annotations.

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

Conciseness5/5

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

Front-loaded with the core purpose, then the return contents, then the non-charging guarantee and polling rule. Every sentence carries operational information with no filler.

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?

Despite an output schema existing, the description still supplies the statuses, link lifetime, and polling cadence an agent needs to drive the poll loop correctly. Nothing needed to call or re-call this tool 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 coverage is 100% and the sole parameter's schema description already says 'generation_uid from generate_3d_model'. The description reinforces the provenance but adds no format, length, or constraint detail beyond the schema, so 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?

States a specific verb and resource ('Check a generation started with generate_3d_model') and enumerates exactly what is returned: status values, credit accounting, and a fresh download link. This clearly distinguishes it from generate_3d_model, prepare_3d_generation, and open_3d_generator_link.

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?

Gives explicit operating guidance: 'Never starts or charges a generation', poll at the returned poll_after_seconds while processing, and call again later for a fresh link. The when-not condition and polling behavior are clear, though it stops short of explicitly naming generate_3d_model as the alternative for starting work.

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