{"record":{"id":"b0b8441f4ec09e32","repo":"remotion-dev/remotion","slug":"the-artifact-filename-artifact-filename-was-emi","errorCode":null,"errorMessage":"The artifact filename ${artifact.filename} was emitted more than once. https://remotion.dev/docs/artifacts","messagePattern":"The artifact filename (.+?) was emitted more than once\\. https://remotion\\.dev/docs/artifacts","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/serverless/src/render-with-single-function.ts","lineNumber":140,"sourceCode":"\t\t\tpreferLossless: params.preferLossless,\n\t\t\tbrowserExecutable: providerSpecifics.getChromiumPath(),\n\t\t\tcancelSignal: params.enableCancellation ? cancelSignal : undefined,\n\t\t\tdisallowParallelEncoding: false,\n\t\t\toffthreadVideoCacheSizeInBytes: params.offthreadVideoCacheSizeInBytes,\n\t\t\tcolorSpace: params.colorSpace ?? undefined,\n\t\t\trepro: false,\n\t\t\tbinariesDirectory: null,\n\t\t\tonBrowserDownload: () => {\n\t\t\t\tthrow new Error('Should not download a browser in Lambda');\n\t\t\t},\n\t\t\tonArtifact: (artifact) => {\n\t\t\t\tconst registration = onArtifact({\n\t\t\t\t\tartifact,\n\t\t\t\t\tchunk: 0,\n\t\t\t\t\tattempt: 1,\n\t\t\t\t});\n\t\t\t\tif (registration.type === 'conflict') {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`The artifact filename ${artifact.filename} was emitted more than once. https://remotion.dev/docs/artifacts`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\tmetadata: params.metadata,\n\t\t\thardwareAcceleration: 'disable',\n\t\t\tchromeMode: 'headless-shell',\n\t\t\toffthreadVideoThreads: params.offthreadVideoThreads,\n\t\t\tmediaCacheSizeInBytes: params.mediaCacheSizeInBytes,\n\t\t\tlicenseKey: null,\n\t\t\tisProduction: false,\n\t\t\tsampleRate: params.sampleRate,\n\t\t\tonProgress: ({renderedFrames, encodedFrames}) => {\n\t\t\t\toverallProgress.setFrames({\n\t\t\t\t\tindex: 0,\n\t\t\t\t\trendered: renderedFrames,\n\t\t\t\t\tencoded: encodedFrames,\n\t\t\t\t});","sourceCodeStart":122,"sourceCodeEnd":158,"githubUrl":"https://github.com/remotion-dev/remotion/blob/8f9775815716e25b2a9fd9c5511015a17624243d/packages/serverless/src/render-with-single-function.ts#L122-L158","documentation":"The Studio Web MCP tool 'select composition' validates its compositionName argument at runtime since MCP input is untyped. A non-string value (number, object) throws immediately.","triggerScenarios":"An MCP client calling the selectComposition tool with compositionName as a non-string JSON value (e.g. a number).","commonSituations":"LLM-driven MCP clients passing unquoted ids, or hand-written tool invocations with wrong JSON types.","solutions":["Pass compositionName as a JSON string matching the composition id","Validate arguments on the client before invoking the MCP tool"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (typeof compositionName !== 'string' || compositionName.length === 0) { /* reject before invoking tool */ }","typeGuard":"const isNonEmptyString = (v: unknown): v is string => typeof v === 'string' && v.length > 0;","tryCatchPattern":null,"preventionTips":["Validate MCP tool args on the client against the JSON schema"],"tags":["studio","mcp","validation","web-mcp"],"backgroundTag":"mcp-invalid-argument","analyzedSha":"8f9775815716e25b2a9fd9c5511015a17624243d","analyzedAt":"2026-08-28T15:39:09.316Z","contentChangedAt":"2026-08-28T15:39:09.316Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}