Skip to main content
Glama
extentos

extentos

addProjectSound

Upload a local audio file (MP3, M4A, AAC, or WAV under 1 MB) into a project's sound library so every device can play it by name with glasses.audio.playSound(). Use when building UI sounds like shutter clicks during app development.

Instructions

Upload a local audio file into a project's named-sound library. Pass the name app code will play it with and a path to an MP3/M4A/AAC/WAV file under 1 MB. After the next assistant start (app relaunch), every device running the app can glasses.audio.playSound(name) — and the sound appears in the dashboard's Agent section, where a human can re-point that name at a different clip with no app change. The SDK plays none of them on its own. Code registrations (audio.registerSound) win over library sounds on name collisions. GATED by the project's MCP access grant (assistant_config.sounds — default Read+Write; a permission_denied 403 means the owner restricted it). Requires a linked Extentos account (a 401 returns account_required, run extentos-mcp login). USE to provision an app's UI sounds while building it — e.g. a camera app's shutter click ({ name: "shutter", filePath: "./sounds/shutter.mp3" }). DON'T USE for the assistant's VOICE (that's setAssistantConfig) or for sounds the app should bundle locally (registerSound in app code needs no upload).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe play-by-name key, e.g. "shutter" — app code calls glasses.audio.playSound(name).
filePathYesPath to a local MP3/M4A/AAC/WAV file under 1 MB (relative to the working directory, or absolute).
appPackageYesThe app's package / bundle id (project_install_id), e.g. com.example.myapp.
Install Server

TDQS

A4.4/5.0
Behavior4/5

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

Since no annotations exist, the description bears full responsibility. It discloses file size limit (<1 MB), allowed formats (MP3/M4A/AAC/WAV), activation timing (after next assistant start), cross-device availability, dashboard appearance, collision rules (registerSound wins), and error cases (403, 401). Missing explicit success return, but overall very 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 well-structured and informative. It starts with purpose, then constraints, then usage guidelines. Every sentence adds value without being overly verbose. Could be slightly trimmed, but it earns its length. Score 4 for good efficiency.

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 that there is no output schema and three parameters, the description covers the tool's purpose, constraints, behavioral nuances, error scenarios, and usage boundaries comprehensively. It even explains SDK behavior and dashboard appearance. Nothing essential is missing for an agent to use the tool correctly.

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 100%, so the schema already documents each parameter. The description reinforces the meaning by giving examples and context (e.g., name is 'play-by-name key', filePath relative/absolute, appPackage is 'project_install_id'). It adds marginal extra value beyond the schema, so a score of 3 is appropriate.

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 starts with a clear verb and resource: 'Upload a local audio file into a project's named-sound library.' It distinguishes itself from sibling tools by explicitly stating what it is for (provisioning UI sounds) and what it is not for (assistant voice, local bundle sounds), making the purpose unambiguous.

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 provides explicit when-to-use and when-not-to-use guidance: 'USE to provision an app's UI sounds while building it' and 'DON'T USE for the assistant's VOICE (that's setAssistantConfig) or for sounds the app should bundle locally (registerSound in app code needs no upload).' It also states prerequisites (linked Extentos account, MCP access grant).

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

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