Skip to main content
Glama

play_error_sound

Play a system error sound to provide audio feedback for error conditions in macOS applications.

Instructions

Play an error system sound

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Executes the play_error_sound tool by calling the shared playSound helper with 'error' type and returns a success response.
    case 'play_error_sound':
      await playSound('error');
      return {
        content: [
          {
            type: 'text',
            text: 'Error sound played successfully',
          },
        ],
      };
  • src/index.ts:297-305 (registration)
    Registers the play_error_sound tool in the ListTools response with description and empty input schema.
    {
      name: 'play_error_sound',
      description: 'Play an error system sound',
      inputSchema: {
        type: 'object',
        properties: {},
        required: [],
      },
    },
  • Input schema for play_error_sound: empty object (no parameters required).
    inputSchema: {
      type: 'object',
      properties: {},
      required: [],
    },
  • Helper function playSound that implements the core logic: maps 'error' to 'Sosumi' system sound and spawns afplay process with throttling and timeout.
    async function playSound(soundType: 'info' | 'warning' | 'error'): Promise<void> {
      const requestId = `${soundType}-${Date.now()}`;
      
      // Throttle requests to prevent conflicts
      if (activeRequests.has(soundType)) {
        throw new Error(`${soundType} sound already playing`);
      }
      
      activeRequests.add(soundType);
      
      try {
        return new Promise((resolve, reject) => {
          let soundName: string;
          
          switch (soundType) {
            case 'info':
              soundName = 'Glass';
              break;
            case 'warning':
              soundName = 'Purr';
              break;
            case 'error':
              soundName = 'Sosumi';
              break;
            default:
              soundName = 'Glass';
          }
    
          const afplay = spawn('afplay', [`/System/Library/Sounds/${soundName}.aiff`]);
          
          // Add timeout
          const timeout = setTimeout(() => {
            afplay.kill();
            reject(new Error('Sound playback timed out'));
          }, PROCESS_TIMEOUT_MS);
          
          afplay.once('close', (code) => {
            clearTimeout(timeout);
            if (code === 0) {
              resolve();
            } else {
              reject(new Error(`Sound playback failed with code ${code}`));
            }
          });
          
          afplay.once('error', (error) => {
            clearTimeout(timeout);
            reject(error);
          });
        });
      } finally {
        activeRequests.delete(soundType);
      }
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nocoo/mcp-make-sound'

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