{"record":{"id":"c40f523871ae9a82","repo":"aaif-goose/goose","slug":"missing-required-parameter-cmd","errorCode":null,"errorMessage":"Missing required parameter: cmd","messagePattern":"Missing required parameter: cmd","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"documentation/src/pages/deeplink-generator.tsx","lineNumber":134,"sourceCode":"          });\n          urlParams.getAll('header').forEach(header => {\n            const separatorIndex = header.indexOf('=');\n            if (separatorIndex > 0) {\n              server.headers.push({\n                name: header.slice(0, separatorIndex),\n                description: header.slice(separatorIndex + 1),\n                required: true,\n              });\n            }\n          });\n          const link = generateDeeplink(server);\n          handleGeneratedLink(link, true);\n          return;\n        }\n\n        const cmd = urlParams.get('cmd');\n        if (!cmd) {\n          throw new Error('Missing required parameter: cmd');\n        }\n\n        const args = urlParams.getAll('arg') || [];\n        const command = [cmd, ...args].join(' ');\n        const id = urlParams.get('id');\n        const name = urlParams.get('name');\n        const description = urlParams.get('description');\n\n        if (!id || !name || !description) {\n          throw new Error('Missing required parameters. Need: id, name, and description');\n        }\n\n        const server: ServerConfig = {\n          is_builtin: false,\n          type: 'stdio',\n          id,\n          name,\n          description,","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/documentation/src/pages/deeplink-generator.tsx#L116-L152","documentation":"Thrown by the deeplink generator page when the query string matches neither the built-in branch (cmd=goose plus an arg 'mcp') nor the remote branch (a url param), and also has no cmd parameter. cmd is the entry point of the stdio fallback branch (command plus args joined into one command string), so without it the page cannot build any server config and throws. The catch block renders the message inline via setError.","triggerScenarios":"Loading ?id=x&name=y&description=z (metadata but no cmd); loading ?arg=npx&arg=some-server without cmd; a typo'd or empty param like ?cmdd=npx or ?cmd=.","commonSituations":"Copying only the tail of a generator URL and losing the cmd param; assuming the page infers the command from arg values; using a parameter name the page does not read (e.g. command= instead of cmd=).","solutions":["Add the command parameter, e.g. ?cmd=npx&arg=-y&arg=some-mcp-server plus id/name/description","If you meant a built-in extension, use ?cmd=goose&arg=mcp&arg=<extensionId> instead","If you meant a remote server, replace cmd with url= plus id/name/description"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const cmd = new URLSearchParams(window.location.search).get('cmd');\nconst hasCmd = Boolean(cmd);","typeGuard":null,"tryCatchPattern":"} catch (error) {\n  setError(error instanceof Error ? error.message : 'Invalid query string');\n}","preventionTips":["Include cmd for stdio links, url= for remote links, cmd=goose&arg=mcp&arg=<id> for built-ins","Double-check parameter names (cmd, arg, url, id, name, description) against the page's contract","Never assume args alone imply a command"],"tags":["url-params","react","validation","docs","stdio"],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}