Skip to main content
Glama
extentos

extentos

getPlatformInfo

Retrieves smart glasses platform metadata: library version and available SDK capabilities to guide integration.

Instructions

Return static platform metadata: library version + the list of SDK capabilities the glasses expose. TWO INTEGRATION PATHS — decide which one BEFORE scaffolding. Voice apps (assistant, transcriptions, recordDiscrete, speak, audio streams) reach the glasses through the phone's own Bluetooth audio routing: NO vendor SDK, NO vendor credentials, NO connection page, NO pairing flow — and the complete agent runtime (turn-taking, barge-in, tool calling, local + cloud models) works there. Only CAMERA and DISPLAY require a vendor integration. If the developer hasn't said they need camera or display, they are on the voice path — do NOT send them through Meta account setup, a Developer Center registration, or a GitHub PAT they don't need. Phase 4 assistant runtime (glasses.assistant.start(provider) { tool(name, description) { body -> ToolResult } }) is the canonical voice-assistant API — the model owns wake/turn-taking/intent/confirmation, the customer writes tool bodies that act on app state. Lower-level primitives are still surfaced for fine-grained control (audio.transcriptions, audio.recordDiscrete, audio.speak, audio.audioChunks, camera.capturePhoto, camera.videoFrames, toggles, connection.state, …). The right first call for any new task — primes the agent on what primitives are available before writing handler code. Default response is COMPACT — capability names and categories only — keeping the typical first-call cost ~2KB. Per-feature call shape + idiom + gotchas comes from getCapabilityGuide(feature); full compositional patterns (assistant_agent_loop for the canonical glasses.assistant.start loop; voice_qa_assistant for the manual composition) from getCodeExample(pattern); conceptual docs from searchDocs(topic: 'assistant_runtime') for the assistant surface, or searchDocs(topic: 'voice_integration') for the lower-level primitives. Pass expand: ['capabilities.full'] for the machine-readable catalog with params/payload/requires/constraints. glasses is optional — defaults to meta; android_xr is also supported (preview) and meta_rayban is accepted as a legacy alias. Note the vendorless baseline needs no value here at all — voice apps run without a vendor; pass it explicitly for forward compatibility once additional vendors land. Already built on raw Meta DAT? Call getMigrationGuide — it maps your existing DAT symbols to Extentos primitives and gives an ordered cutover plan, rather than starting from scratch. USE at session start before scaffolding or writing handler code. DON'T USE for what's installed in the project (use inspectIntegration).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
expandNoOptional opt-in expansions on top of the compact default. 'schema' = full JSON Schema document. 'capabilities.full' = per-primitive params/payload/requires/constraints. 'capabilities.advanced' = droppedPrimitives + futurePrimitives (informational only).
glassesNoTarget glasses vendor. Canonical: 'meta'. 'meta_rayban' is a legacy alias (same vendor) kept for compatibility. 'android_xr' is EXPERIMENTAL/PREVIEW (Android XR projected glasses — no shipping hardware) and 'brilliant' is PREVIEW (Brilliant Labs Halo and Frame — the Extentos BLE transport is built on BOTH platforms and Halo is orderable, but the vendor says first units ship early August 2026, so nothing has run on a device and there is no emulator either). For both, simulator sessions CAN be minted, so an app's behaviour under that device identity is testable today; code scaffolding remains Meta-only. ⚠️ PLATFORM CONSTRAINT: 'android_xr' is Android-ONLY and minting it with platform:'ios' is REFUSED — Google's model is a projected activity, which is an Android activity, so no iOS transport can exist and simulating one would teach your app a combination no device can be. 'meta' and 'brilliant' mint on either platform.
sectionsNo
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses that the default response is 'COMPACT' (~2KB), that expand can opt into 'capabilities.full', that glasses is optional defaulting to meta, and that android_xr is preview. It doesn't explicitly say 'read-only' but 'return static metadata' implies no side effects. No contradiction with annotations exists.

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 long but well-structured with bold key phrases, bullets, and clear USE/DON'T USE markers. It front-loads the core purpose and then packs decision-relevant context. While it could be trimmed, each sentence earns its place by steering the agent toward correct tool selection and parameter choices.

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?

Given no output schema and no annotations, the description provides a complete picture: default response shape, expansion options, vendor defaults, integration path guidance, and pointers to related tools for feature guides, code examples, and docs. It leaves little ambiguity about what to expect and how to proceed.

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?

Schema coverage is 67% (2/3 params described). The description adds significant nuance beyond the schema for glasses ('defaults to meta', 'android_xr preview', 'meta_rayban legacy', 'vendorless baseline needs no value') and for expand (references capabilities.full and compact default). The sections parameter is not explicitly described, but its values ('version', 'capabilities') are implied by the opening line about library version and capability list.

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 opens with a clear, specific statement: 'Return static platform metadata: library version + the list of SDK capabilities the glasses expose.' This uses a specific verb and resource, and immediately distinguishes itself from sibling tools by positioning itself as the 'right first call for any new task' while pointing to getCapabilityGuide, getCodeExample, and searchDocs for deeper detail.

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?

Extremely explicit usage guidance is provided: 'USE at session start before scaffolding or writing handler code' and 'DON'T USE for what's installed in the project (use inspectIntegration).' It also describes the two integration paths (voice vs camera/display), tells the developer which path to choose based on requirements, and names alternatives like getMigrationGuide for existing Meta DAT users.

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