Skip to main content
Glama

stage_get_scene

Retrieve complete 3D scene data including objects, shots, animations, and configuration from the chuk-mcp-stage server for scene analysis or rendering workflows.

Instructions

Get complete scene data.

Returns the full scene definition including all objects, shots,
animations, and configuration.

Args:
    scene_id: Scene identifier

Returns:
    GetSceneResponse with complete Scene object

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scene_idYes

Implementation Reference

  • The stage_get_scene tool handler - gets complete scene data including objects, shots, animations, and configuration. Decorated with @requires_auth() and @tool for MCP registration.
    @requires_auth()
    @tool  # type: ignore[arg-type]
    async def stage_get_scene(scene_id: str) -> GetSceneResponse:
        """Get complete scene data.
    
        Returns the full scene definition including all objects, shots,
        animations, and configuration.
    
        Args:
            scene_id: Scene identifier
    
        Returns:
            GetSceneResponse with complete Scene object
        """
        manager = get_scene_manager()
        scene = await manager.get_scene(scene_id)
        return GetSceneResponse(scene=scene)
  • GetSceneResponse schema - defines the output structure for stage_get_scene tool, containing a complete Scene object.
    class GetSceneResponse(BaseModel):
        """Response containing complete scene."""
    
        scene: Scene
  • SceneManager.get_scene method - retrieves a scene by ID from cache or loads from storage. Used by the stage_get_scene handler.
    async def get_scene(self, scene_id: str) -> Scene:
        """Get scene by ID.
    
        Args:
            scene_id: Scene identifier
    
        Returns:
            Scene object
    
        Raises:
            ValueError: If scene not found
        """
        # Check cache first
        if scene_id in self._scenes:
            return self._scenes[scene_id]
    
        # Check if we have namespace mapping
        if scene_id not in self._scene_to_namespace:
            raise ValueError(f"Scene not found: {scene_id}")
    
        # Load from storage
        namespace_id = self._scene_to_namespace[scene_id]
        scene = await self._load_scene(namespace_id)
        self._scenes[scene_id] = scene
        return scene
  • get_scene_manager helper function - gets or creates the global SceneManager singleton used by the stage_get_scene handler.
    def get_scene_manager() -> SceneManager:
        """Get or create the global scene manager."""
        global _scene_manager
        if _scene_manager is None:
            _scene_manager = SceneManager()
        return _scene_manager
  • Scene schema - defines the complete 3D scene structure including objects, environment, lighting, shots, and baked animations returned by stage_get_scene.
    class Scene(BaseModel):
        """Complete 3D scene definition."""
    
        id: str = Field(description="Unique scene identifier")
        name: Optional[str] = None
        metadata: SceneMetadata = Field(default_factory=SceneMetadata)
    
        # Scene content
        objects: dict[str, SceneObject] = Field(default_factory=dict)
        environment: Environment = Field(default_factory=Environment)
        lighting: Lighting = Field(default_factory=Lighting)
    
        # Cinematography
        shots: dict[str, Shot] = Field(default_factory=dict)
    
        # Physics integration
        baked_animations: dict[str, BakedAnimation] = Field(default_factory=dict)
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation (implying read-only) and describes what data is returned, but doesn't cover important behavioral aspects like whether it requires authentication, rate limits, error conditions, or how it handles missing scenes. For a tool with zero annotation coverage, this leaves significant gaps.

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?

The description is perfectly structured and concise: a clear purpose statement, followed by a detailed returns section, then parameter documentation. Every sentence earns its place with no wasted words. It's front-loaded with the most important information (what the tool does).

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?

Given the tool's moderate complexity (single parameter retrieval operation) and lack of both annotations and output schema, the description does an adequate but incomplete job. It covers the purpose and parameter semantics well, but lacks behavioral context and return value details that would be important for an agent to use this tool effectively. No output schema exists, so the description should ideally explain the return format more thoroughly.

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

Parameters4/5

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

The description explicitly documents the single parameter ('scene_id: Scene identifier'), adding crucial semantic meaning beyond the schema's basic type information. With 0% schema description coverage, this parameter documentation in the description fully compensates for the schema gap. The description clearly explains what scene_id represents.

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 description clearly states the tool's purpose: 'Get complete scene data' with specific details about what it returns (scene definition including objects, shots, animations, configuration). It distinguishes itself from siblings like stage_get_shot (which gets only shot data) and stage_create_scene (which creates rather than retrieves). However, it doesn't explicitly contrast with all siblings, so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use stage_get_scene instead of stage_get_shot (which might retrieve only shot data) or other retrieval methods. There's no context about prerequisites, timing, or exclusions.

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

Install Server

Other Tools

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/chrishayuk/chuk-mcp-stage'

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