sonos-ts-mcp
Allows control of Sonos audio devices including playback, volume, queue management, group management, alarms, music library browsing, and EQ settings.
Enables browsing Spotify content such as artists, albums, and playlists through Sonos music service integration.
Enables browsing TuneIn radio stations and content through Sonos music service integration.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sonos-ts-mcpplay jazz in the living room"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sonos TypeScript MCP Server
Your comprehensive Sonos control companion powered by the Model Context Protocol (MCP). This intelligent server provides seamless access to Sonos audio devices over your local network using UPnP/SOAP protocols. Whether you're controlling playback, managing zones, browsing your music library, or setting up alarms, this MCP server delivers complete device control directly to your AI assistant, enabling smart home automation and better audio experiences.
Specifically designed for coding agents and AI-driven home audio automation workflows. This server enables AI assistants to build intelligent multi-room audio experiences, music library management, zone grouping, queue management, and integration with smart home platforms.
Data is sourced from real-time UPnP/SOAP communication with Sonos devices to ensure accuracy and completeness.
📊 Feature Status: Phase 4 complete! Implements real-time event subscriptions with UPnP GENA protocol for playback, volume, queue, and topology changes. See Phase 4 completion for details.
📚 Documentation
Comprehensive Tool Descriptions - Detailed guide for coding agents with use cases, workflows, and best practices for all 50+ tools
API Reference - Technical API documentation
Example Scripts - Sample automation scripts and use cases
Related MCP server: music-assistant-mcp
Getting Started
The Sonos TypeScript MCP Server can work with any MCP client that supports standard I/O (stdio) as the transport medium. Here are specific instructions for some popular tools:
Basic Configuration
Claude Desktop
To configure Claude Desktop to use the Sonos MCP server, edit the claude_desktop_config.json file. You can open or create this file from the Claude > Settings menu. Select the Developer tab, then click Edit Config.
{
"mcpServers": {
"sonos-ts-mcp": {
"command": "npx",
"args": ["-y", "sonos-ts-mcp@latest"]
}
}
}Cline
To configure Cline to use the Sonos MCP server, edit the cline_mcp_settings.json file. You can open or create this file by clicking the MCP Servers icon at the top of the Cline pane, then clicking the Configure MCP Servers button.
{
"mcpServers": {
"sonos-ts-mcp": {
"command": "npx",
"args": ["-y", "sonos-ts-mcp@latest"],
"disabled": false
}
}
}Cursor
To configure Cursor to use the Sonos MCP server, edit either the file .cursor/mcp.json (to configure only a specific project) or the file ~/.cursor/mcp.json (to make the MCP server available in all projects):
{
"mcpServers": {
"sonos-ts-mcp": {
"command": "npx",
"args": ["-y", "sonos-ts-mcp@latest"]
}
}
}Visual Studio Code Copilot
To configure a single project, edit the .vscode/mcp.json file in your workspace:
{
"servers": {
"sonos-ts-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sonos-ts-mcp@latest"]
}
}
}To make the server available in every project you open, edit your user settings:
{
"mcp": {
"servers": {
"sonos-ts-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sonos-ts-mcp@latest"]
}
}
}
}Windsurf Editor
To configure Windsurf Editor, edit the file ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"sonos-ts-mcp": {
"command": "npx",
"args": ["-y", "sonos-ts-mcp@latest"]
}
}
}Testing with an Agent
You can quickly test the MCP server using the built-in CLI agent, which uses natural language to interact with your Sonos system:
# Run directly with npx (no installation required)
npx sonos-agent-cli "Play jazz in the living room"
# Use a specific AI model
npx sonos-agent-cli "What's playing in the kitchen?" --model gpt-4o
# Use Gemini models
npx sonos-agent-cli "Set volume to 50 in all rooms" --model gemini-3-pro-previewRequired Environment Variables:
OPENAI_API_KEY: For OpenAI models (gpt-4o, gpt-4o-mini, etc.)GOOGLE_GENERATIVE_AI_API_KEY: For Gemini modelsSONOS_AGENT_MODEL: Set a default model (optional)
Build Behavior:
The CLI automatically builds the MCP server before running to ensure the latest code is used. To skip the build (e.g., during rapid testing), use --skip-build:
npx sonos-agent-cli "Play music" --skip-buildThis agent provides an easy way to verify that the MCP server is working correctly and can communicate with your Sonos devices.
Features
This MCP server provides comprehensive control of your Sonos audio system:
AI-Powered Agent Tool: Natural language control via the
sonos_agenttool (requires AI API keys) ✨ NEWTopology Persistence: Device topology automatically saved to disk and loaded on startup
Intelligent Device Resolution: Control devices by friendly name (e.g., "Kitchen") instead of UUIDs
Automatic Discovery: Discovers devices on startup and every 5 minutes
Device Discovery: Manual SSDP-based discovery of Sonos devices
Playback Control: Play, pause, stop, next, previous
Volume Control: Get and set volume levels, mute/unmute
Transport Info: Get current playback state and track information
Zone Topology: Query zone groups and speaker configurations
Queue Management: Full queue control (add, remove, reorder, save, play)
DIDL-Lite Support: Complete metadata handling for tracks, albums, and containers
Playback Properties: Shuffle, repeat, and crossfade controls
Group Management: Join and unjoin devices to create multi-room groups
Music Library Browsing: Browse artists, albums, tracks, genres, and playlists
Library Search: Fuzzy search across your music library
Audio/EQ Controls: Bass, treble, loudness, night mode, dialog enhancement
Sleep Timer: Automatic playback stop after duration
Alarm Management: Create, update, and delete alarms
Snapshot/Restore: Save and restore complete device state
Party Mode: Join all devices at once
Event Subscriptions: Real-time notifications for state changes ✨ NEW
MCP Prompts: Exposes AI agent instructions as discoverable prompts ✨ NEW
Pure TypeScript: Built from scratch without external Sonos libraries
MCP Compatible: Integrates with any MCP-compatible client
Planned Features (Phase 5+)
This project is actively expanding to match the comprehensive feature set of the Python SoCo library:
Music service integration (Spotify, Apple Music)
🟢 Advanced group management (stereo pairs, home theater)
🟢 Audio analysis and diagnostics
🟢 MCP event tool integration
See the Phase 4 completion for the latest features.
Tools Available
AI Agent Tool ✨ NEW
Tool | Description |
| AI-powered natural language control. Give instructions like "Play jazz in the living room" and the agent autonomously handles device discovery, tool selection, and execution. Only available when |
Discovery Tools
Tool | Description |
| Discover Sonos devices on the network using SSDP multicast |
| Manually add a Sonos device by IP address (useful when SSDP discovery fails) |
| List all discovered/registered devices |
Playback Control Tools
Tool | Description |
| Start playback |
| Pause playback |
| Stop playback |
| Skip to next track |
| Skip to previous track |
Volume Control Tools
Tool | Description |
| Set volume (0-100) |
| Get current volume |
| Mute or unmute |
Queue Management Tools
Tool | Description |
| Get the current playback queue |
| Add a URI to the queue |
| Remove a track from the queue |
| Remove all tracks from the queue |
| Play from a specific queue position |
| Save the queue as a Sonos playlist |
Playback Properties Tools
Tool | Description |
| Enable or disable shuffle mode |
| Set repeat mode (off, all, one) |
| Enable or disable crossfade |
| Get shuffle, repeat, crossfade, and playback state |
Group Management Tools
Tool | Description |
| Join a device to another device's group |
| Remove a device from its group |
| Join all devices at once |
Music Library Tools
Tool | Description |
| Browse all artists in the music library |
| Browse all albums in the music library |
| Browse all tracks in the music library |
| Browse all genres in the music library |
| Browse Sonos playlists |
| Get favorite radio stations from Sonos favorites |
| Search the music library |
| Browse subcategories (e.g., albums for an artist) |
Music Services Tools
Tool | Description |
| List available music services (Sonos Radio, TuneIn, Spotify, etc.) |
| Browse content from a music service (categories, stations, playlists) |
| Search for content within a music service |
| Play an item from a music service (radio station, track, album) |
| Get the streaming URI for a music service item |
Audio/EQ Control Tools
Tool | Description |
| Set bass level (-10 to 10) |
| Set treble level (-10 to 10) |
| Enable/disable loudness compensation |
| Get all EQ settings |
| Enable/disable night mode (home theater) |
| Enable/disable dialog enhancement (home theater) |
Sleep Timer Tools
Tool | Description |
| Set automatic playback stop timer |
| Get remaining timer |
| Cancel sleep timer |
Alarm Management Tools
Tool | Description |
| List all alarms |
| Create a new alarm |
| Update an existing alarm |
| Delete an alarm |
State Management Tools
Tool | Description |
| Take a snapshot of device state |
| Restore from snapshot |
Event Subscription Tools
Tool | Description |
| Subscribe to real-time device events (AVTransport, RenderingControl, Queue, ZoneGroupTopology, AlarmClock) |
| Unsubscribe from a specific subscription |
| Unsubscribe from all device subscriptions |
| List active event subscriptions |
Information Tools
Tool | Description |
| Get playback state |
| Get current track details |
| Get zone topology |
Development and Installation
npm install
npm run buildTest Discovery
After installation, you can test if your Sonos devices can be discovered:
npm run test:discoveryThis will perform an SSDP multicast search and display any Sonos devices found on your network.
Test Favorite Radio Stations
You can test the favorite radio stations feature:
npm run test:radioThis will query your Sonos device for saved radio stations and display them. If no stations are found, it will provide instructions on how to add some using the Sonos app.
Test Agent Tool
You can test the AI-powered agent tool (requires AI API keys):
# Set up your API key first
export OPENAI_API_KEY=sk-...
# or
export GOOGLE_GENERATIVE_AI_API_KEY=...
# Run the test
npm run test:agent-toolThis will verify that the agent tool is properly configured and can execute natural language instructions. See the Agent Tool Documentation for more details.
Usage
As MCP Server
The server supports two transport modes:
Stdio Mode (Default)
Stdio mode is the standard way to run MCP servers, communicating over standard input/output. This is the mode used by most MCP clients.
Add to your MCP client configuration:
{
"mcpServers": {
"sonos": {
"command": "node",
"args": ["path/to/sonos-ts-mcp/dist/index.js"]
}
}
}Or run directly:
node dist/index.jsYou can also use the convenience script:
npm run start:stdio
# or
tsx scripts/start-mcp-stdio.tsCLI Agent
The project includes a CLI agent powered by Mastra that allows you to control your Sonos system using natural language.
# Run with default model (gpt-4o-mini)
npx sonos-agent-cli "Play jazz in the living room"
# Run with a specific model
npx sonos-agent-cli "Play jazz in the living room" --model gpt-4o
# Run with Gemini 3
npx sonos-agent-cli "Play jazz in the living room" --model gemini-3-pro-previewEnvironment Variables:
OPENAI_API_KEY: Required for OpenAI models (default)GOOGLE_GENERATIVE_AI_API_KEY: Required for Gemini modelsSONOS_AGENT_MODEL: Set the default model (optional, e.g.,gemini-3-pro-preview)
Note on Telemetry: The Mastra framework's built-in telemetry has been disabled in this implementation. Telemetry warnings are suppressed by setting globalThis.___MASTRA_TELEMETRY___ = true before Mastra initialization. This is set automatically in the CLI agent.
SSE Mode (HTTP Server)
SSE (Server-Sent Events) mode runs the MCP server as an HTTP server, useful for web-based clients or remote access.
Set the MCP_TRANSPORT environment variable to sse:
MCP_TRANSPORT=sse node dist/index.jsOr with custom port (default is 3000):
MCP_TRANSPORT=sse MCP_PORT=8080 node dist/index.jsYou can also use the convenience script:
npm run start:sse
# or
tsx scripts/start-mcp-sse.tsWith custom port:
MCP_PORT=8080 npm run start:sseThe server will start an HTTP endpoint at http://localhost:3000/sse (or your configured port) that clients can connect to.
Development
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm run typecheck # Type checking only
npm run lint # ESLint
npm run format # Prettier
npm test # Run tests
npm run test:discovery # Test Sonos device discovery
npm run test:phase1 # Test Phase 1 APIs (Queue, Playback)
npm run test:phase2 # Test Phase 2 APIs (Groups, Library)
npm run test:phase3 # Test Phase 3 APIs (Audio, Alarms)
npm run test:phase4 # Test Phase 4 APIs (Events)
npm run test:all-phases # Run all phase testsTesting
Comprehensive API test scripts are available for all implemented features:
# Run all tests
npm run test:all-phases
# Or run individual phase tests
npm run test:phase1 # Queue, DIDL, Playback Properties
npm run test:phase2 # Groups & Music Library Browsing
npm run test:phase3 # Audio, Alarms, Snapshots
npm run test:phase4 # Event Subscriptions
# Run Phase 2 tests in mock mode (no physical devices required)
npm run test:phase2 -- --mock
# Run integration tests (uses AI validation)
npm testNote: Phase 2 tests support a mock mode for testing without physical Sonos devices. Use --mock flag or set MOCK_DEVICES=true environment variable.
AI-Powered Integration Tests: The integration test suite uses Gemini 2.5 Flash AI to intelligently validate agent outputs instead of brittle string matching. This provides semantic understanding of test results and adapts to different output formats. Requires GOOGLE_GENERATIVE_AI_API_KEY environment variable.
See the API Testing Guide and AI-Powered Testing Guide for detailed documentation on the test suite.
Architecture
src/
├── discovery/ # SSDP device discovery
│ ├── ssdp-client.ts
│ └── device-registry.ts
├── didl/ # DIDL-Lite metadata handling
│ ├── didl-object.ts
│ ├── didl-resource.ts
│ ├── didl-item.ts
│ ├── didl-container.ts
│ ├── didl-serializer.ts
│ ├── didl-parser.ts
│ └── index.ts
├── soap/ # SOAP/UPnP transport layer
│ ├── client.ts
│ ├── request-builder.ts
│ └── response-parser.ts
├── services/ # Sonos service wrappers
│ ├── base-service.ts
│ ├── av-transport.ts # Playback, queue, sleep timer
│ ├── rendering-control.ts # Volume, EQ, audio enhancements
│ ├── zone-topology.ts # Groups, party mode
│ ├── content-directory.ts # Music library browsing
│ ├── alarm-clock.ts # ✨ NEW: Alarm management
│ └── snapshot.ts # ✨ NEW: State snapshot/restore
├── mcp/ # MCP server implementation
│ └── server.ts
└── types/ # TypeScript definitions
├── sonos.ts
└── queue.tsProtocol Details
Discovery (SSDP)
Sends UDP multicast to
239.255.255.250:1900Searches for
urn:schemas-upnp-org:device:ZonePlayer:1Parses response headers to extract device location
Note on Discovery: SSDP multicast discovery may not work in all network environments due to:
Windows Firewall blocking UDP port 1900
Network switches not properly forwarding multicast traffic
VPN interference with multicast routing
Corporate network policies
If automatic discovery fails, use the sonos_add_device tool to manually register devices by IP address. The server will verify connectivity before registering the device.
Manual Device Registration
When SSDP discovery doesn't work, you can manually add devices:
// Using the MCP tool
sonos_add_device({
ip: "192.168.1.100",
port: 1400, // optional, defaults to 1400
name: "Kitchen" // optional, defaults to "Sonos at {ip}"
})The server will test connectivity to the device before adding it to the registry.
Control (SOAP/UPnP)
HTTP POST to
http://{ip}:1400/...XML-based SOAP envelopes
Supports all standard Sonos UPnP services
Documentation
🤖 Agent Tool Guide - AI-powered natural language control ✨ NEW
📚 Comprehensive Tool Descriptions - Detailed guide for coding agents with use cases, workflows, and best practices for all 50+ tools
📦 Installation Guide - Detailed installation and configuration instructions
💾 Topology Persistence Guide - Device topology storage and management ✨ NEW
🎯 Device Resolution Guide - Using friendly device names ✨ NEW
🧪 API Testing Guide - Comprehensive test suite documentation
📘 Implementation Guide - Tool usage and examples
🏗️ Technical Architecture - System design details
📚 Phase Completion Docs - PHASE-1-COMPLETE.md through PHASE-4-COMPLETE.md
Contributing
Contributions are welcome! This project is expanding to provide comprehensive Sonos control. See the roadmap for planned features.
Areas where contributions are especially valuable:
Implementing additional UPnP services
Adding DIDL-Lite object model
Event subscription system
Test coverage expansion
Documentation improvements
License
MIT
Available Tools
59 toolssonos_add_deviceA
Manually add a Sonos device by IP address. Use when SSDP discovery fails due to network restrictions or firewall rules. Device must be network-accessible on port 1400.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IP address of the Sonos device (e.g., "192.168.1.150") | |
| name | No | Optional friendly name for the device | |
| port | No | Port number (default: 1400) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the action but does not disclose side effects (e.g., whether it overwrites existing configurations), return format, or success/failure indicators. For a state-modifying tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the core action and usage context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple add-device tool with clear schema, the description covers what, when, and a prerequisite. However, it omits expected outcomes (e.g., success/error responses) and any permissions requirements, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema provides clear descriptions for all three parameters (ip, name, port). The tool description adds marginal value by repeating the port default (1400) but does not enhance meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manually add a Sonos device by IP address,' which is a specific verb and resource. It distinguishes from siblings like sonos_discover (SSDP discovery) and sonos_list_devices (listing existing devices).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when SSDP discovery fails due to network restrictions or firewall rules,' providing clear when-to-use guidance. It also mentions the prerequisite that the device must be network-accessible on port 1400. However, it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_add_to_queueC
Add a track URI to the playback queue. Supports music library URIs and streaming service URIs. Optional metadata in DIDL-Lite XML format.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | Track URI (e.g., x-file-cifs://..., x-sonos-spotify:...) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| metadata | No | Optional DIDL-Lite metadata XML | |
| playNext | No | Add as next track to play | |
| position | No | Insert at specific position (1-based), or append if not specified |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral disclosure. It states the action but does not explain side effects (e.g., whether it starts playback, if position/playNext parameters modify queue behavior, or error conditions). The supported URI types are mentioned but not comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous information. The first sentence states the core purpose, and the second adds relevant detail. Every word is earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 5 parameters, no output schema, and no annotations, the description is insufficient. It does not cover return values, error handling, or behavioral nuances like queue manipulation details or device prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, so baseline is 3. The description adds minor context (supports music library and streaming service URIs, optional metadata in DIDL-Lite XML) beyond schema descriptions, but does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Add) and resource (track URI to playback queue), and specifies support for music library and streaming service URIs. It does not explicitly differentiate from sibling tools like sonos_play_from_queue, but the name and context make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as sonos_play or sonos_play_from_queue. The description does not mention prerequisites, preferred scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_albumsB
Browse albums in the music library. Supports pagination for large collections.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It mentions pagination support but does not state that the operation is read-only, lacks side effects, or requires specific permissions. Additional traits (e.g., rate limits, impact on library) are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the first sentence directly stating the purpose and the second adding pagination detail. No redundant or unnecessary words, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers basic functionality and pagination, it lacks details on return format, error handling, and how it relates to sibling browse tools. For a simple browse operation with no output schema, it is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all 3 parameters (deviceId, count, startIndex). The description adds no extra meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Browse albums in the music library' with a specific verb and resource. It also notes pagination support. This distinguishes it from sibling tools like sonos_browse_artists and sonos_browse_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool vs. alternatives like sonos_browse_artists. The description does not mention any conditions, exclusions, or prerequisites, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_artistsB
Browse artists in the music library. Supports pagination for large collections.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions pagination support, which is a key behavioral trait. However, it does not state that the operation is read-only or describe any side effects, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. However, it is slightly too short and could benefit from a bit more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browse tool with no output schema, the description should explain what results look like (e.g., list of artist names). It only mentions browsing and pagination, leaving the agent without guidance on expected output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds 'Supports pagination for large collections,' which reinforces the role of startIndex and count but does not provide additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool browses artists in the music library, which is specific and matches the tool name. It does not, however, explicitly distinguish this from sibling browse tools like sonos_browse_albums, but the different resource (artists vs albums) provides enough clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., search_library, browse_albums) or when not to use it. This leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_genresA
Browse music genres in the library. Supports pagination for large collections.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the behavioral burden. It only mentions pagination support but lacks details on authentication requirements, error handling, or what happens with invalid parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the purpose, and contains no filler. Every sentence serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple browse tool with full schema coverage and no output schema, the description covers the basic purpose and pagination. However, it could briefly mention the typical return format (e.g., genre names).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description reinforces pagination context but does not add new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Browse music genres in the library', which is a specific verb and resource. It distinguishes from sibling tools like sonos_browse_artists and sonos_browse_albums.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for browsing genres with pagination but does not explicitly state when to use this tool versus similar browse tools (e.g., browse_artists, browse_albums). No alternatives or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_itemA
Browse a specific library item to get its children. For example, get albums for an artist or tracks for an album.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| objectId | Yes | Object ID from a previous browse or search result | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must cover behavioral traits. It only states the action and example but omits critical details: whether this is a read-only operation, permissions required, effect of required parameters (like deviceId and objectId), or behavior when no children exist. The description is insufficient for full behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, concise, and front-loaded with the action and purpose. Every word adds value without redundancy. The example immediately clarifies the use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 4 documented parameters but no output schema, the description adequately explains the primary use case and provides examples. Minor gaps exist around return value structure and pagination behavior, but overall it is sufficient for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a clear description in the schema. The tool description adds no additional meaning or usage context for the parameters beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'browse' and the resource 'specific library item' with the goal to get its children, and provides concrete examples (albums for an artist, tracks for an album). It effectively distinguishes from sibling tools like sonos_browse_artists or sonos_browse_albums by being more general.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit examples of when to use this tool (e.g., getting albums for an artist). However, it does not mention when not to use it or suggest alternatives like the more specific browse tools among siblings. The clarity of context is high, but it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_music_serviceA
Browse content from a music service. WARNING: Most services (especially Sonos Radio, Spotify, Apple Music) require authentication and will return empty results or errors if not authenticated. Check authType from sonos_list_music_services first. Only "Anonymous" services (like SomaFM Radio) are guaranteed to work. Use sonos_get_favorite_radio_stations instead for pre-configured radio stations.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Maximum number of items to return | |
| deviceId | Yes | Device ID to use for browsing | |
| startIndex | No | Starting index for pagination | |
| containerId | No | Container ID to browse. Use "root" to start from the top level, or use an ID returned from a previous browse call. | root |
| serviceName | Yes | Name of the music service (e.g., "Sonos Radio", "TuneIn", "Spotify") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses critical behavioral trait: returns empty results/errors if not authenticated. Notes only 'Anonymous' services work without auth. With no annotations, description carries full burden and covers the most important behavioral aspect. Could detail return format or pagination but suffices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a warning. Every sentence is purposeful: states action, warns about authentication, provides alternative tool. No redundancy or fluff. Front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and many sibling tools, description covers the essential context: authentication dependency, alternative for radio stations, and nesting via containerId. Lacks explicit mention of pagination or return structure but schema handles param details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 5 parameters with descriptions. Description adds value by explaining containerId usage (root or previous browse ID) and serviceName examples. Baseline 3 due to 100% schema coverage; description provides modest additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool browses content from a music service. It distinguishes from sibling tools like sonos_browse_artists and sonos_get_favorite_radio_stations by specifying the generic browsing functionality and warning about authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns that most services need authentication and will fail otherwise. Suggests checking authType via sonos_list_music_services and recommends sonos_get_favorite_radio_stations for pre-configured stations. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_playlistsB
Browse Sonos playlists. Supports pagination for large collections.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states support for pagination, but fails to disclose whether the operation is read-only, requires authentication, or has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no unnecessary words. The key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; the description omits return format, default behavior, or limits. For a browse operation, more detail is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented. The description adds 'pagination' context but does not enhance meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Browse' and resource 'Sonos playlists', which distinguishes it from sibling tools like sonos_browse_artists and sonos_browse_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., other browse tools). Pagination support is mentioned but not elaborated with when to adjust count vs startIndex.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_browse_tracksB
Browse all tracks in the music library. Supports pagination for large collections.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states pagination support but fails to disclose key behaviors: whether the operation is read-only, required permissions, or the format of returned data. The word 'browse' implies read-only, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences, front-loaded with the purpose. Every word adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing important context: no output schema, so the description should explain return structure (e.g., track objects with properties). For a paginated tool, guidance on iteration and termination is absent. The simplicity of the tool does not fully compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions; it merely reiterates pagination support without detailing how count and startIndex interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it browses all tracks, distinguishing it from sibling browse tools for artists, albums, etc. The verb 'browse' and resource 'tracks' 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for browsing all tracks but provides no explicit guidance on when to use this vs alternatives like sonos_browse_artists. It mentions pagination support but doesn't clarify when pagination is needed or how to handle large collections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_cancel_sleep_timerB
Cancel the active sleep timer.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action without disclosing behavior when no sleep timer is active, whether it's reversible, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise with no wasted words. However, it could front-load more context about the tool's effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool signature (one required parameter, no output schema), the description covers the basics but lacks detail on edge cases and when to use relative to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter (deviceId described as 'Room name, UUID, or IP address'). The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Cancel the active sleep timer' uses a specific verb (cancel) and resource (sleep timer), clearly distinguishing it from sibling tools like sonos_set_sleep_timer and sonos_get_sleep_timer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a sleep timer is active, but provides no explicit guidance on prerequisites (e.g., checking if a timer exists) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_clear_queueA
Remove all tracks from the queue. Does not stop current playback.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds key behavioral context: playback continues after clearing. This is valuable, though it could also mention if the operation is reversible or if there are any prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, minimal waste, front-loaded with the action. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the core behavior. It does not mention return values, but the action is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description for deviceId. The tool description adds no further parameter guidance beyond what the schema already provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb ('Remove') and resource ('all tracks from the queue'), clearly distinguishing from sibling tools like sonos_remove_from_queue (removes specific tracks) and sonos_play_from_queue (starts playback from queue).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are provided. The description implies it's for clearing the queue while keeping playback, but doesn't state when not to use or compare to similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_create_alarmB
Create a new alarm with specified time, days, music source, and settings. Returns the alarm ID.
| Name | Required | Description | Default |
|---|---|---|---|
| volume | No | Alarm volume (0-100, default: 25) | |
| enabled | No | Enable alarm (default: true) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| duration | No | Duration in HH:MM:SS (default: 02:00:00) | 02:00:00 |
| startTime | Yes | Start time in HH:MM:SS format (e.g., "07:00:00") | |
| recurrence | Yes | DAILY, ONCE, WEEKDAYS, WEEKENDS, or ON_0123456 (0=Sunday) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states that an alarm is created and an ID returned, but omits details about side effects (e.g., what happens if an alarm with the same time already exists), required permissions, or any resource limitations. The 'create' action implies mutation, but the description does not elaborate on the scope or consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two short sentences, front-loading the action and return value. However, it could be more efficient by removing the misleading mention of 'music source' and aligning fully with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description specifies the return value (alarm ID), which is helpful. However, it lacks details on error handling, required device state, and does not leverage the sibling context to reference related tools. For a creation tool, it adequately conveys the basic purpose but leaves gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 100%, the description introduces 'music source' as a parameter that does not appear in the input schema, which is misleading. The description does not add value beyond the schema definitions and even introduces an inconsistency, reducing clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create'), resource ('alarm'), and key aspects (time, days, music source, settings). It also specifies the return value (alarm ID). Among siblings like sonos_list_alarms, sonos_update_alarm, sonos_delete_alarm, this tool is distinctly identified as the creation one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives (e.g., sonos_update_alarm for modifying an existing alarm). There is no mention of prerequisites, limitations, or context for use, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_delete_alarmA
Delete an existing alarm permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| alarmId | Yes | Alarm ID to delete | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the deletion is 'permanent', which is a key behavioral trait, but with no annotations provided, more context (e.g., error conditions, side effects, authorization requirements) would be beneficial. The description is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no waste. It is appropriately sized and front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with two parameters and no output schema, the description is minimally adequate. However, it lacks usage context and any elaboration on return behavior or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with clear descriptions. The description does not add additional meaning beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete an existing alarm permanently' uses a specific verb ('delete') and resource ('existing alarm'), with 'permanently' emphasizing irreversibility. It clearly distinguishes from sibling tools like sonos_create_alarm and sonos_update_alarm.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., update or list alarms). No prerequisites, such as needing the alarm ID from sonos_list_alarms, are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_discoverA
Actively scan the network for Sonos devices using SSDP. Always call this when the sonos_list_devices tool returns empty or you are missing a device. Returns device UUID, IP address, room name, model, and firmware version. Use room name to communicate with the user.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Discovery timeout in milliseconds (5000-10000 recommended) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions active scanning via SSDP and return fields, but does not disclose potential side effects (e.g., network traffic, latency, whether results are cached). Adequate but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with clear purpose: action, usage guidance, and return info. No wasted words, front-loaded with verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple discovery tool with one optional parameter and no output schema, the description fully covers purpose, when to use, and what is returned. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the only parameter (timeout). Description adds no extra meaning beyond the schema's description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'scan' and resource 'Sonos devices' with method 'using SSDP'. Distinguishes from sibling sonos_list_devices by stating when to use this tool instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: 'Always call this when the sonos_list_devices tool returns empty or you are missing a device.' Provides additional hint about using room name to communicate with user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_eqA
Get current EQ settings including bass, treble, and loudness.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description conveys that the tool is read-only ('get') and returns specific settings. It does not mention side effects, but the behavior is clear. Lacks details on authentication or rate limits, but acceptable for a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 10 words, directly states the purpose. No extraneous information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and no output schema, the description provides the basic purpose. However, it does not mention return format or limitations (e.g., device must be online). Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (deviceId described as 'Room name, UUID, or IP address'). The description adds no extra parameter meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves current EQ settings, specifying the exact parameters (bass, treble, loudness). It distinguishes from sibling setters like sonos_set_bass by using 'get' and listing the settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for reading EQ settings but does not explicitly guide when to use this vs alternatives (e.g., sonos_set_bass). No context on when not to use or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_favorite_radio_stationsA
Get favorite radio stations from Sonos favorites. Returns a list of saved radio stations with their metadata and streaming URIs.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description accurately describes a read operation returning metadata and URIs. No annotations are present, so no contradiction. Adds context beyond schema by specifying return content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no redundancy. Every word provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool, the description explains the return value. Lacks error conditions or prerequisites, but is sufficient given no output schema and well-schematized parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter descriptions in schema cover 100% of parameters with defaults and purpose. Description does not add extra meaning beyond 'Get favorite radio stations'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get favorite radio stations from Sonos favorites' with specific verb and resource. It distinguishes from sibling browse/search tools by focusing on favorites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like sonos_browse_music_service or sonos_search_library. The description implies it's for favorite stations but lacks when-not-to-use info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_music_service_item_uriA
Get the playable streaming URI for a specific music service item. This is useful for debugging or inspecting the actual stream URL.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Item ID to get the URI for | |
| deviceId | Yes | Device ID to use for the request | |
| serviceName | Yes | Name of the music service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the tool returns a 'playable streaming URI' and is for debugging, implying no side effects. However, it does not discuss authentication requirements, rate limits, error handling, or what happens if the item ID is invalid. The description provides basic safety context but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. It is front-loaded with the primary action and adds the debugging use case without any redundant or irrelevant information. Every part contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three required parameters and no output schema or annotations, the description is minimally adequate. It explains what the tool does but does not describe the return format (e.g., string URI) or any prerequisites. For a debugging tool, adding that the URI is playable or temporary would be helpful, but the description is still functional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters (deviceId, serviceName, itemId). The description adds no further meaning beyond stating the purpose; it does not elaborate on parameter formats, allowed values, or how to obtain them. Baseline score of 3 is appropriate since schema covers parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a playable streaming URI for a specific music service item, using specific verb 'Get' and resource 'URI for music service item'. It distinguishes from sibling tools like sonos_browse_music_service (browse) and sonos_play_music_service_item (play) by emphasizing debugging/inspecting the actual stream URL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is 'useful for debugging or inspecting the actual stream URL', implying a diagnostic use case. However, it does not explicitly state when not to use it, nor does it mention alternative tools (e.g., sonos_play_music_service_item for playing). The guidance is suggestive but lacks exclusions or clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_playback_stateA
Get current playback settings including shuffle, repeat, crossfade, transport state, and speed.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the returned settings but does not state read-only nature, permission requirements, or behavior on invalid deviceId. Adequate but not thorough for a getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that is front-loaded with the verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and no output schema, the description provides a clear list of returned settings. Could mention idempotency or that it does not modify state, but overall fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with full schema coverage. The description adds no extra meaning beyond the schema's 'Room name, UUID, or IP address'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'playback settings', and lists specific settings (shuffle, repeat, crossfade, transport state, speed). This distinguishes it from sibling getter tools like sonos_get_transport_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when needing playback settings) but does not provide explicit when-not scenarios or comparisons to other getters like sonos_get_position_info. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_position_infoB
Get current track information, position, and duration. Includes track metadata like title, artist, album.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It only states it 'gets' information, implying a read operation, but does not explicitly disclose read-only nature, side effects, or permissions. Minimal behavioral disclosure beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that are front-loaded and contain no extraneous information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately states what it returns (track info, position, duration, metadata). It could be more precise about the format of position and duration, but sufficient for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for deviceId with a description 'Room name, UUID, or IP address'. The description adds no extra parameter semantics beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves current track information, position, duration, and metadata like title, artist, album. It is specific about verb 'get' and resource 'position info'. However, it does not explicitly distinguish from the sibling tool sonos_get_transport_info, but overall purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like sonos_get_transport_info or other playback tools. Usage is implied as needing track details, but no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_queueA
Retrieve the current playback queue with track information. Supports pagination for large queues.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of tracks to retrieve | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startIndex | No | Starting index for pagination (0-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions pagination support but lacks details about error handling, response format, or required permissions, leaving gaps for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, the first immediately stating the core purpose and the second adding relevant detail about pagination, with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward read tool with three parameters and no output schema, the description covers the essential action (retrieve queue) and pagination support, though it could explicitly mention what track information is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the description adds value by clarifying parameter meanings (e.g., deviceId accepts room name, UUID, or IP) and specifying bounds for startIndex (0-based).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the current playback queue with track information and supports pagination, distinguishing it from sibling tools like sonos_play or sonos_add_to_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving queues with pagination but does not provide explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_sleep_timerA
Get remaining sleep timer duration. Returns empty if no timer is active.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the return is empty if no timer is active, which is useful. However, it does not mention any side effects, permissions required, or whether the timer is per-device or group. More behavioral context could be added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and includes an important edge case. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, low complexity), the description adequately covers purpose and return behavior. It could mention whether the timer applies to the specific device or group, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the deviceId parameter ('Room name, UUID, or IP address'). The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'remaining sleep timer duration', and distinguishes from siblings like 'sonos_set_sleep_timer' and 'sonos_cancel_sleep_timer' by focusing on retrieval. The edge case of returning empty when no timer is active is also specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when you need to check the remaining sleep timer, but it does not explicitly state when to use it versus alternatives (e.g., setting or canceling a timer). No when-not-to-use or alternative tool guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_transport_infoB
Get current transport state (playing, paused, stopped) and playback speed.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, required permissions, or rate limits. The read-only nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous information. Every word is necessary for conveying the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter tool with one parameter, the description covers the essential inputs and outputs (transport state and speed). However, it omits the format or structure of the return value, which would be helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a well-described parameter. The description adds no additional meaning beyond the schema, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get current transport state (playing, paused, stopped) and playback speed', specifying the verb and resource. However, the sibling tool 'sonos_get_playback_state' suggests potential overlap, and the description does not differentiate between the two, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'sonos_get_playback_state'. The description lacks any context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_volumeB
Get current volume level from a Sonos device.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits such as that it is a read-only operation and the expected output (e.g., volume range 0-100). It only states 'get current volume level' without explicit side-effect or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, efficiently conveying the tool's purpose. It is well front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool, the description should at least hint at the output format (e.g., integer 0-100) and error conditions (e.g., device not found). Without output schema, the agent lacks key context for using the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, with its description provided. The tool description adds only mild reinforcement ('from a Sonos device'). As per rubric, baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the current volume level from a Sonos device, using a specific verb and resource. It is easily distinguishable from siblings like sonos_set_volume (set) and other getters (e.g., sonos_get_playback_state) by its focus on volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives (e.g., sonos_get_playback_state or sonos_set_volume). The description lacks context about prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_get_zone_groupsA
Get zone group topology showing which devices are grouped together and their coordinator.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description only implies a read-only operation via 'Get' but does not explicitly state non-destructiveness, authentication requirements, or other behavioral traits. It is adequate but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the main action. Every word is necessary and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description sufficiently covers its purpose. However, it could include more context about the return format or usage examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'deviceId'. The description adds no additional meaning beyond the schema's description. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get' and the resource 'zone group topology', and explains the returned information (grouped devices and coordinator). It distinguishes from sibling tools like sonos_join_group or sonos_get_transport_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like sonos_join_group or sonos_get_transport_info. The description does not mention when it is appropriate to call or when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_join_groupA
Join a device to another device's group for synchronized multi-room playback. The device will follow the master's playback.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Device to join from (room name, UUID, or IP) | |
| masterDeviceId | Yes | Master/coordinator device (room name, UUID, or IP) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the joining device will follow the master's playback, which is a key behavioral trait. However, it does not mention prerequisites (e.g., does the group already exist?), side effects on existing groups, or whether the operation is immediate. With no annotations, more transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each adding value: the action and the effect. No wasted words, efficiently conveys the purpose and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action and result adequately. Given the tool's simplicity and good schema documentation, it is nearly complete. It does not explain edge cases like group creation order, but that may be acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions explaining parameters accept room name, UUID, or IP. The description reinforces that masterDeviceId is the coordinator. It adds no new meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Join a device to another device's group' and specifies the result 'synchronized multi-room playback. The device will follow the master's playback.' This distinguishes it from sibling tools like sonos_unjoin and sonos_party_mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to add a device to an existing group for synchronized playback, but it does not explicitly state when to use it versus alternatives (e.g., sonos_party_mode for creating a new group) or when not to use it. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_list_alarmsA
List all configured alarms including their schedule, enabled status, and room assignments.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool lists alarms with details, which is sufficient for a read-only operation. However, it does not mention any behavioral aspects like idempotency or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no unnecessary words. It is efficiently front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is adequate. However, it is ambiguous whether 'all configured alarms' refers to all alarms across devices or just for the specified device. The absence of output schema details is not critical but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the parameter deviceId is described in the schema. The tool description adds no additional parameter semantics beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists alarms and specifies the information included (schedule, enabled status, room assignments). It distinguishes from sibling alarm mutation tools by being a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like create_alarm or delete_alarm. The description only states what it does, not when it should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_list_devicesA
List devices currently in the registry. Note: Call sonos_discover first to populate the registry if a device is not found in the current registry. Returns UUID, IP address, room name, model, and software version of registered devices. Use room name to communicate with the user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool reads from the registry and returns specific fields, but does not explicitly state it is a read-only operation or mention any other behavioral traits like performance or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words, front-loading the purpose and then adding critical usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description covers the return values (UUID, IP, room name, model, software version) and the prerequisite (sonos_discover), making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. According to guidelines, baseline is 4 for 0 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact action (list devices) and resources (registry), and clearly distinguishes from the sibling tool sonos_discover by mentioning the prerequisite step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use sonos_discover first if a device is not found, and advises using the room name to communicate with the user.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_list_music_servicesA
List all available music services (Sonos Radio, TuneIn, Spotify, etc.) registered with the Sonos system. Returns service details including name, ID, and authentication type. IMPORTANT: Most services require authentication (authType: DeviceLink or AppLink) and will not work unless the user has linked their account through the Sonos app. Only "Anonymous" services work without authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Device ID to query for available services |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description successfully conveys the key behavior: most services require authentication (authType: DeviceLink or AppLink) and will not work unless linked in the Sonos app. It also clarifies that 'Anonymous' services do not require authentication. It does not mention side effects or permissions, but the core behavioral nuance is well-disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a bolded IMPORTANT note. It is front-loaded with the main purpose, and every sentence adds significant value. There is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description briefly states what the return value includes (name, ID, authentication type). The tool is simple with one required parameter, so the description is largely complete. However, it could be more detailed about the structure of the response or edge cases like missing services.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% description coverage for the single `deviceId` parameter, describing it as 'Device ID to query for available services'. The description does not add additional meaning or context about how to obtain the device ID or any constraints, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists available music services registered with the Sonos system, providing examples (Sonos Radio, TuneIn, Spotify) and specifying the returned details (name, ID, authentication type). This distinguishes it from sibling tools that focus on playback, control, or browsing other content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides crucial context about authentication requirements for most services, helping an agent decide when this tool is needed. However, it does not explicitly state when not to use it or offer alternatives like `sonos_search_music_service` or `sonos_browse_music_service`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_list_subscriptionsA
List all active event subscriptions for a device including subscription IDs and services.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation but does not explicitly state behavioral traits like permission requirements, error handling, or that it is non-destructive. With no annotations, more transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 12 words, front-loaded with the verb and resource. Every word is essential, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter, the description adequately covers purpose and output (IDs and services). However, it could mention if the list includes subscription status or other metadata since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter deviceId, which is already described as 'Room name, UUID, or IP address'. The description adds no additional parameter context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists active event subscriptions for a device, specifying output includes subscription IDs and services. It distinguishes from sibling tools like subscribe/unsubscribe by focusing on listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as sonos_subscribe_events or sonos_unsubscribe_events. The usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_nextA
Skip to next track in the queue.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The core behavior is described, but no details are given about edge cases (e.g., end of queue) or side effects. Since annotations are absent, the description carries the full transparency burden but provides only minimal context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with zero wasted words. Concisely conveys the essential action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple skip operation with one parameter, the description is largely complete. It explains what the tool does and what input is needed. Minor gap: no mention of output or status, but acceptable given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no additional meaning to the deviceId parameter beyond what is already in the schema's description. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action 'skip' and the resource 'next track in the queue', making the tool's purpose clear and distinct from siblings like sonos_previous or sonos_play.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., sonos_play_from_queue). The effect is implied but not differentiated in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_party_modeA
Join all discovered devices to the specified device to create a whole-house audio experience.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address (will become group coordinator) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It states that all discovered devices join the specified device, which becomes coordinator. However, it lacks details on side effects like stopping playback or volume adjustments, leaving some behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence (12 words) with no superfluous words. It efficiently communicates the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (one parameter, no output schema, no annotations), the description adequately conveys the tool's purpose. It might benefit from mentioning the default behavior of 'all discovered devices' or coordinator role, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the param description explains deviceId as coordinator. The tool description reinforces that meaning but does not add new constraints or format details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: joining all discovered devices to a specified device for a whole-house audio experience. It distinguishes from sibling tools like sonos_join_group by implying it affects all devices, making its purpose unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating whole-house audio but does not explicitly guide when to use this tool versus alternatives like sonos_join_group or sonos_unjoin. No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_pauseA
Pause playback on a Sonos device. Maintains current position in track and queue for quick resume. If device is in a group, affects entire group.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully carries the burden. It discloses that pause maintains current position in track/queue (for quick resume) and affects the entire group if the device is grouped. It does not mention error conditions or other side effects, but for a simple pause action, this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence states the core purpose, the second adds key behavioral details. Perfectly front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers purpose, behavior (maintains position), and group effect. Nothing essential is missing for an AI agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter (deviceId) described as 'Room name, UUID, or IP address'. The description adds no additional meaning to the parameter. Baseline is 3 because schema already documents the parameter sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Pause playback on a Sonos device.' It uses a specific verb ('pause') and resource ('playback on a Sonos device'). It distinguishes from siblings like sonos_stop by explicitly noting that it maintains current position for quick resume, and from sonos_play by being the opposite action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to temporarily pause without losing position) and mentions group behavior (affects entire group). However, it does not explicitly state when not to use it or compare it to sonos_stop, which would make guidelines clearer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_playA
Start or resume playback on a Sonos device. Continues from current queue position and respects volume settings. If device is in a group, affects entire group.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It explains continuation from current queue position and grouping interaction, which adds value. However, it lacks details on error conditions (e.g., empty queue) or permissions needed, which would be important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loading the key action and providing additional context efficiently. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the sibling tool set, the description covers the core operation, grouping behavior, and continuation from queue. It is mostly complete but could be improved by noting what happens if the queue is empty, which is not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the deviceId parameter described as 'Room name, UUID, or IP address.' The description adds no further meaning beyond this, so it meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Start or resume playback on a Sonos device,' specifying the action and resource. It distinguishes from siblings like sonos_pause and sonos_stop by explicitly describing the behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that playback continues from current queue position and that grouping affects the entire group, giving some usage context. However, it does not explicitly state when to use this over alternatives like sonos_play_from_queue, nor does it provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_play_from_queueB
Start playing from the queue at a specific position.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address | |
| position | Yes | Track position to start playing from (1-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits beyond the basic action; e.g., whether it continues playback, requires queue non-empty, or affects current state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single concise sentence with no wasted words, but could include slight more context without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description is adequate but not comprehensive; lacks context to differentiate from sonos_play.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'start playing' and resource 'from the queue at a specific position', clearly distinguishing it from sibling tools like sonos_play (plays from current position) and others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives; no mention of prerequisites or context where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_play_music_service_itemA
Play a specific item from a music service such as a radio station, track, album, or playlist. Use the item ID from browse or search results.
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Item ID to play (from browse or search results) | |
| deviceId | Yes | Device ID where playback should start | |
| itemTitle | No | Optional title of the item for metadata | |
| serviceName | Yes | Name of the music service (e.g., "Sonos Radio", "TuneIn") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behaviors. It only states the action (play) without detailing side effects (e.g., queue replacement, immediate playback, or device state requirements).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with verb and resource, no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a straightforward play action with detailed schema, but fails to mention return value or effect on current playback state, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description adds value for 'itemId' by indicating its source, but does not enhance other parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool plays a specific item from a music service (radio station, track, album, playlist), distinguishing it from siblings like 'sonos_play' which may handle queue-based playback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after browsing or searching via 'Use the item ID from browse or search results', but lacks explicit guidance on when to use this versus alternatives like 'sonos_play' or 'sonos_play_from_queue'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_previousA
Skip to previous track or restart current track if played more than a few seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the dual behavior (previous vs restart) which adds value beyond the name and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently communicates the tool's behavior without any superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately covers the behavioral nuances (skip vs restart) making it sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter (deviceId). The description does not add any additional semantics beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('skip to previous track or restart current track') and specifies a condition ('if played more than a few seconds'), making it distinct from siblings like sonos_next.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for track navigation but does not provide explicit guidance on when to use this tool versus alternatives like sonos_next or sonos_play.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_remove_from_queueA
Remove a track from the queue at the specified position.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address | |
| position | Yes | Track position to remove (1-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It discloses the core removal behavior but does not discuss side effects, error conditions, or implications for playback. The behavior is simple, so a score of 3 is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose. No unnecessary words or complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the lack of annotations or output schema, the description is minimally adequate. It covers the primary action but omits details on error handling, prerequisites, and the exact effect on the queue state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema provides for deviceId and position. It does not explain the 1-based indexing or context for deviceId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes a track from the queue at a specified position, using a specific verb and resource. It distinguishes itself from sibling tools like add_to_queue, clear_queue, and play_from_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool over alternatives, nor does it give context on prerequisites or typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_restore_snapshotA
Restore a previously saved snapshot to return device to its captured state. Optionally fade in volume.
| Name | Required | Description | Default |
|---|---|---|---|
| fade | No | Fade volume up on restore (default: false) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| snapshot | Yes | JSON string of the snapshot to restore |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It mentions the restore action and optional fade, but fails to describe behavioral traits such as whether current playback is interrupted, if the device must be online, or if the operation is irreversible (overwrites current state). This leaves significant gaps for the AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey the core purpose and a key option. No wasted words, and the most important information (restore snapshot) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema), the description covers the basics. However, it lacks information about what happens to the current device state, return values (e.g., success confirmation), or error conditions. For a restore operation, more behavioral context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter descriptions already provide meaning. The description adds context for the `fade` parameter ('Optionally fade in volume') but does not enhance understanding of `deviceId` or `snapshot` beyond the schema. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool restores a previously saved snapshot to return the device to its captured state, with optional fade-in. The verb 'Restore' paired with 'snapshot' distinctly identifies the action, and the sibling tool `sonos_snapshot` for saving makes the counterpart clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using this tool after a snapshot has been saved, but it does not explicitly state prerequisites (e.g., a snapshot must exist) or provide guidance against alternatives. No when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_save_queueB
Save the current queue as a Sonos playlist with the specified title.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Playlist title | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, and the description does not disclose behavioral traits such as whether existing playlists are overwritten, permission requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and simple schema, the description omits important context like handling duplicate titles or empty queues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'save' and resource 'current queue as a Sonos playlist', clearly distinguishing from siblings like add_to_queue or play_from_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives provided; usage is implied but lacks guidance on prerequisites like having a queue populated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_search_libraryB
Search the music library by artist, album, track, or genre. Returns matching items.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items to return (default: 100) | |
| deviceId | Yes | Room name, UUID, or IP address | |
| searchTerm | Yes | Search term | |
| searchType | Yes | Type of content to search | |
| startIndex | No | Starting index for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states 'Returns matching items.' Lacks disclosure of pagination limits (beyond schema), error handling, or potential side effects. Minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main action. No unnecessary words. Efficiently conveys core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, description is too brief. Missing details on result set, error behavior, and whether search is local vs online. Incomplete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. Description adds context by mentioning search categories matching the searchType enum, but provides no additional meaning for other parameters beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Search', resource 'music library', and specifies search categories (artist, album, track, genre). Distinguishes from sibling tools like sonos_search_music_service (external) and sonos_browse_* (browsing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use for searching local library, but no explicit guidance on when to use vs browsing or when not to use. Alternatives like browse tools are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_search_music_serviceA
Search for content within a music service. WARNING: Requires authentication for most services. Will return errors if the service requires DeviceLink or AppLink authentication and the user has not linked their account in the Sonos app. Prefer sonos_get_favorite_radio_stations for radio content.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Maximum number of results to return | |
| query | Yes | Search query (e.g., "BBC Radio 1", "rock music", "jazz") | |
| deviceId | Yes | Device ID to use for searching | |
| startIndex | No | Starting index for pagination | |
| serviceName | Yes | Name of the music service to search (e.g., "Sonos Radio", "TuneIn") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses authentication needs and potential errors, which are critical behavioral traits. However, it does not describe the return format or any side effects beyond search results, leaving some opacity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and a warning in front. It efficiently conveys key information without unnecessary verbosity, though it could be slightly more structured (e.g., separate sections for usage and warnings).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no output schema, the description does not explain the return structure or pagination details beyond the schema's parameter hints. It adequately covers authentication and error context but lacks completeness on what the search results look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning to parameters beyond what the schema already provides (e.g., parameter names and brief descriptions).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for content within a music service. It distinguishes from sibling tools by explicitly warning to prefer sonos_get_favorite_radio_stations for radio content, making the purpose specific and non-overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit authentication requirements and warns of errors if DeviceLink/AppLink authentication is not set up. It also directs users to an alternative tool for radio content, offering clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_bassA
Set bass EQ level. Range: -10 (reduced bass) to +10 (enhanced bass).
| Name | Required | Description | Default |
|---|---|---|---|
| bass | Yes | Bass level (-10 to 10) | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the range but not whether changes persist, affect grouped devices, or require any special privileges. Adequate for a simple set operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two short sentences. No fluff, front-loaded with purpose and range.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two simple parameters and no output schema, the description is mostly complete. It could note that the operation is device-specific, but deviceId is already in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes both parameters (bass range, deviceId format) with 100% coverage. Description adds no additional meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Set' and the resource 'bass EQ level'. It distinguishes from siblings like sonos_set_treble by specifying the EQ band. Range provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives (e.g., when to adjust bass vs treble or volume). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_crossfadeB
Enable or disable crossfade between tracks. Crossfade creates smooth transitions between songs.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | True to enable crossfade, false to disable | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states that crossfade creates smooth transitions but omits behavioral details like whether it immediately applies, affects queue playback, or requires certain state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with action. Could be slightly more structured but efficient for a simple toggling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (toggle, 2 params, no output schema), the description adequately covers the core functionality. It explains the value of crossfade, which helps the agent decide, but omits edge cases or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds context on what crossfade does but does not enhance parameter meaning beyond the schema's descriptions (enabled boolean, deviceId string).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('enable or disable') and the resource ('crossfade between tracks'). It uniquely identifies the tool among many siblings, as no other tool handles crossfade.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention context like when crossfade is beneficial or required, nor does it specify any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_dialog_modeA
Set dialog enhancement for home theater devices. Enhances speech clarity in movies and TV shows.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | True to enable dialog enhancement, false to disable | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only states the basic action and benefit, without noting potential side effects, persistence, or prerequisites. Minimal disclosure beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It conveys purpose and effect efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple boolean toggle with only two parameters, the description is largely sufficient. It mentions the scope (home theater devices), which is relevant context. No output schema exists, but the output is presumably a success/failure which is standard.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions (e.g., enabled boolean, deviceId as string).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Set' with a clear resource 'dialog enhancement' and scope 'home theater devices'. It also states the effect 'enhances speech clarity', which distinguishes it from sibling tools like sonos_set_night_mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., night mode or loudness). It only states the purpose, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_loudnessA
Enable or disable loudness compensation. Loudness boosts bass and treble at low volumes for better sound quality.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | True to enable loudness, false to disable | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description explains the audio effect but does not disclose side effects, permission requirements, or failure modes (e.g., device not found). Basic operational context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words, directly communicates the tool's function and benefit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and many sibling tools, the description sufficiently explains the tool's effect, though it could mention that the change applies to the specified device and is persistent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear parameter descriptions; the description adds value by explaining the purpose of loudness enhancement, which contextualizes the 'enabled' boolean beyond its schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool enables or disables loudness compensation, a specific audio feature, distinguishing it from sibling tools like sonos_set_bass or sonos_set_treble that adjust specific EQ bands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains that loudness boosts bass and treble at low volumes for better sound quality, implying use during low-volume listening, but lacks explicit when-to-use or when-not-to-use directives compared to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_muteA
Mute or unmute a Sonos device. Mute preserves volume level for quick unmute.
| Name | Required | Description | Default |
|---|---|---|---|
| mute | Yes | True to mute, false to unmute | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral detail that muting preserves the volume level for quick unmute, which is beyond the basic action. However, it lacks information about error handling or side effects, and there are no annotations to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no filler, and directly communicates the purpose and a key behavioral trait.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (mute/unmute), the description covers the essential behavioral context (volume preservation). While it could note error conditions or idempotency, it is largely sufficient for this straightforward command.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains both parameters. The description adds no extra meaning beyond what is in the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb (mute/unmute) and resource (Sonos device), and it distinguishes itself from sibling tools like sonos_set_volume by focusing on muting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_night_modeA
Set night mode for home theater devices. Reduces loud sounds and enhances quiet sounds for late-night viewing.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | True to enable night mode, false to disable | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the behavioral effect of enabling night mode (reduces loud sounds, enhances quiet sounds). No annotations exist, so the description carries the full burden; it adequately discloses the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary information. Front-loaded with the action and resource, then explains the effect efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completeness is good for a simple boolean toggle. The description explains what night mode does, and the schema covers parameters fully. Could mention device compatibility but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters well-described. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (set) and resource (night mode), with a specific description of its effect (reduces loud sounds, enhances quiet sounds). Distinguishes from sibling tools like sonos_set_mute or sonos_set_loudness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for late-night viewing, but lacks explicit when-to-use, when-not-to-use, or alternatives. The context from sibling tools provides some differentiation, but the description itself offers no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_repeatA
Set repeat mode for queue playback. Options: off (no repeat), all (repeat entire queue), one (repeat current track).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Repeat mode | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the direct action but fails to mention side effects, prerequisites (e.g., device must be in queue playback mode), or what happens when the mode is changed (e.g., immediate effect on current track). The description is too brief to fully inform the agent of behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that packs all essential information: action, scope (queue playback), and options. No filler words or redundancy. It is optimally concise for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with 2 parameters and no output schema, the description adequately covers the mode values and context. However, it omits any mention of device state requirements (e.g., must be playing a queue) or whether the setting persists across sessions. Given the tool's simplicity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions, but the enum values are not explained. The description adds clarity by defining each mode: 'off (no repeat), all (repeat entire queue), one (repeat current track)'. This meaningfully supplements the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Set repeat mode for queue playback' and lists the three modes (off, all, one). It distinguishes itself from sibling tools like sonos_set_shuffle and sonos_set_crossfade by specifying the exact setting being modified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides basic guidance by listing the available modes but offers no context on when to use this tool vs alternatives, no prerequisites (e.g., whether queue must be active), and no exclusion criteria. It is minimally helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_shuffleB
Enable or disable shuffle mode for queue playback.
| Name | Required | Description | Default |
|---|---|---|---|
| shuffle | Yes | True to enable shuffle, false to disable | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states the action without disclosing side effects, such as whether it takes effect immediately, requires playing state, or provides feedback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that directly states the tool's purpose. No extraneous information; front-loaded with action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple boolean toggle with two parameters and no output schema, the description is nearly complete. It specifies the target ('queue playback'). Lacks mention of default state or success confirmation, but adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already describes both parameters (shuffle boolean, deviceId string) with clear details. The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or disables shuffle mode for queue playback. It specifies the action on the resource 'shuffle mode', but does not differentiate it from siblings like sonos_set_repeat or sonos_set_crossfade.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, state requirements, or contrast with similar playback mode tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_sleep_timerA
Set a sleep timer to automatically stop playback after the specified duration. Format: HH:MM:SS (e.g., "00:30:00" for 30 minutes).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address | |
| duration | Yes | Duration in HH:MM:SS format (e.g., "00:30:00" for 30 minutes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the core behavior (stops playback after duration) but does not mention potential side effects like overriding an existing timer, behavior when paused, or error conditions. It is minimally adequate for a simple action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the purpose and format. Every word is necessary, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple and no output schema exists, the description lacks details on device compatibility (e.g., grouped players), interaction with existing timers, or result feedback. It is minimally complete for basic usage but leaves gaps for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds a format example for duration that is also present in the schema, providing no additional meaning beyond what the schema offers. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (set) and resource (sleep timer), and specifies the action (automatically stop playback after a duration). It distinguishes from sibling tools like sonos_get_sleep_timer and sonos_cancel_sleep_timer by focusing on setting the timer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool vs alternatives (e.g., sonos_stop, sonos_pause, or cancel timer). The description only states the function, leaving the agent to infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_trebleA
Set treble EQ level. Range: -10 (reduced treble) to +10 (enhanced treble).
| Name | Required | Description | Default |
|---|---|---|---|
| treble | Yes | Treble level (-10 to 10) | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses the range and effect (reduced/enhanced treble), which is essential. However, it does not mention other behavioral traits like whether the change is instantaneous, if it persists across sessions, or if it affects other EQ settings. It is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and range. There is no extraneous text, and it is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with 2 parameters and no output schema or annotations, the description covers the essential information. It could optionally mention that it sets treble for a specific device, but the deviceId parameter makes that clear. It is fairly complete given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already described in the schema. The description adds the range for treble but does not provide additional semantics beyond what the schema already states (e.g., for deviceId, the schema says 'Room name, UUID, or IP address'). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'treble EQ level', including the range. It distinguishes from sibling tools like sonos_set_bass or sonos_set_loudness by specifying the exact EQ parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives. There are many EQ-related siblings (bass, loudness, night mode, dialog mode), but the description does not help the agent decide which to use. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_set_volumeA
Set volume level on a Sonos device. Range: 0 (silent) to 100 (maximum). Affects entire group if device is grouped.
| Name | Required | Description | Default |
|---|---|---|---|
| volume | Yes | Volume level (0-100) | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the allowed range (0-100) and the important side effect that setting volume affects the entire group if the device is grouped. This is valuable transparency for an action tool. It could additionally mention if the operation is idempotent or if it requires the device to be online, but overall it is above average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the purpose and immediately follow with key constraints. Every word is necessary; no fluff or repetition. This is ideal for quick agent comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, no output schema, no nested objects), the description covers the primary aspects: function, range, and group behavior. It does not mention return values or error cases, but that is acceptable without an output schema. It is mostly complete but could be slightly improved by noting that the device must be available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for both parameters. The description adds the group effect context beyond the schema, but does not elaborate on parameter syntax or special values beyond the range (which is already in schema min/max). It contributes some value but not substantial given the schema is already clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'volume level on a Sonos device', making the tool's purpose immediately obvious. It distinguishes itself from sibling tools like sonos_get_volume, sonos_set_mute, and others by specifying volume setting. The range is also clarified, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a hint about when to use the tool (to set volume) but lacks explicit guidance on when not to use it or alternatives. For example, it doesn't contrast with sonos_get_volume or sonos_set_mute. The mention of group effect is useful but insufficient to fully guide an AI agent in tool selection among many volume-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_snapshotA
Take a snapshot of current device state including playback, volume, and EQ settings. Returns snapshot data for later restoration.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the action and return value, but does not explicitly confirm non-destructive behavior or mention any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. The core action and return value are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately covers purpose, scope (playback, volume, EQ), and return value. Minor gap: does not mention that snapshot should be used before changes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add meaning beyond what the schema already provides for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Take a snapshot') and resource ('current device state'), clearly distinguishing it from sibling tools like sonos_restore_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies usage for state capture but lacks context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_stopA
Stop playback on a Sonos device. Clears playback state, unlike pause which maintains position.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds that the tool clears playback state, but does not detail side effects like queue behavior or whether the device becomes unavailable for further commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and no extraneous information. Perfectly concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop command with one parameter and no output schema, the description covers the core function and distinguishes it from a key sibling. However, it could mention if there are any prerequisites or post-use state changes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for deviceId. The description adds no additional details about the parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'stop', the resource 'playback on a Sonos device', and distinguishes itself from the sibling 'pause' by noting it clears playback state. This specificity helps the agent select the correct tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use stop versus pause ('Clears playback state, unlike pause which maintains position'), but does not discuss other alternatives or conditions that might preclude its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_subscribe_eventsB
Subscribe to real-time events from a Sonos device service to receive automatic notifications of state changes.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Service name to subscribe to | |
| timeout | No | Subscription timeout in seconds (default: 1800 = 30 minutes) | |
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries full responsibility for behavioral disclosure. It only states the tool 'subscribes' and 'receives notifications' but omits critical details such as delivery mechanism, side effects (e.g., does it start a background listener?), lifecycle requirements (e.g., session duration), or error conditions (e.g., invalid deviceId).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately conveys the action and purpose. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 params, no output schema, no annotations), the description is too sparse. It does not explain the subscription response (e.g., subscription ID), the need to manage subscriptions with sibling tools, or how events will be delivered. An agent would lack sufficient context to use the tool correctly in a workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for each parameter, including an enum for 'service', a default for 'timeout', and a clear description for 'deviceId'. The description adds no additional meaning beyond the high-level purpose, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the active verb 'subscribe' with a clear resource 'real-time events from a Sonos device service' and specifies the outcome 'receive automatic notifications of state changes'. It distinguishes the tool from siblings like 'sonos_unsubscribe_events' by focusing on subscription initiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., when a subscription already exists, or prerequisites like discovering devices). There is no mention of exclusions or alternatives among the numerous sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_unjoinA
Remove a device from its current group, making it a standalone player.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states the core effect (removing from group) but does not disclose prerequisites (e.g., device must be grouped), error conditions, or side effects like playback continuity. For a simple action, it is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no unnecessary words. It is front-loaded with the key action and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description sufficiently conveys the purpose and basic behavior. It could be improved by noting that the device must be currently grouped, but overall it is complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description for deviceId ('Room name, UUID, or IP address') already explains the parameter. The description adds no additional semantic information beyond the schema, meeting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: removing a device from its group to make it standalone. It uses a specific verb 'Remove' and resource 'device from its current group', distinguishing it from sibling tools like sonos_join_group which performs the opposite operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when wanting to ungroup a device, but does not explicitly state when to use this tool vs. alternatives such as sonos_join_group or other grouping tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_unsubscribe_allA
Unsubscribe from all active event subscriptions for a specific device.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool performs a mutation (unsubscribing) but no annotations are present. It lacks details on required permissions, reversibility, side effects on ongoing events, or whether it is idempotent. For a tool with zero annotations, the description should provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that immediately conveys the action and scope. No extraneous words or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the basic purpose and scope. However, it lacks any guidance on prerequisites, side effects, or usage context, leaving gaps that could be filled for a more complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter (deviceId) with a clear description ('Room name, UUID, or IP address'). The description adds minimal value by specifying 'specific device' but does not enhance understanding beyond the schema. With 100% schema coverage, baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (unsubscribe) and the resource (all active event subscriptions for a specific device). It distinguishes from sibling tools like sonos_unsubscribe_events and sonos_list_subscriptions by specifying 'all' and 'for a specific device'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for unsubscribing from all subscriptions on a device, but does not explicitly state when to use this tool versus sonos_unsubscribe_events (which presumably unsubscribes from a single subscription) or other alternatives. No when-not-to-use criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_unsubscribe_eventsA
Unsubscribe from a specific event subscription to stop receiving notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | Room name, UUID, or IP address | |
| subscriptionId | Yes | Subscription ID (SID) to unsubscribe from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'stop receiving notifications' but omits whether the action is reversible, if cancellation is immediate, or any side effects on other subscriptions. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise, and front-loaded with the key action. No unnecessary words, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (2 params, no output schema), the description covers the core purpose adequately. However, it lacks behavioral details that would be helpful for an agent, such as whether unsubscribing clears the subscription or just pauses it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both deviceId and subscriptionId. The description does not add additional meaning beyond the schema, which is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: unsubscribe from a specific event subscription to stop notifications. It distinguishes from sibling tools like sonos_unsubscribe_all and sonos_subscribe_events, as it targets a specific subscription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for stopping notifications from a specific subscription, but it does not explicitly state when to use this tool versus alternatives like sonos_unsubscribe_all or sonos_list_subscriptions. No usage context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sonos_update_alarmB
Update an existing alarm. Only specified fields will be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| volume | No | Alarm volume (0-100) | |
| alarmId | Yes | Alarm ID to update | |
| enabled | No | Enable/disable alarm | |
| deviceId | Yes | Room name, UUID, or IP address | |
| startTime | No | Start time in HH:MM:SS format | |
| recurrence | No | DAILY, ONCE, WEEKDAYS, WEEKENDS, or ON_0123456 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The phrase 'Only specified fields will be changed' indicates partial update behavior. However, with no annotations, it lacks details on permission requirements or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It conveys the core action efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter update tool with no output schema, the description is minimal but covers the essential behavior. It lacks return value info and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal extra meaning beyond 'partial update'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an existing alarm' with the verb 'update' and resource 'alarm'. It distinguishes from siblings like sonos_create_alarm and sonos_delete_alarm.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., why not delete and recreate). No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
59 tool updates
v1.4.7- First observed
sonos_add_device - First observed
sonos_add_to_queue - First observed
sonos_browse_albums - First observed
sonos_browse_artists - First observed
sonos_browse_genres - First observed
sonos_browse_item - First observed
sonos_browse_music_service - First observed
sonos_browse_playlists - First observed
sonos_browse_tracks - First observed
sonos_cancel_sleep_timer - First observed
sonos_clear_queue - First observed
sonos_create_alarm - First observed
sonos_delete_alarm - First observed
sonos_discover - First observed
sonos_get_eq - First observed
sonos_get_favorite_radio_stations - First observed
sonos_get_music_service_item_uri - First observed
sonos_get_playback_state - First observed
sonos_get_position_info - First observed
sonos_get_queue - First observed
sonos_get_sleep_timer - First observed
sonos_get_transport_info - First observed
sonos_get_volume - First observed
sonos_get_zone_groups - First observed
sonos_join_group - First observed
sonos_list_alarms - First observed
sonos_list_devices - First observed
sonos_list_music_services - First observed
sonos_list_subscriptions - First observed
sonos_next - First observed
sonos_party_mode - First observed
sonos_pause - First observed
sonos_play - First observed
sonos_play_from_queue - First observed
sonos_play_music_service_item - First observed
sonos_previous - First observed
sonos_remove_from_queue - First observed
sonos_restore_snapshot - First observed
sonos_save_queue - First observed
sonos_search_library - First observed
sonos_search_music_service - First observed
sonos_set_bass - First observed
sonos_set_crossfade - First observed
sonos_set_dialog_mode - First observed
sonos_set_loudness - First observed
sonos_set_mute - First observed
sonos_set_night_mode - First observed
sonos_set_repeat - First observed
sonos_set_shuffle - First observed
sonos_set_sleep_timer - First observed
sonos_set_treble - First observed
sonos_set_volume - First observed
sonos_snapshot - First observed
sonos_stop - First observed
sonos_subscribe_events - First observed
sonos_unjoin - First observed
sonos_unsubscribe_all - First observed
sonos_unsubscribe_events - First observed
sonos_update_alarm
TDQS
Scored across 59 tools
Each tool targets a specific action on a distinct Sonos resource (e.g., discovery, playback, EQ, grouping, alarms, music library). There is no functional overlap; even similar tools like sonos_discover and sonos_list_devices serve different purposes.
All tools consistently use the 'sonos_' prefix followed by a clear verb-noun or noun-verb pattern (e.g., sonos_play, sonos_set_volume, sonos_get_position_info). The naming is predictable and readable.
59 tools is high, but each addresses a specific aspect of Sonos control (playback, queue, EQ, grouping, alarms, music services, etc.). The count is commensurate with the extensive feature set of a whole-home audio system.
The tool set covers most essential operations: discovery, playback, queue management, EQ, grouping, alarms, sleep timer, snapshots, and music library/search. Minor gaps exist (e.g., no direct URI play without queue, no firmware update), but core workflows are fully supported.
Maintenance
Related MCP Connectors
- mytesla.ioOAuthio.mytesla
Control your Tesla from your AI assistant - climate, charging, access, and security.
Manage digital signage screens, playlists and media from your AI assistant.
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Control your internet radio from any AI client: listeners, stream, playlists, AutoDJ, DJs, store.
Related MCP Servers
- FlicenseAqualityDmaintenanceA server that allows you to control and interact with Sonos devices on your network through the Model Context Protocol, providing functionalities for discovering devices, controlling playback, retrieving device states, and managing queues.189-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to control Music Assistant for music search, library browsing, playback, queue management, and playlist curation.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage macOS audio routing, device switching, volume control, and multi-zone playback.MIT
- FlicenseNot gradedqualityAmaintenanceEnables natural language control of Music Assistant home audio system, including playing music, controlling playback, adjusting volume, and managing queues, with intelligent player and provider resolution.2-