Skip to main content
Glama

get_task_status

Check the status of a 3D model generation task to determine completion, failure, or progress, requiring multiple calls until final status is reached.

Instructions

Get the status of a 3D model generation task.

IMPORTANT: This tool checks the status of a task started by create_3d_model_from_text.
You may need to call this tool MULTIPLE TIMES until the task completes.

Typical workflow:
1. Call this tool with the task_id from create_3d_model_from_text
2. Check the status in the response:
   - If status is SUCCESS, the task is complete and you can use the pbr_model_url
   - If status is FAILED, CANCELLED, BANNED, or EXPIRED, the task failed
   - If status is anything else, the task is still in progress
3. If the task is still in progress, wait a moment and call this tool again

Args:
    task_id: The ID of the task to check (obtained from create_3d_model_from_text).

Returns:
    A dictionary containing the task status and other information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
task_idYes

Implementation Reference

  • The main handler function for the 'get_task_status' tool. It is decorated with @mcp.tool(), which registers it as an MCP tool. The function retrieves the status of a 3D model generation task from the Tripo API, handles different status outcomes, and returns a dictionary with status, progress, and relevant URLs or messages.
    async def get_task_status(task_id: str) -> Dict[str, Any]:
        """
        Get the status of a 3D model generation task.
    
        IMPORTANT: This tool checks the status of a task started by create_3d_model_from_text.
        You may need to call this tool MULTIPLE TIMES until the task completes.
    
        Typical workflow:
        1. Call this tool with the task_id from create_3d_model_from_text
        2. Check the status in the response:
           - If status is SUCCESS, the task is complete and you can use the pbr_model_url
           - If status is FAILED, CANCELLED, BANNED, or EXPIRED, the task failed
           - If status is anything else, the task is still in progress
        3. If the task is still in progress, wait a moment and call this tool again
    
        Args:
            task_id: The ID of the task to check (obtained from create_3d_model_from_text).
    
        Returns:
            A dictionary containing the task status and other information.
        """
        # Get the API key from environment variable
        # api_key = os.environ.get("TRIPO_API_KEY")
        get_blender_connection()
        api_key = _tripo_apikey
        if not api_key:
            raise ValueError(
                "It may take some more time to correctly re-enter the tripo function. You can first check the scene and then try the tripo function again later"
            )
    
        # Create the Tripo client
        async with TripoClient(api_key=api_key) as client:
            # Get task status
            task = await client.get_task(task_id)
    
            # Ensure task is not None
            if task is None:
                raise ValueError(
                    f"Failed to retrieve task information for task ID: {task_id}"
                )
    
            # Create result dictionary
            result = {
                "task_id": task_id,
                "status": str(task.status),
                "progress": task.progress,
            }
    
            # Add output fields if task is successful and output is available
            if task.status == TaskStatus.SUCCESS and task.output:
                result.update(
                    {
                        "base_model_url": task.output.base_model,
                        "model_url": task.output.model,
                        "pbr_model_url": task.output.pbr_model,
                        "rendered_image_url": task.output.rendered_image,
                        "message": "Task completed successfully! You can now use the pbr_model_url.",
                        "next_step": "Use the pbr_model_url to access the 3D model, download it through import_tripo_glb_model tool",
                    }
                )
    
                if not task.output.pbr_model:
                    result["warning"] = (
                        "Model generated but PBR model URL is not available."
                    )
            elif task.status == TaskStatus.SUCCESS:
                result["message"] = (
                    "Task completed successfully but no output data is available."
                )
                result["next_step"] = (
                    "Try creating a new model with a different description."
                )
            elif task.status in (
                TaskStatus.FAILED,
                TaskStatus.CANCELLED,
                TaskStatus.BANNED,
                TaskStatus.EXPIRED,
            ):
                result["message"] = f"Task failed with status: {task.status}"
                result["next_step"] = (
                    "Try creating a new model with a different description."
                )
            else:
                result["message"] = (
                    f"Task is still in progress. Current status: {task.status}, Progress: {task.progress}%"
                )
                result["next_step"] = (
                    "IMPORTANT: You must call get_task_status again with this task_id to continue checking progress."
                )
                result["wait_message"] = (
                    "3D model generation typically takes 3-5 minutes. Please be patient and keep checking."
                )
    
            return result

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VAST-AI-Research/tripo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server