{"record":{"id":"1a5155a6099b56cd","repo":"aaif-goose/goose","slug":"missing-required-parameters-need-id-name-and-d","errorCode":null,"errorMessage":"Missing required parameters. Need: id, name, and description","messagePattern":"Missing required parameters\\. Need: id, name, and description","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"documentation/src/pages/deeplink-generator.tsx","lineNumber":95,"sourceCode":"          }\n\n          const server: ServerConfig = {\n            is_builtin: true,\n            id: extensionId,\n            environmentVariables: []\n          };\n          const link = generateDeeplink(server);\n          handleGeneratedLink(link, true);\n          return;\n        }\n\n        const remoteUrl = urlParams.get('url');\n        if (remoteUrl) {\n          const id = urlParams.get('id');\n          const name = urlParams.get('name');\n          const description = urlParams.get('description');\n          if (!id || !name || !description) {\n            throw new Error('Missing required parameters. Need: id, name, and description');\n          }\n          const server: ServerConfig = {\n            is_builtin: false,\n            type: 'streamable_http',\n            id,\n            name,\n            description,\n            url: remoteUrl,\n            environmentVariables: [],\n            headers: [],\n          };\n          urlParams.getAll('env').forEach(env => {\n            const separatorIndex = env.indexOf('=');\n            if (separatorIndex > 0) {\n              server.environmentVariables.push({\n                name: env.slice(0, separatorIndex),\n                description: env.slice(separatorIndex + 1),\n                required: true,","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/documentation/src/pages/deeplink-generator.tsx#L77-L113","documentation":"Thrown by the deeplink generator page when a url query parameter is present (remote server branch). To emit a streamable_http server deeplink the page needs id, name, and description alongside url; if any of the three is absent or empty (URLSearchParams.get returns '' which is falsy), it throws this error, which the surrounding catch shows via setError. It exists to stop generation of deeplinks that describe a remote MCP server with no identity metadata.","triggerScenarios":"Loading ?url=https://mcp.example.com/mcp with none of id/name/description; supplying only some of them, e.g. ?url=...&id=x; supplying empty values like ?url=...&name=.","commonSituations":"Sharing a remote MCP server link generated from a curl-ish habit (URL only); forgetting that all three metadata params are mandatory for the remote branch; values that were dropped because they contained unencoded characters.","solutions":["Add all three params: ?url=<endpoint>&id=<id>&name=<name>&description=<description>","Make sure none of the three values is an empty string","URL-encode values containing spaces or special characters so URLSearchParams does not lose them"],"exampleFix":"// before\nif (!id || !name || !description) {\n  throw new Error('Missing required parameters. Need: id, name, and description');\n}\n\n// after\nconst missing = [['id', id], ['name', name], ['description', description]]\n  .filter(([, v]) => !v)\n  .map(([k]) => k);\nif (missing.length > 0) {\n  setError(`Missing required parameters: ${missing.join(', ')}`);\n  return;\n}","handlingStrategy":"validation","validationCode":"const p = new URLSearchParams(window.location.search);\nconst hasRemoteMetadata =\n  Boolean(p.get('url')) &&\n  ['id', 'name', 'description'].every((k) => Boolean(p.get(k)));","typeGuard":null,"tryCatchPattern":"} catch (error) {\n  setError(error instanceof Error ? error.message : 'Invalid query string');\n}","preventionTips":["Whenever url= is present, include id, name, and description in the same query string","URL-encode all values so none round-trips as empty","Test shared links once in a browser before distributing them"],"tags":["url-params","react","validation","docs","streamable-http"],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}