Reference

MCP tools reference

The complete, always-current catalog of @extentos/mcp-server tools — 38 deterministic tools across 10 categories for discovering smart-glasses capabilities, scaffolding native iOS/Android integrations, driving the browser simulator, and gating production readiness. Generated from the live tool registry.

Generated from source. This page is emitted from mcp-server/src/tools/definitions.ts — the exact tool registry your agent loads. It lists every tool currently shipped. The authoritative live surface is what your installed agent sees via the MCP tools/list call; this page is the static mirror for pre-install evaluation and search.

The Extentos MCP server exposes 38 deterministic tools (zero LLM inference on the Extentos side) across 10 categories. Install it with:

claude mcp add extentos -- npx -y @extentos/mcp-server@latest

Current published version and changelog: npmjs.com/package/@extentos/mcp-server. Each tool's parameters below are generated from its input schema; for the full narrative on when to reach for each, follow the per-category guide links.

Discovery & SDK reference

Learn what the glasses can do and the canonical call shape for each primitive before writing handler code — plus the migration path for apps already built on raw Meta DAT. Narrative guide: /docs/mcp-server/tools/discovery.

getPlatformInfo

Return static platform metadata: library version + the list of SDK capabilities the glasses expose.

ParameterTypeRequiredDescription
sectionsstring[] (enum)yesOne of: version, capabilities.
glassesstring (enum)noTarget glasses vendor. One of: meta, android_xr, brilliant, meta_rayban.
expandstring[] (enum)noOptional opt-in expansions on top of the compact default. One of: schema, capabilities.full, capabilities.advanced.

getCodeExample

Reference library — retrieve a complete SDK code example (Kotlin + Swift) for a use case.

ParameterTypeRequiredDescription
patternstring (enum)yesWhich compositional pattern to fetch. One of: agent_driven_e2e_full_loop, agent_test_loop, assistant_agent_loop, barge_in_speak, byok_anthropic, connection_page_setup, conversation_agent_loop, display_browse_detail, display_media_gallery, live_transcription_ui, …(+4).

getCapabilityGuide

Per-feature SDK usage guide — minimal Kotlin + Swift snippet + gotchas + which getCodeExample patterns exercise the feature.

ParameterTypeRequiredDescription
featurestring (enum)yesFeature name from getPlatformInfo.features[].name. One of: assistant_provider_openai, assistant_runtime, assistant_session_runtime, assistant_start, assistant_tool, assistant_vision, audio_chunks, cancel_speak, capture_photo, capture_video, …(+14).

getMigrationGuide

The entry point for a developer who ALREADY built their app against raw Meta DAT (the Device Access Toolkit / Wearables SDK) and wants to move onto the Extentos SDK.

ParameterTypeRequiredDescription
fromstring (enum)noWhich SDK the app is migrating FROM. One of: meta_dat.

Setup & generation

Scaffold the connection module into a host app and manage the per-project connection-page config. Narrative guide: /docs/mcp-server/tools/generation.

generateConnectionModule

One-shot project scaffold — emits the bootstrap module that wires Extentos.create(...) into the host app, build-script changes, dependencies, permissions, and the integration manifest.

ParameterTypeRequiredDescription
platformstring (enum)yesOne of: android, ios.
glassesstring (enum)yesTarget glasses vendor. One of: meta, android_xr, brilliant, meta_rayban.
appPackagestringyesThe Extentos project identity (reverse-DNS).
libraryVersionstringno
responseFormatstring (enum)noOne of: concise, detailed.
placementstring (enum)noWhere ExtentosConnectionPage should live in the app. One of: dedicated_route, settings_subscreen, bottom_tab, modal_sheet, headless.
projectPathstringnoAbsolute path to the project root.
capabilitiesstring[]noThe SDK capabilities your app uses (feature names from getPlatformInfo — e.g.

getConnectionPageConfig

Read the per-project ExtentosConnectionPage config (theming tokens + section visibility) the dashboard/server holds for an app.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id), e.g.

setConnectionPageConfig

Persist the per-project ExtentosConnectionPage config (theming tokens + section visibility) to the dashboard/server, making the app MANAGED — the dashboard/server becomes the single source of truth and the SDK fetches it at render time (se…

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
configobjectyesThe config to persist: { schemaVersion?, sections?, appearance?

regenerateConnectionPageFile

Regenerate the committed extentos.connection-page.json FROM the dashboard/server config (file ← server) — the generated mirror that makes the dashboard's tokens real in the repo and lets the app theme correctly offline.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
platformstring (enum)noDefaults to android. One of: android, ios.
projectPathstringnoAbsolute path to the project root.

adoptConnectionPageFile

Adopt the committed extentos.connection-page.json UP to the dashboard/server (file → server) — the deliberate one-time seed of an existing code/file theme into the managed config.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
platformstring (enum)noDefaults to android. One of: android, ios.
projectPathstringyesAbsolute path to the project root (required — reads app/src/main/assets/extentos.connection-page.json).
confirmbooleannoSet true to overwrite an existing, DIFFERING server config with the committed file.

Agent configuration & usage

Read or change a project's dashboard-managed assistant settings (Realtime model, voice, memory model + mode), and read its managed-gateway usage + exact cost. Account-scoped; writes are gated per-project by the MCP access grant (default Read+Write) and echo the cost impact. Narrative guide: /docs/mcp-server/tools.

getAssistantConfig

Read the per-project "Agent" (assistant) settings the dashboard holds for an app — the OpenAI Realtime model, the voice, the memory (compaction) model, and the within-session memory mode — plus the catalog of valid options for each, the da…

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id), e.g.

setAssistantConfig

Change a project's dashboard-managed "Agent" (assistant) settings via MCP — any of the OpenAI Realtime model, voice, memory (compaction) model, or within-session memory mode (PARTIAL update; pass only what you're changing).

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
realtimeModelstring (enum)noOpenAI Realtime model id. One of: gpt-realtime-2.1, gpt-realtime-2.1-mini, gpt-realtime-2, gpt-realtime-1.5, gpt-realtime-mini, grok-voice-think-fast-1.0, gemini-3.1-flash-live-preview, gemini-2.5-flash-native-audio-preview-12-2025, local-auto, local-qwen3-8b, …(+4).
voicestring (enum)noVoice id. One of: marin, cedar, ash, ballad, coral, sage, verse, alloy, echo, shimmer, …(+25).
compactionModelstring (enum)noMemory (compaction) model id. One of: gpt-4o-mini, gpt-5.4-nano, gpt-5.4-mini, gpt-5.4, gpt-5.5, gemini-3.1-pro-preview, gemini-3.5-flash, gemini-3.1-flash-lite, gemini-2.5-flash-lite, claude-opus-4-8, …(+2).
withinSessionMemorystring (enum)noWithin-session memory mode. One of: smart, basic.

listProjectSounds

List a project's named-sound library — the sounds uploaded in the dashboard's Agent section or via addProjectSound.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id), e.g.

addProjectSound

Upload a local audio file into a project's named-sound library.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id), e.g.
namestringyesThe play-by-name key, e.g.
filePathstringyesPath to a local MP3/M4A/AAC/WAV file under 1 MB (relative to the working directory, or absolute).

getGatewayUsage

Read account-scoped managed-AI-gateway usage + exact cost for a project over a recent window.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
daysnumbernoLook-back window in days.

Credentials

Read whether a project's API keys are set (masked hint only, never the value) and start write-without-knowing entry — the agent hands off a dashboard link where the owner pastes the secret, which never passes through the agent. Account-scoped; gated per-project by the MCP access grant. Narrative guide: /docs/mcp-server/tools.

getCredentialStatus

Read whether a project's Meta DAT build identity is set — plus a MASKED hint and when it was updated.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).

setCredential

Start WRITE-WITHOUT-KNOWING entry of the project's Meta DAT build identity.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
credentialTypestring (enum)yesWhich credential to set. One of: meta_dat.

Analytics

Read a project's production analytics — aggregate telemetry from shipped App Store / Play Store apps (events, active installs, by event/day/vendor/platform) over a window. Metadata only, never content. Account-scoped + ownership-checked; gated per-project by the MCP access grant. Narrative guide: /docs/mcp-server/tools.

getProjectAnalytics

Read a project's PRODUCTION analytics — aggregate telemetry from the app's shipped (App Store / Play Store) installs over a recent window.

ParameterTypeRequiredDescription
appPackagestringyesThe app's package / bundle id (project_install_id).
daysnumbernoLook-back window in days.

Implementation guidance

Derive permissions and pressure-test voice phrases before wiring them in. Narrative guide: /docs/mcp-server/tools/guidance.

getVoiceCommandGuidance

Analyze proposed voice phrases for UX issues (length, homophones, digit-usage, Meta wake-word collision, ambiguity with existing phrases) before wiring them into a wake trigger.

ParameterTypeRequiredDescription
phrasesstring[]yesThe proposed wake / trigger phrases to analyze (at least one).
existingPhrasesstring[]noPhrases already wired into the app.

getPermissions

Derive the Android permissions, iOS Info.plist keys, and Meta DAT scopes a list of SDK capabilities requires.

ParameterTypeRequiredDescription
capabilitiesstring[]yesCapability names from getPlatformInfo.features[].name.
platformstring (enum)yesSelects how the one-line summary is phrased (Android vs iOS framing). One of: android, ios.

Validation

Read the current integration state and gate correctness before you test. Narrative guide: /docs/mcp-server/tools/validation.

inspectIntegration

Read-only snapshot of the current Extentos integration at a project path.

ParameterTypeRequiredDescription
projectPathstringnoAbsolute (or cwd-relative) path to the project root holding extentos.manifest.json.

validateIntegration

Pre-test gate that runs ~15 severity-tiered checks over the whole project — manifest present + parses, generated-file markers + hashes, dependency declared, library-version freshness, Android Meta-DAT repo declaration, bootstrap wiring (Ex…

ParameterTypeRequiredDescription
projectPathstringnoAbsolute (or cwd-relative) path to the project root.

Simulation & agent-driven testing

Drive the browser simulator and close the agent-driven end-to-end loop — inject input, read the event log and display tree, assert tool calls — without a human or physical hardware. Narrative guide: /docs/mcp-server/tools/simulation.

createSimulatorSession

Get-or-create: provision a browser-based simulator session for this project, OR return the existing saved one.

ParameterTypeRequiredDescription
glassesstring (enum)yesTarget glasses vendor. One of: meta, android_xr, brilliant, meta_rayban.
platformstring (enum)noOne of: android, ios.
projectPathstringno
recordBinarybooleanno
autoOpenBrowserbooleanno
autoLinkbooleannoWhen true (default), if the backend returns auth_required, this handler polls completeAuthLink internally for autoLinkSeconds and re-mints on success.
autoLinkSecondsnumbernoMax seconds to wait for the user to approve the verification URL when autoLink is true.

ensureSimulatorBrowser

Ensure a connected simulator browser tab for the session — opens one if needed and confirms the browser's WebSocket actually attached before returning.

ParameterTypeRequiredDescription
sessionIdstringyes
timeoutMsnumbernoMax ms to wait for the browser tab's WebSocket to attach after auto-opening.
autoOpenbooleannoWhen true (default): if no browser is connected the MCP server opens the session URL in the developer's default browser and polls until it attaches.

Poll the backend until the user finishes signup at the verificationUrl, then persist the bearer token to ~/.extentos/auth.json.

ParameterTypeRequiredDescription
deviceCodestringyesThe deviceCode from createSimulatorSession's auth_required (HTTP 402) response — the opaque handle the backend correlates the developer's signup with.
maxWaitSecondsintegernoMax seconds to keep polling for the developer to finish signup.
pollIntervalSecondsintegernoSeconds between backend polls.

getEventLog

Fetch structured event trace inside a simulator session.

ParameterTypeRequiredDescription
sessionIdstringyes
filterstring (enum)noChip to filter the event stream by. One of: all, errors, voice, camera, display, lifecycle, custom.
limitintegerno
cursorstringnoOpaque keyset cursor from a prior getEventLog response.
followbooleannoWhen true, turns this call into a live watch: if no events are newer than cursor, the call BLOCKS until something happens (or timeoutMs elapses) instead of…
timeoutMsintegernoMax time (ms) a follow call blocks waiting for new events.
responseFormatstring (enum)noOne of: concise, detailed.
redactBinarybooleanno
collapseRepeatsbooleannoWhen true (default), consecutive payload-identical events (same layer/severity/type/message/details — timestamps excluded) collapse into ONE entry carrying `re…

injectTranscript

Inject a synthetic STT transcript into a live simulator session, the same way the simulator browser tab's click-to-fire chips do.

ParameterTypeRequiredDescription
sessionIdstringyes
textstringyesThe transcript text to inject.
isFinalbooleannoWhen true (default for type=stt_transcript), the frame is a final transcript that fires onPhrase matchers.
partialbooleannoConvenience: when true, send as stt_partial (a not-yet-final transcript).
confidencenumbernoSTT confidence value (0-1).

injectAssistantUtterance

Phase 4: drive an assistant turn from outside the live session for agent-driven E2E tests of `glasses.assistant.start { tool(...) { ...

ParameterTypeRequiredDescription
sessionIdstringyes
textstringnoUtterance text the agent wants the assistant to react to.
audioWavBase64stringnoDEFERRED to v1.1 — passing this field returns not_implemented.

assertToolCalled

Phase 4: wait for an assistant.tool_called event matching name (and optionally argsMatch partial-match).

ParameterTypeRequiredDescription
sessionIdstringyes
namestringyesExact tool name to wait for.
sinceCursorstringnoStrongly recommended.: The watchCursor value returned by the injectAssistantUtterance that should trigger this tool.
argsMatchobjectnoOptional top-level partial match against the tool's parsed args.
timeoutMsnumbernoMax time to wait, in ms.

getSimulatorStatus

Read a live simulator session's current state — phase (active/paused/closed), hardware-ready, attached roles (app + browser), active capability streams (which videoFrames/audioChunks/transcriptions subscriptions are open right now),…

ParameterTypeRequiredDescription
sessionIdstringyes

deleteSimulatorSession

Retire a simulator session on purpose.

ParameterTypeRequiredDescription
sessionIdstringyes

setSimVideo

Pipe a Test Video into the simulator's camera input so capture_photo / capture_video / videoFrames run against a known scene instead of a blank viewport — closes the agent-driven test loop for camera-driven flows the same way injectTranscr…

ParameterTypeRequiredDescription
sessionIdstringyes
videoIdstringyesID of the test video to load.

setSimDevice

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), an…

ParameterTypeRequiredDescription
sessionIdstringyes
devicestring (enum)yesThe device model to simulate. One of: rayban_meta, oakley_meta_hstn, oakley_meta_vanguard, rayban_meta_optics, meta_glasses, rayban_display, android_xr_audio_glasses, android_xr_display_glasses, brilliant_halo, brilliant_frame.

getDisplayState

Read what's currently rendered on the simulated glasses DISPLAY (track 5 — the native glasses.display.* capability).

ParameterTypeRequiredDescription
sessionIdstringyes

injectInput

Drive the simulated glasses' DISPLAY input — the agent's way to "click" the display with no human and no hardware (track 5).

ParameterTypeRequiredDescription
sessionIdstringyes
actionstring (enum)yes'select' fires the target (or focused) node's onClick — pass targetId (from getDisplayState.interactiveIds) for a deterministic click. One of: navigate, select, back.
targetIdstringnoThe node id to target.

injectHardwareButton

Press the simulated glasses' hardware CAPTURE BUTTON (the right-temple controls) — the agent's way to exercise the wearer's hardware privacy gestures with no human and no hardware.

ParameterTypeRequiredDescription
sessionIdstringyes
buttonstring (enum)noWhich hardware button to press. One of: capture.
actionstring (enum)noThe press gesture. One of: tap, hold.

Production

Ship-readiness checklist and credential setup (Meta DAT + any BYOK providers). Narrative guide: /docs/mcp-server/tools/production.

getProductionChecklist

Return a personalized production-readiness checklist based on the SDK capabilities the app uses, the handlers it declares, and the BYOK services it integrates.

ParameterTypeRequiredDescription
capabilitiesstring[]yesCapability names from getPlatformInfo.features[].name.
handlersstring[]noNames of the handlers the app declares (labels the API Keys step's affectedHandlers).
servicesstring[]noBYOK provider names the app actually integrates (e.g.
platformstring (enum)yesOne of: android, ios.
projectPathstringnoAbsolute (or cwd-relative) path to the project root.

getCredentialGuide

Return step-by-step credential setup for the Meta DAT build identity plus each BYOK AI provider the app integrates.

ParameterTypeRequiredDescription
servicesstring[] (enum)noBYOK providers the app integrates — one per integration. One of: anthropic, openai, google_cloud_vision, google_translate, google_gemini, deepl, azure_cognitive, aws_bedrock, huggingface, custom.
handlersstring[]noOptional list of handler names.
platformstring (enum)yesOne of: android, ios.

Documentation

Search the in-session conceptual docs corpus by topic or keyword. Narrative guide: /docs/mcp-server/tools/search.

searchDocs

Search Extentos documentation by topic or keyword.

ParameterTypeRequiredDescription
querystringnoOptional keyword(s).
topicstringnoOptional topic id.
modestring (enum)noResponse shape. One of: full, snippets.

Keeping this page honest

The tool list and parameters above are generated from toolDefinitions in mcp-server/src/tools/definitions.ts. The generator (scripts/generate-docs-reference.mjs) asserts that every shipped tool is categorized, so a new tool can't be added without appearing here. Counts are derived, never hand-typed.