ComposioHQ/composio · error · ValueError

No data provided

Error message

No data provided

What it means

Raised by apply_modifier_by_type when none of schema, request, or response is provided. The modifier pipeline needs a data object to transform; with all inputs None there is nothing to apply modifiers to, so the library rejects the call.

Source

Thrown at python/composio/core/models/_modifiers.py:667

                        or toolkit in modifier.toolkits
                    )

                    if should_apply and modifier.modifier is not None:
                        result_response = t.cast(AfterExecuteMeta, modifier.modifier)(
                            tool, toolkit, session_id, result_response
                        )
            return result_response

    # For regular modifiers
    result: ModifierInOut
    if schema is not None:
        result = schema
    elif request is not None:
        result = request
    elif response is not None:
        result = response
    else:
        raise ValueError("No data provided")

    for modifier in modifiers:
        result = modifier.apply(
            toolkit=toolkit,
            tool=tool,
            data=result,
            modifer_type=type,
        )
    return result


class BeforeExecuteMeta(t.Protocol):
    """
    A modifier that is called before the meta tool is executed in a session context.
    """

    def __call__(
        self,

View on GitHub (pinned to 64b1b85502)

Solutions

  1. Pass at least one of schema, request, or response to apply_modifier_by_type
  2. If you only meant to validate modifier registration, don't invoke the apply path — registration APIs don't need data
  3. Debug why your execution state has no schema/request/response: usually the tool definition or execution failed earlier and the real error is being swallowed

Example fix

# before
result = apply_modifier_by_type(modifiers, type, toolkit=toolkit, tool=tool, schema=None, request=None, response=None)

# after
result = apply_modifier_by_type(modifiers, type, toolkit=toolkit, tool=tool, schema=schema)
Defensive patterns

Strategy: validation

Validate before calling

if schema is None and request is None and response is None:
    raise ValueError("nothing to modify: pass one of schema/request/response")
result = apply_modifier_by_type(modifiers, type, schema=schema, request=request, response=response, ...)

Try / catch

try:
    result = apply_modifier_by_type(...)
except ValueError as e:
    if "No data provided" in str(e):
        # skip modifier pass; nothing to transform
        return original
    raise

Prevention

When it happens

Trigger: Calling the modifier application API directly with all data arguments as None, or framework code that destructures an execution state into schema/request/response and finds none populated (e.g. a tool with neither a schema nor a pending request nor a response).

Common situations: Custom orchestration code that conditionally builds request/response objects and passes empty values on error paths; refactors where a variable rename left schema/request/response unset; mocking executions in tests without stubbing any data field.

Understand the failure class

Background: Missing required parameter errors: what 'X is required' and 'the required X param is missing' mean, and how to fix them — this error's family across 27 libraries.

Related errors


AI-assisted analysis of ComposioHQ/composio@64b1b85502 (2026-08-28). Data as JSON: /api/errors/e8008a224a39b259. Report an issue: GitHub.