googleapis/mcp-toolbox · error

error embedding parameters: %w

Error message

error embedding parameters: %w

What it means

Thrown by runInvoke (cmd/internal/invoke/command.go:133) when tool.EmbedParams fails while processing parameter templates such as {{authToken}}, {{.param}} references, or embedding-model-backed parameters (e.g. {{embedding(...)}}) that resolve against the PrimitiveManager. It indicates a parameter that depends on runtime context or another primitive could not be embedded.

Source

Thrown at cmd/internal/invoke/command.go:133

	}

	toolParams, err := tool.GetParameters(src)
	if err != nil {
		errMsg := fmt.Errorf("error getting parameters for tool: %w", err)
		opts.Logger.ErrorContext(ctx, errMsg.Error())
		return errMsg
	}

	parsedParams, err := parameters.ParseParams(toolParams, params, nil)
	if err != nil {
		errMsg := fmt.Errorf("invalid parameters: %w", err)
		opts.Logger.ErrorContext(ctx, errMsg.Error())
		return errMsg
	}

	parsedParams, err = tool.EmbedParams(ctx, parsedParams, primitiveMgr)
	if err != nil {
		errMsg := fmt.Errorf("error embedding parameters: %w", err)
		opts.Logger.ErrorContext(ctx, errMsg.Error())
		return errMsg
	}

	// Client Auth not supported for ephemeral CLI call
	requiresAuth, err := tool.RequiresClientAuthorization(src)
	if err != nil {
		errMsg := fmt.Errorf("failed to check auth requirements: %w", err)
		opts.Logger.ErrorContext(ctx, errMsg.Error())
		return errMsg
	}
	if requiresAuth {
		errMsg := fmt.Errorf("client authorization is not supported")
		opts.Logger.ErrorContext(ctx, errMsg.Error())
		return errMsg
	}

	result, err := tool.Invoke(ctx, src, parsedParams, "")

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Read the wrapped error to find which parameter/template failed to embed.
  2. Verify the auth service or embedding model referenced by the tool's config exists and initialized successfully (check server startup logs).
  3. Fix the tools YAML so template expressions reference defined primitives with correct syntax.
  4. Remove the templated parameter or supply the value directly if dynamic embedding is not needed.

Example fix

# before (embedding model not defined)
tools:
  search:
    kind: postgres-sql
    parameters:
      - name: q
        type: string
        description: '{{embedding(myEmbedder) question}}'
# after (define the model under embeddingModels)
embeddingModels:
  myEmbedder:
    provider: gemini
    model: text-embedding-004
Defensive patterns

Strategy: validation

Validate before calling

// Before invoking, confirm referenced primitives initialized:
// 1) grep tools.yaml for template expressions: '{{'
// 2) confirm each referenced auth service / embedding model is defined in the same config
// 3) run toolbox serve and watch for 'failed to initialize resources'

Try / catch

if err := runInvoke(...); err != nil {
  if strings.Contains(err.Error(), "error embedding parameters") {
    log.Fatalf("unresolvable template/auth/embedding reference: %v", err)
  }
}

Prevention

When it happens

Trigger: Invoking a tool whose parameters contain template expressions: an auth service reference ({{authToken}}) with no auth service configured for the tool, an embedding parameter referencing an embeddingModelsMap entry that is missing or misconfigured, or an invalid template syntax.

Common situations: Tool YAML declares `authRequired: [myAuth]` but the auth service failed to initialize; an embedding-based tool (e.g. vector search) points at an embedding model name not defined in the config; typos in template placeholders inside parameter descriptions.

Related errors


AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05). Data as JSON: /api/errors/414e3eb8270bdd66. Report an issue: GitHub.