Skip to main content
Glama
extentos

extentos

setSimDevice

Change the simulated glasses device model to drive display capability and device identity. Use it to test both branches of capability-gated features headless, confirming graceful degradation when no display exists.

Instructions

Switch the simulated glasses DEVICE MODEL — one of the eight simulatable models: rayban_meta, oakley_meta_hstn, oakley_meta_vanguard, rayban_meta_optics, meta_glasses (camera + audio, NO display), rayban_display (display + Neural Band), and the EXPERIMENTAL Android XR pair — android_xr_audio_glasses (camera + audio, no display) and android_xr_display_glasses (adds a display, driven by the temple touchpad, panel 450x394 rather than Meta's 600x600 square). The selected device's capability profile drives glasses.display.isAvailable on the connected app, so this is how an agent tests BOTH branches of a capability-gated feature headless: set rayban_display to exercise the display path (glasses.display.show renders), set any no-display model to verify the graceful degradation (the app's isAvailable guard declines; show() no-ops). The model identity ALSO surfaces to the app as glasses.device.type (and in the assistant's glasses-state context), so per-model polish — e.g. an Oakley-specific default voice — is testable by switching between models that share the same capability profile. Mirrors the sim's device dropdown — the change persists on the session AND is pushed live to a connected app (the gate flips without a reconnect), and a device_changed event lands in getEventLog(filter:'lifecycle'). USE before driving a display flow to pin which device you're testing; pair with getDisplayState / injectInput. DON'T USE for the camera scene (setSimVideo) or voice (injectTranscript).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceYesThe device model to simulate. Display-capable: 'rayban_display' (Meta, Neural Band, 600x600 panel) and 'android_xr_display_glasses' (Android XR, temple touchpad, 450x394 panel) — on both, glasses.display.isAvailable → true and display trees render. The Meta no-display models — 'rayban_meta' (Gen 1/2), 'oakley_meta_hstn', 'oakley_meta_vanguard', 'rayban_meta_optics' (prescription-first Gen 2), 'meta_glasses' (the 2026 Meta-branded line) — share the camera+audio profile but carry distinct identities (glasses.device.type). The two android_xr models switch the session's VENDOR, which is how you check the same code path under a second vendor — but ONLY on an Android session: switching an iOS session onto an android_xr device is REFUSED (vendor_platform_unsupported), because a projected activity is an Android activity and no iOS transport can exist. The brilliant models switch vendor on either platform. A new session defaults to its vendor's default model (rayban_meta for meta).
sessionIdYes
Behavior5/5

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

With no annotations provided, the description carries the full burden and succeeds. It discloses persistence ('change persists on the session'), live propagation ('pushed live to a connected app without a reconnect'), event generation ('device_changed event lands in getEventLog'), and capability effects ('drives glasses.display.isAvailable'). It also explains the no-display degradation behavior, making the tool's side effects highly transparent.

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 dense and information-rich, with every sentence providing actionable detail. It is quite long and runs as a single unbroken block, and there is some repetition (e.g., display/no-display classification). It is appropriately sized for the tool's complexity but not maximally scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is highly complete: purpose, usage, behavior, persistence, eventing, and alternatives are all covered, which is impressive for a tool with no annotations or output schema. The omission of the brilliant models and the platform-switching refusal behavior (noted only in the schema) is a minor gap, and there is no mention of the return value, but overall the context is robust.

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?

The description adds meaningful context for the 'device' parameter (display panel differences, testing implications, identity surface), going beyond the schema. However, it omits two valid enum values (brilliant_halo, brilliant_frame) and incorrectly states only 'eight' simulatable models, creating an inconsistency with the schema. sessionId gets no explanatory value, but it is a standard identifier.

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 clearly states the action ('Switch the simulated glasses DEVICE MODEL') and the resource ('simulated glasses'), making the tool's purpose immediately obvious. It also distinguishes the tool from siblings by explicitly saying DON'T USE for camera scene (setSimVideo) or voice (injectTranscript), which is strong differentiation. The minor miscount of 'eight' models versus the ten in the schema does not obscure the core purpose.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance ('USE before driving a display flow', 'test BOTH branches of a capability-gated feature headless') and when-not-to-use ('DON'T USE for the camera scene or voice'), even naming alternative tools. This is the gold standard for usage direction.

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/extentos/mcp-server'

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