aaif-goose/goose · warning
Missing required parameters. Need: id, name, and description
Error message
Missing required parameters. Need: id, name, and description
What it means
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.
Source
Thrown at documentation/src/pages/deeplink-generator.tsx:95
}
const server: ServerConfig = {
is_builtin: true,
id: extensionId,
environmentVariables: []
};
const link = generateDeeplink(server);
handleGeneratedLink(link, true);
return;
}
const remoteUrl = urlParams.get('url');
if (remoteUrl) {
const id = urlParams.get('id');
const name = urlParams.get('name');
const description = urlParams.get('description');
if (!id || !name || !description) {
throw new Error('Missing required parameters. Need: id, name, and description');
}
const server: ServerConfig = {
is_builtin: false,
type: 'streamable_http',
id,
name,
description,
url: remoteUrl,
environmentVariables: [],
headers: [],
};
urlParams.getAll('env').forEach(env => {
const separatorIndex = env.indexOf('=');
if (separatorIndex > 0) {
server.environmentVariables.push({
name: env.slice(0, separatorIndex),
description: env.slice(separatorIndex + 1),
required: true,View on GitHub (pinned to 3810898a74)
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
Example fix
// before
if (!id || !name || !description) {
throw new Error('Missing required parameters. Need: id, name, and description');
}
// after
const missing = [['id', id], ['name', name], ['description', description]]
.filter(([, v]) => !v)
.map(([k]) => k);
if (missing.length > 0) {
setError(`Missing required parameters: ${missing.join(', ')}`);
return;
} Defensive patterns
Strategy: validation
Validate before calling
const p = new URLSearchParams(window.location.search);
const hasRemoteMetadata =
Boolean(p.get('url')) &&
['id', 'name', 'description'].every((k) => Boolean(p.get(k))); Try / catch
} catch (error) {
setError(error instanceof Error ? error.message : 'Invalid query string');
} Prevention
- 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
When it happens
Trigger: 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=.
Common situations: 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.
Related errors
- Missing extension ID in args
- Missing required parameter: cmd
- Resource '${fallbackUri}' returned no contents
- Unknown provider: ${providerId}
- Unsupported extension type for ACP: ${config.type}
AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16).
Data as JSON: /api/errors/1a5155a6099b56cd.
Report an issue: GitHub.