{"record":{"id":"90fd4e897fc4d9fe","repo":"CoplayDev/unity-mcp","slug":"unknown-marketplace-provider-id","errorCode":null,"errorMessage":"Unknown marketplace provider '{id}'.","messagePattern":"Unknown marketplace provider '(.+?)'\\.","errorType":"validation","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"MCPForUnity/Editor/Services/AssetGen/Providers/AssetGenProviders.cs","lineNumber":59,"sourceCode":"        public static IAudioProviderAdapter Audio(string id)\n        {\n            switch ((id ?? string.Empty).ToLowerInvariant())\n            {\n                case \"fal\":\n                    return new FalAudioAdapter();\n                default:\n                    throw new NotSupportedException($\"Unknown audio provider '{id}'.\");\n            }\n        }\n\n        public static IMarketplaceProviderAdapter Marketplace(string id)\n        {\n            switch ((id ?? string.Empty).ToLowerInvariant())\n            {\n                case \"sketchfab\":\n                    return new SketchfabAdapter();\n                default:\n                    throw new NotSupportedException($\"Unknown marketplace provider '{id}'.\");\n            }\n        }\n\n        public static IReadOnlyList<ProviderInfo> List()\n        {\n            return new List<ProviderInfo>\n            {\n                new ProviderInfo { Id = \"tripo\", Kind = \"model\", Configured = IsConfigured(\"tripo\"), Capabilities = new[] { \"text\", \"image\" } },\n                new ProviderInfo { Id = \"meshy\", Kind = \"model\", Configured = IsConfigured(\"meshy\"), Capabilities = new[] { \"text\", \"image\" } },\n                new ProviderInfo { Id = \"sketchfab\", Kind = \"marketplace\", Configured = IsConfigured(\"sketchfab\"), Capabilities = new[] { \"search\", \"import\" } },\n                new ProviderInfo { Id = \"fal\", Kind = \"image\", Configured = IsConfigured(\"fal\"), Capabilities = new[] { \"text\", \"image\" } },\n                new ProviderInfo { Id = \"openrouter\", Kind = \"image\", Configured = IsConfigured(\"openrouter\"), Capabilities = new[] { \"text\", \"image\" } },\n                // fal appears twice by design — once per kind (image + audio) — sharing the single \"fal\" key.\n                new ProviderInfo { Id = \"fal\", Kind = \"audio\", Configured = IsConfigured(\"fal\"), Capabilities = new[] { \"text\", \"music\", \"sfx\" } },\n            };\n        }\n\n        private static bool IsConfigured(string id)","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/CoplayDev/unity-mcp/blob/c21bf496bca87d54e75bad048563c3adb1782081/MCPForUnity/Editor/Services/AssetGen/Providers/AssetGenProviders.cs#L41-L77","documentation":"AssetGenProviders.Marketplace lowercases the provider id and switches over it, returning an adapter for known marketplace providers ('sketchfab' only). Any other id hits default and throws NotSupportedException.","triggerScenarios":"Calling Marketplace() with an id other than 'sketchfab', e.g. 'cgtrader', 'turbo', or a typo.","commonSituations":"An AI/LLM hallucinating a marketplace name; assuming a marketplace integration exists when only Sketchfab is implemented; config referencing an unimplemented marketplace.","solutions":["Use the supported marketplace provider id: 'sketchfab'.","Enumerate providers via AssetGenProviders.List() and filter by Kind == 'marketplace' before selecting.","Implement and register the adapter before referencing a new marketplace."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"var supported = AssetGenProviders.List().Where(p => p.Kind == \"marketplace\").Select(p => p.Id).ToHashSet();\nif (!supported.Contains(id.ToLowerInvariant()))\n    throw new ArgumentException($\"Unknown marketplace provider '{id}'. Supported: {string.Join(\", \", supported)}\");\nvar adapter = AssetGenProviders.Marketplace(id);","typeGuard":"static readonly HashSet<string> KnownMarketplaceProviders = new HashSet<string> { \"sketchfab\" };\nstatic bool IsKnownMarketplaceProvider(string id) => KnownMarketplaceProviders.Contains((id ?? \"\").ToLowerInvariant());","tryCatchPattern":"try { var adapter = AssetGenProviders.Marketplace(id); }\ncatch (NotSupportedException ex) when (ex.Message.Contains(\"Unknown marketplace provider\"))\n{\n    var adapter = AssetGenProviders.Marketplace(\"sketchfab\");\n}","preventionTips":["Only 'sketchfab' is supported for marketplace today.","Validate user/AI-provided marketplace names against List().","Register a new adapter before referencing an unimplemented marketplace."],"tags":["assetgen","provider","validation","marketplace"],"backgroundTag":null,"analyzedSha":"c21bf496bca87d54e75bad048563c3adb1782081","analyzedAt":"2026-08-13T17:36:56.095Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}