CoplayDev/unity-mcp · error · NotSupportedException

Unknown audio provider '{id}'.

Error message

Unknown audio provider '{id}'.

What it means

AssetGenProviders.Audio lowercases the provider id and switches over it, returning an adapter for known audio providers ('fal' only). Any other id hits default and throws NotSupportedException.

Source

Thrown at MCPForUnity/Editor/Services/AssetGen/Providers/AssetGenProviders.cs:48

            switch ((id ?? string.Empty).ToLowerInvariant())
            {
                case "fal":
                    return new FalAdapter();
                case "openrouter":
                    return new OpenRouterAdapter();
                default:
                    throw new NotSupportedException($"Unknown image provider '{id}'.");
            }
        }

        public static IAudioProviderAdapter Audio(string id)
        {
            switch ((id ?? string.Empty).ToLowerInvariant())
            {
                case "fal":
                    return new FalAudioAdapter();
                default:
                    throw new NotSupportedException($"Unknown audio provider '{id}'.");
            }
        }

        public static IMarketplaceProviderAdapter Marketplace(string id)
        {
            switch ((id ?? string.Empty).ToLowerInvariant())
            {
                case "sketchfab":
                    return new SketchfabAdapter();
                default:
                    throw new NotSupportedException($"Unknown marketplace provider '{id}'.");
            }
        }

        public static IReadOnlyList<ProviderInfo> List()
        {
            return new List<ProviderInfo>
            {

View on GitHub (pinned to c21bf496bc)

Solutions

  1. Use the supported audio provider id: 'fal'.
  2. Enumerate providers via AssetGenProviders.List() and filter by Kind == 'audio' before selecting.
  3. If you need an unlisted audio provider, it must be implemented and registered first.
Defensive patterns

Strategy: validation

Validate before calling

var supported = AssetGenProviders.List().Where(p => p.Kind == "audio").Select(p => p.Id).ToHashSet();
if (!supported.Contains(id.ToLowerInvariant()))
    throw new ArgumentException($"Unknown audio provider '{id}'. Supported: {string.Join(", ", supported)}");
var adapter = AssetGenProviders.Audio(id);

Type guard

static readonly HashSet<string> KnownAudioProviders = new HashSet<string> { "fal" };
static bool IsKnownAudioProvider(string id) => KnownAudioProviders.Contains((id ?? "").ToLowerInvariant());

Try / catch

try { var adapter = AssetGenProviders.Audio(id); }
catch (NotSupportedException ex) when (ex.Message.Contains("Unknown audio provider"))
{
    var adapter = AssetGenProviders.Audio("fal");
}

Prevention

When it happens

Trigger: Calling Audio() with an id other than 'fal', such as 'elevenlabs', 'suno', or a typo.

Common situations: An AI/LLM hallucinating an audio provider; assuming a provider that exists for images also exists for audio; config referencing an unimplemented audio provider.

Related errors


AI-assisted analysis of CoplayDev/unity-mcp@c21bf496bc (2026-08-13). Data as JSON: /api/errors/b5e137e4415380f5. Report an issue: GitHub.