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
- Use the supported audio provider id: 'fal'.
- Enumerate providers via AssetGenProviders.List() and filter by Kind == 'audio' before selecting.
- 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
- Only 'fal' is supported for audio today; validate against List().
- Do not forward image-only provider ids to the audio path.
- Re-check supported ids after upgrades, since the set may grow.
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
- Unknown model provider '{id}'.
- Unknown image provider '{id}'.
- Unknown marketplace provider '{id}'.
- uid required
- provider returned a disallowed file type '.{ext}'
AI-assisted analysis of CoplayDev/unity-mcp@c21bf496bc (2026-08-13).
Data as JSON: /api/errors/b5e137e4415380f5.
Report an issue: GitHub.