Skip to main content
Glama

set_camera

Create or update a camera for render_final by placing it explicitly via location and look_at, or by framing named objects; set azimuth, elevation, fov, ortho scale, and roll.

Instructions

Create or update a camera for render_final. Place it one of two ways. Explicit: location and look_at in world metres; on an existing camera, one of them keeps the other. Framed: frame is a list of object names (with children); the camera stands so their box fits the view. azimuth (degrees around Z: 0 looks from the front at -Y, 90 from +X; 35 when empty) and elevation (above the horizon; 20 when empty) set the side; margin is spare room (1.15 = 15%); look_at overrides the aim point. fov_deg is the vertical field of view and is applied on every call, so repeat it on updates. fov_deg=0 or an ortho_scale (metres across) makes it orthographic. roll_deg rolls about the view axis. make_active sets the scene camera. Returns the location, the forward vector and the projection. For a camera that matches a photo use match_camera.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNocamera
frameNo
marginNo
azimuthNo
fov_degNo
look_atNo
locationNo
roll_degNo
elevationNo
make_activeNo
ortho_scaleNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it warns that fov_deg is applied on every call so must be repeated on updates, notes look_at overrides the aim point, states make_active sets the scene camera, and documents the return payload (location, forward vector, projection).

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 purpose and the two placement modes, and every sentence conveys a distinct rule. It is dense and somewhat long, but there is little pure 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?

For a complex 11-parameter mutation tool with no annotations and no output schema, the description covers placement logic, defaults, side effects, output, and the sibling alternative. Nothing essential for correct invocation appears missing.

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

Parameters5/5

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

Schema description coverage is 0% across 11 params, so the description must compensate and largely does: it defines location/look_at semantics, frame, azimuth degrees with the empty default (35), elevation (20), margin (1.15 = 15%), fov_deg/ortho_scale orthographic behavior, roll_deg, and make_active.

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+resource ('Create or update a camera') and ties it to a downstream purpose ('for render_final'). It also distinguishes itself from the sibling match_camera at the end, so an agent can route correctly 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 Guidelines4/5

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

Explains the two placement modes (explicit vs framed) and when each applies, and explicitly routes to match_camera 'for a camera that matches a photo.' It lacks explicit when-not conditions relative to other scene/view tools, but the context is clear.

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