Skip to main content
Glama
akontadakis
by akontadakis

observer_points

Detects seats and screens in an OBJ room model to generate eye-level observer points for lighting analysis, with fallbacks for missing geometry.

Instructions

Workstation eye-point observers from an OBJ room.

Auto-detects seat objects (seat_pattern) paired to screen objects (screen_pattern) by trailing suffix: eye = seat centroid at floor-top+eye_height, gaze = eye->screen centroid (dz=0). Fallback when no screen: direction_fallback in {window, azimuth, sweep}. No seats: position_fallback. Pass workstations=[{eye:[x,y], target:[x,y]|azimuth}] to bypass detection. Returns observers + glare_views (DGP fisheye) + a .pts. material_map OR sidecar required. clip_to_footprint (default True) does NOT move observers (they are furniture-anchored) — it only reports, via a warning, any observer whose eye position falls outside the floor slab.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
unitsNo
sidecarNo
sweep_nNo
up_axisNo
obj_pathYes
work_dirNo
write_ptsNoobservers.pts
eye_heightNo
material_mapNo
seat_patternNo(?i)chair.*seat|seat
workstationsNo
screen_patternNo(?i)disp.*panel|screen|monitor|display
north_angle_degNo
fallback_azimuthNo
clip_to_footprintNo
position_fallbackNoroom_center
direction_fallbackNowindow

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does well: it discloses the non-obvious clip_to_footprint behavior (does NOT move observers, only warns), the material_map OR sidecar requirement, the fallback chain, and the return payload. This goes well beyond what the schema conveys.

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?

The description is information-dense with the purpose front-loaded and every sentence carrying meaning. It loses a point for structural jumbling — the return statement and 'material_map OR sidecar required' are awkwardly dropped mid-paragraph rather than cleanly separated — but there is no fluff.

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?

For a complex 17-param tool with 0% schema coverage and no annotations, the description covers the core algorithm, fallbacks, bypass, and key behavioral caveats. An output schema exists so return values are partially covered. The main gaps are the six unexplained parameters and the absence of error behavior, leaving the agent to guess at units, sweep_n, and coordinate conventions.

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 0%, so the description must compensate. It meaningfully explains workstations (with exact format), eye_height (floor-top+eye_height), direction_fallback (in {window, azimuth, sweep}), position_fallback, clip_to_footprint, and the material_map/sidecar requirement. But it leaves several params unexplained (units, up_axis, sweep_n, north_angle_deg, fallback_azimuth, work_dir), so compensation is partial for a 17-parameter tool.

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?

The description states a specific purpose: generating workstation eye-point observers (with gaze vectors) from an OBJ room. It clearly distinguishes itself from sibling tools like workplane_grid, photosensors, and sensors by describing the pairing of seat to screen objects and the eye/gaze computation. The verb and resource are specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use it — when workstation eye-point observers and glare views are needed — and details the auto-detection/fallback/bypass logic. However, it never explicitly names alternatives or states when NOT to use it, leaving differentiation from the many related geometry tools (workplane_grid, sensors, photosensors) implicit rather than explicit.

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