BerriAI/litellm · error · HTTPException

Key requests MCP toolsets not allowed by team '{team_obj.tea

Error message

Key requests MCP toolsets not allowed by team '{team_obj.team_id}': {sorted(disallowed_toolsets)}. Team allows: {sorted(team_mcp_toolsets)}.

What it means

HTTPException(403) from _validate_requested_toolsets: the key request asks for MCP toolsets beyond the team's own allowlist (a non-empty team mcp_toolsets list). The message names the offending toolsets and the team's allowed set so the caller can correct the request.

Source

Thrown at litellm/proxy/management_helpers/object_permission_utils.py:684

            return
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail={
                "error": (
                    "Key is not in a team. MCP toolsets cannot be assigned to "
                    "personal keys by non-admin callers. Disallowed toolsets: "
                    f"{sorted(requested_toolsets)}."
                )
            },
        )
    team_op: Final = team_obj.object_permission
    team_mcp_toolsets: Final = team_op.mcp_toolsets if team_op is not None else None
    if not team_mcp_toolsets:
        return
    disallowed_toolsets: Final = requested_toolsets - set(team_mcp_toolsets)
    if not disallowed_toolsets:
        return
    raise HTTPException(
        status_code=status.HTTP_403_FORBIDDEN,
        detail={
            "error": (
                f"Key requests MCP toolsets not allowed by team '{team_obj.team_id}': "
                f"{sorted(disallowed_toolsets)}. "
                f"Team allows: {sorted(team_mcp_toolsets)}."
            )
        },
    )


def _extract_requested_vector_stores(
    object_permission: ObjectPermissionDict | None,
) -> set[str]:
    """Return vector_store IDs from a key's object_permission dict."""
    if not object_permission or not isinstance(object_permission, dict):
        return set()
    raw: Final = object_permission.get("vector_stores")

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Remove the disallowed MCP toolsets from the key request, or ask an admin to allow them for the team.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/management_helpers/object_permission_utils.py:684 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/d755a80b31643003. Report an issue: GitHub.