microsoft/semantic-kernel · error · FunctionExecutionException

No argument or value is provided for the `{parameter.name}`

Error message

No argument or value is provided for the `{parameter.name}` required parameter of the operation - `{self.id}`.

What it means

When building the query string, `build_query_string` iterates over QUERY-location parameters. For each required query parameter with no argument, this FunctionExecutionException is raised. Optional query parameters without arguments are skipped. This is the query-string analog of the header and path required-parameter checks.

Source

Thrown at python/semantic_kernel/connectors/openapi_plugin/models/rest_api_operation.py:394

        target once combined with the server URL, so such a path is excluded during operation selection
        to keep selection and request construction on one canonical target.
        """
        if not path:
            return False
        if path.startswith(("//", "\\\\", "/\\", "\\/")):
            return True
        parsed = urlparse(path)
        return bool(parsed.scheme or parsed.netloc)

    def build_query_string(self, arguments: dict[str, Any]) -> str:
        """Build the query string for the operation."""
        segments = []
        parameters = [p for p in self.parameters if p.location == RestApiParameterLocation.QUERY]
        for parameter in parameters:
            argument = arguments.get(parameter.name)
            if argument is None:
                if parameter.is_required:
                    raise FunctionExecutionException(
                        f"No argument or value is provided for the `{parameter.name}` "
                        f"required parameter of the operation - `{self.id}`."
                    )
                continue
            segments.append((parameter.name, argument))
        return urlencode(segments)

    def replace_invalid_symbols(self, parameter_name):
        """Replace invalid symbols in the parameter name with underscores."""
        return RestApiOperation.INVALID_SYMBOLS_REGEX.sub("_", parameter_name)

    def get_parameters(
        self,
        operation: "RestApiOperation",
        add_payload_params_from_metadata: bool = True,
        enable_payload_spacing: bool = False,
    ) -> list["RestApiParameter"]:
        """Get the parameters for the operation."""

View on GitHub (pinned to c028a0c7dc)

Solutions

  1. Provide a value for every required query parameter named in the error message.
  2. Review the OpenAPI spec for all query parameters with `required: true` and supply each at call time.
  3. If the parameter should be optional, correct the OpenAPI spec's `required` field.

Example fix

// before (missing required 'limit' query param)
await api.list_items()
// after
await api.list_items(limit=10)
Defensive patterns

Strategy: validation

Validate before calling

def validate_required_query_params(operation, arguments: dict):
    required = [p.name for p in operation.parameters
                if p.location == RestApiParameterLocation.QUERY and p.is_required]
    missing = [p for p in required if arguments.get(p) is None]
    if missing:
        raise ValueError(f"Missing required query parameters: {missing}")

Try / catch

try:
    result = await api.my_operation(**args)
except FunctionExecutionException as e:
    if "required parameter" in str(e):
        # supply the missing query parameter value
        ...

Prevention

When it happens

Trigger: Invoking an operation where a required query parameter (e.g. `?limit={limit}`) has no corresponding argument in the arguments dict. The caller omits a value for a query parameter marked `required: true`.

Common situations: Forgetting to pass a required query parameter like `limit`, `page`, or `fields`. Parameter name mismatch (camelCase vs snake_case). Assuming a query parameter is optional when the spec marks it required.

Related errors


AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13). Data as JSON: /api/errors/c98a19b4a98ecf45. Report an issue: GitHub.