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

  1. Add all three params: ?url=<endpoint>&id=<id>&name=<name>&description=<description>
  2. Make sure none of the three values is an empty string
  3. 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

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


AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16). Data as JSON: /api/errors/1a5155a6099b56cd. Report an issue: GitHub.