scalekit-sdk-python 2.20.0__tar.gz → 2.21.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/PKG-INFO +2 -2
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/README.md +1 -1
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/_version.py +1 -1
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/actions.py +101 -23
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/core.py +1 -1
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/mcp.py +158 -20
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/auth_pb2.py +59 -15
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/auth_pb2.pyi +54 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/auth_pb2_grpc.py +36 -3
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/clients_pb2.py +113 -89
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/clients_pb2.pyi +37 -6
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +75 -61
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +18 -2
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +34 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/connections_pb2.py +108 -98
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/connections_pb2.pyi +14 -4
- scalekit_sdk_python-2.21.0/scalekit/v1/gateway/gateway_pb2.py +153 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/gateway/gateway_pb2.pyi +6 -2
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/mcp_pb2.py +16 -10
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/mcp_pb2.pyi +6 -2
- scalekit_sdk_python-2.21.0/scalekit/v1/migrations/migrations_pb2.py +129 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/migrations/migrations_pb2.pyi +32 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +33 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/organizations_pb2.py +63 -29
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/organizations_pb2.pyi +47 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +66 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/tools_pb2.py +48 -48
- scalekit_sdk_python-2.21.0/scalekit/v1/triggers/triggers_pb2.py +376 -0
- scalekit_sdk_python-2.21.0/scalekit/v1/triggers/triggers_pb2.pyi +567 -0
- scalekit_sdk_python-2.21.0/scalekit/v1/triggers/triggers_pb2_grpc.py +518 -0
- scalekit_sdk_python-2.21.0/scalekit/v1/workspaces/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/PKG-INFO +2 -2
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/SOURCES.txt +6 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_mcp.py +46 -0
- scalekit_sdk_python-2.21.0/tests/test_mcp_connection_session_token.py +351 -0
- scalekit_sdk_python-2.21.0/tests/test_mcp_session_token_access_level.py +75 -0
- scalekit_sdk_python-2.20.0/scalekit/v1/gateway/gateway_pb2.py +0 -151
- scalekit_sdk_python-2.20.0/scalekit/v1/migrations/migrations_pb2.py +0 -119
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/LICENSE +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/validate_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/validate_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/validate_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/pyproject.toml +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/google_adk.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/langchain.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/util.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/custom_provider.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/mcp_config.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/mcp_connection_auth_state.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/mcp_instance.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/tool_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_mcp_session_token_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_tools_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/tool_input_output.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/tool_mapping.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/modifier.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/types.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/auth.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/client.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/exceptions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/scalekit.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/user.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/connected_accounts.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/connection.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/constants/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/constants/user.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/directory.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/domain.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/events.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/django.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/fastapi.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/flask.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/m2m_client.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/csrf_state.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/protocol.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/session_crypto.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/session_manager.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/organization.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/passwordless.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/permissions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/providers.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/resource.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/role.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/sessions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/token.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/tools.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/users.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/utils/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/utils/directory.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/totp_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/billing_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/billing_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/billing_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/commons_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/directories_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/domains_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/emails_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/environments_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/events_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/events_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/gateway/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/gateway/gateway_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/keys_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/logstreams_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/logstreams_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/logstreams_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/members_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/members_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/migrations/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/options_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/options_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/providers_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/roles_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0/scalekit/v1/user_attributes → scalekit_sdk_python-2.21.0/scalekit/v1/triggers}/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0/scalekit/v1/users → scalekit_sdk_python-2.21.0/scalekit/v1/user_attributes}/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0/scalekit/v1/webhooks → scalekit_sdk_python-2.21.0/scalekit/v1/users}/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/users/users_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/users/users_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0/scalekit/v1/workspaces → scalekit_sdk_python-2.21.0/scalekit/v1/webhooks}/__init__.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/webauthn.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/setup.cfg +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/setup.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_actions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_actions_list_connected_accounts_pagination.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_call_timeout.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_connected_accounts.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_connection.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_directory.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_domain.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_events.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_http_timeout.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_keepalive_channel_options.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_login.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_m2m_client.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_csrf_state.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_django.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_fastapi.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_flask.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_session_crypto.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_session_manager.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_multi_issuer.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_org_roles.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_organization.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_organization_session_policy.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_organization_slug_logo.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_passwordless.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_permissions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_providers.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_resource.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_role_defaults_dependent.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_roles.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_sessions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_sk819_retry_behavior.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_tokens.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_tools.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_transient_error_no_retry.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_user_roles_permissions.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_users.py +0 -0
- {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_webauthn_credentials.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scalekit-sdk-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.21.0
|
|
4
4
|
Summary: Scalekit official Python SDK
|
|
5
5
|
Home-page: https://github.com/scalekit-inc/scalekit-sdk-python
|
|
6
6
|
Author: Team Scalekit
|
|
@@ -60,7 +60,7 @@ Dynamic: summary
|
|
|
60
60
|
[](https://opensource.org/licenses/MIT)
|
|
61
61
|
[](https://pypi.org/project/scalekit-sdk-python/)
|
|
62
62
|
|
|
63
|
-
<a href="https://scalekit.com" target="_blank" rel="noopener noreferrer">Scalekit</a>
|
|
63
|
+
<a href="https://scalekit.com" target="_blank" rel="noopener noreferrer">Scalekit</a> provides auth and actions on behalf of users, with 500+ connectors and 20,000+ tools. Build secure AI products faster with authentication for humans (SSO, passwordless, full-stack auth) and agents (MCP/APIs, delegated actions), all unified on one platform. This Python SDK enables both traditional B2B authentication and cutting-edge agentic workflows.
|
|
64
64
|
|
|
65
65
|
## 🤖 Agent-First Features
|
|
66
66
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
[](https://opensource.org/licenses/MIT)
|
|
14
14
|
[](https://pypi.org/project/scalekit-sdk-python/)
|
|
15
15
|
|
|
16
|
-
<a href="https://scalekit.com" target="_blank" rel="noopener noreferrer">Scalekit</a>
|
|
16
|
+
<a href="https://scalekit.com" target="_blank" rel="noopener noreferrer">Scalekit</a> provides auth and actions on behalf of users, with 500+ connectors and 20,000+ tools. Build secure AI products faster with authentication for humans (SSO, passwordless, full-stack auth) and agents (MCP/APIs, delegated actions), all unified on one platform. This Python SDK enables both traditional B2B authentication and cutting-edge agentic workflows.
|
|
17
17
|
|
|
18
18
|
## 🤖 Agent-First Features
|
|
19
19
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from datetime import timedelta
|
|
2
|
-
from typing import Optional, Any, List, Dict, Union
|
|
2
|
+
from typing import Optional, Any, List, Dict, Union, overload
|
|
3
3
|
import requests
|
|
4
4
|
from scalekit.actions.types import ToolRequest,ExecuteToolResponse,MagicLinkResponse,ListConnectedAccountsResponse,ListToolsResponse,DeleteConnectedAccountResponse,GetConnectedAccountAuthResponse,GetConnectedAccountDetailsResponse,ToolInput, \
|
|
5
5
|
UpdateConnectedAccountResponse,CreateMcpConfigResponse,ListMcpConfigsResponse,UpdateMcpConfigResponse,DeleteMcpConfigResponse, \
|
|
@@ -16,6 +16,7 @@ from scalekit.actions.modifier import (
|
|
|
16
16
|
apply_pre_modifiers, apply_post_modifiers
|
|
17
17
|
)
|
|
18
18
|
from scalekit.common.exceptions import ScalekitNotFoundException
|
|
19
|
+
from scalekit.mcp import _check_connection_token_args
|
|
19
20
|
from scalekit.v1.tools.tools_pb2 import Filter
|
|
20
21
|
from google.protobuf.wrappers_pb2 import BoolValue
|
|
21
22
|
|
|
@@ -1366,63 +1367,140 @@ class ActionMcp:
|
|
|
1366
1367
|
)
|
|
1367
1368
|
return ListMcpConnectedAccountsResponse.from_proto(result_tuple[0])
|
|
1368
1369
|
|
|
1370
|
+
@overload
|
|
1369
1371
|
def create_session_token(
|
|
1370
1372
|
self,
|
|
1371
1373
|
mcp_config_id: str,
|
|
1372
1374
|
identifier: str,
|
|
1373
|
-
expiry:
|
|
1375
|
+
expiry: timedelta | None = None,
|
|
1376
|
+
access_level: str | None = None,
|
|
1377
|
+
) -> CreateMcpSessionTokenResponse: ...
|
|
1378
|
+
|
|
1379
|
+
@overload
|
|
1380
|
+
def create_session_token(
|
|
1381
|
+
self,
|
|
1382
|
+
*,
|
|
1383
|
+
connection_name: str,
|
|
1384
|
+
identifier: str,
|
|
1385
|
+
expiry: timedelta | None = None,
|
|
1386
|
+
access_level: str | None = None,
|
|
1387
|
+
) -> CreateMcpSessionTokenResponse: ...
|
|
1388
|
+
|
|
1389
|
+
def create_session_token(
|
|
1390
|
+
self,
|
|
1391
|
+
mcp_config_id: str | None = None,
|
|
1392
|
+
identifier: str | None = None,
|
|
1393
|
+
expiry: timedelta | None = None,
|
|
1394
|
+
access_level: str | None = None,
|
|
1395
|
+
*,
|
|
1396
|
+
connection_name: str | None = None,
|
|
1374
1397
|
) -> CreateMcpSessionTokenResponse:
|
|
1375
1398
|
"""Create a short-lived session token for a user to access an MCP server.
|
|
1376
1399
|
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1400
|
+
Pass exactly one of ``mcp_config_id`` or ``connection_name``; the
|
|
1401
|
+
token works only on the MCP server of that target:
|
|
1402
|
+
|
|
1403
|
+
- ``mcp_config_id``: the MCP configuration's server, at the config's
|
|
1404
|
+
``mcp_server_url``. It serves the tools the configuration exposes.
|
|
1405
|
+
- ``connection_name``: the connection's own MCP server, at
|
|
1406
|
+
``<environment_url>/mcp/v3/connections/<connection_name>``. It
|
|
1407
|
+
serves every tool of that connection, with no MCP configuration.
|
|
1408
|
+
|
|
1409
|
+
Send the token as a ``Bearer`` token in the ``Authorization`` header
|
|
1410
|
+
when calling that URL.
|
|
1380
1411
|
|
|
1381
1412
|
Args:
|
|
1382
|
-
mcp_config_id: Scalekit ID of the MCP configuration the token
|
|
1383
|
-
|
|
1384
|
-
identifier: End-user identifier
|
|
1385
|
-
the same email or opaque ID used when
|
|
1386
|
-
e.g. ``"alice@example.com"
|
|
1413
|
+
mcp_config_id: Scalekit ID of the MCP configuration the token
|
|
1414
|
+
grants access to, e.g. ``"cfg_01abc123"``.
|
|
1415
|
+
identifier: End-user identifier the token acts as. For a
|
|
1416
|
+
configuration, typically the same email or opaque ID used when
|
|
1417
|
+
calling ``ensure_instance``, e.g. ``"alice@example.com"``; for
|
|
1418
|
+
a connection, the user whose connected account on it is used.
|
|
1419
|
+
1 to 255 characters. Required.
|
|
1387
1420
|
expiry: Requested lifetime for the token as a Python ``timedelta``.
|
|
1388
|
-
|
|
1389
|
-
|
|
1421
|
+
The server accepts 60 seconds to 24 hours and applies 1 hour
|
|
1422
|
+
when omitted. Fractions of a second are dropped. Example values:
|
|
1390
1423
|
|
|
1391
1424
|
- ``timedelta(minutes=30)`` — 30-minute token
|
|
1392
1425
|
- ``timedelta(hours=8)`` — 8-hour token (work-day session)
|
|
1393
1426
|
- ``timedelta(days=1)`` — 24-hour token
|
|
1427
|
+
access_level: Tools the token can use. ``"READ_ONLY"`` limits it to
|
|
1428
|
+
tools annotated read-only: other tools are left out of the tool
|
|
1429
|
+
list and refused when called. ``"FULL"``, or omitting it, exposes
|
|
1430
|
+
every tool of the target. Values are case-sensitive.
|
|
1431
|
+
connection_name: Name of the connection whose MCP server the token
|
|
1432
|
+
grants access to, e.g. ``"gmail"``. Keyword-only. Matched
|
|
1433
|
+
without regard to case, but the server URL path is
|
|
1434
|
+
case-sensitive: connect using the name exactly as stored, e.g.
|
|
1435
|
+
copied from the dashboard.
|
|
1394
1436
|
|
|
1395
1437
|
Returns:
|
|
1396
1438
|
CreateMcpSessionTokenResponse: Contains:
|
|
1397
1439
|
|
|
1398
1440
|
- ``token`` (``str``) — opaque bearer token string.
|
|
1399
|
-
- ``expires_at`` (``datetime``) —
|
|
1441
|
+
- ``expires_at`` (``datetime``) — naive datetime, in UTC, when the
|
|
1442
|
+
token expires.
|
|
1400
1443
|
|
|
1401
1444
|
Raises:
|
|
1402
|
-
ValueError:
|
|
1445
|
+
ValueError: Raised before any request. Without
|
|
1446
|
+
``connection_name``: ``mcp_config_id`` or ``identifier`` is
|
|
1447
|
+
empty or missing. With ``connection_name``: ``mcp_config_id``
|
|
1448
|
+
is also given, ``connection_name`` is empty, or ``identifier``
|
|
1449
|
+
is missing or empty.
|
|
1450
|
+
ScalekitNotFoundException: No active connection has
|
|
1451
|
+
``connection_name``.
|
|
1452
|
+
ScalekitBadRequestException: Any other invalid request, e.g. an
|
|
1453
|
+
invalid ``identifier``, ``expiry`` or ``access_level``, or a
|
|
1454
|
+
connection that is not an AgentKit connection. Depending on
|
|
1455
|
+
the environment's configuration, a connection token also
|
|
1456
|
+
requires ``identifier`` to have an active connected account on
|
|
1457
|
+
the connection; otherwise the server creates a pending
|
|
1458
|
+
connected account for ``identifier`` if it has none on the
|
|
1459
|
+
connection, a token is minted, and the account is reported as
|
|
1460
|
+
not connected when tools are called.
|
|
1403
1461
|
|
|
1404
1462
|
Example::
|
|
1405
1463
|
|
|
1406
1464
|
from datetime import timedelta
|
|
1407
1465
|
|
|
1466
|
+
# MCP configuration
|
|
1408
1467
|
resp = client.actions.mcp.create_session_token(
|
|
1409
1468
|
mcp_config_id="cfg_01abc123",
|
|
1410
1469
|
identifier="alice@example.com",
|
|
1411
1470
|
expiry=timedelta(hours=8),
|
|
1412
1471
|
)
|
|
1413
1472
|
|
|
1473
|
+
# A connection's MCP server, read-only tools for 15 minutes
|
|
1474
|
+
resp = client.actions.mcp.create_session_token(
|
|
1475
|
+
connection_name="gmail",
|
|
1476
|
+
identifier="user_123",
|
|
1477
|
+
expiry=timedelta(minutes=15),
|
|
1478
|
+
access_level="READ_ONLY",
|
|
1479
|
+
)
|
|
1480
|
+
|
|
1414
1481
|
headers = {"Authorization": f"Bearer {resp.token}"}
|
|
1415
1482
|
# Use headers when calling the MCP server URL
|
|
1416
1483
|
"""
|
|
1417
|
-
if
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1484
|
+
if connection_name is None:
|
|
1485
|
+
# Checks and messages unchanged from before connection_name existed.
|
|
1486
|
+
if not mcp_config_id:
|
|
1487
|
+
raise ValueError("mcp_config_id is required")
|
|
1488
|
+
if not identifier:
|
|
1489
|
+
raise ValueError("identifier is required")
|
|
1490
|
+
result_tuple = self._client().create_session_token(
|
|
1491
|
+
mcp_config_id=mcp_config_id,
|
|
1492
|
+
identifier=identifier,
|
|
1493
|
+
expiry=expiry,
|
|
1494
|
+
access_level=access_level,
|
|
1495
|
+
)
|
|
1496
|
+
else:
|
|
1497
|
+
identifier = _check_connection_token_args(mcp_config_id, connection_name, identifier)
|
|
1498
|
+
result_tuple = self._client().create_session_token(
|
|
1499
|
+
connection_name=connection_name,
|
|
1500
|
+
identifier=identifier,
|
|
1501
|
+
expiry=expiry,
|
|
1502
|
+
access_level=access_level,
|
|
1503
|
+
)
|
|
1426
1504
|
return CreateMcpSessionTokenResponse.from_proto(result_tuple[0])
|
|
1427
1505
|
|
|
1428
1506
|
|
|
@@ -187,7 +187,7 @@ class CoreClient:
|
|
|
187
187
|
|
|
188
188
|
sdk_version = f"Scalekit-Python/{_sdk_version}"
|
|
189
189
|
# YYYYMMDD
|
|
190
|
-
api_version = "
|
|
190
|
+
api_version = "20261012"
|
|
191
191
|
user_agent = f"{sdk_version} Python/{platform.python_version()} ({platform.system()}; {platform.architecture()}"
|
|
192
192
|
|
|
193
193
|
def __init__(
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import enum
|
|
1
2
|
from datetime import timedelta
|
|
2
|
-
from typing import Optional,
|
|
3
|
+
from typing import List, Optional, overload
|
|
3
4
|
|
|
5
|
+
import grpc
|
|
4
6
|
from google.protobuf.duration_pb2 import Duration
|
|
5
7
|
|
|
6
8
|
from scalekit.core import CoreClient
|
|
@@ -8,6 +10,44 @@ from scalekit.v1.mcp.mcp_pb2 import *
|
|
|
8
10
|
from scalekit.v1.mcp.mcp_pb2_grpc import McpServiceStub
|
|
9
11
|
|
|
10
12
|
|
|
13
|
+
class _Unset(enum.Enum):
|
|
14
|
+
"""Type of ``_UNSET``: marks an argument the caller did not pass."""
|
|
15
|
+
|
|
16
|
+
UNSET = enum.auto()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
_UNSET = _Unset.UNSET
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _check_connection_token_args(
|
|
23
|
+
mcp_config_id: str | None | _Unset,
|
|
24
|
+
connection_name: str,
|
|
25
|
+
identifier: str | None,
|
|
26
|
+
) -> str:
|
|
27
|
+
"""Check the arguments of a connection session token before any request.
|
|
28
|
+
|
|
29
|
+
Only the connection form is checked here: the MCP configuration form keeps
|
|
30
|
+
the checks each facade had before ``connection_name`` existed.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
The identifier, known to be non-empty.
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ValueError: ``mcp_config_id`` is also given, ``connection_name`` is
|
|
37
|
+
empty, or ``identifier`` is missing or empty.
|
|
38
|
+
"""
|
|
39
|
+
if mcp_config_id is not _UNSET and mcp_config_id is not None:
|
|
40
|
+
raise ValueError(
|
|
41
|
+
"Pass either mcp_config_id or connection_name, not both: a session token "
|
|
42
|
+
"is for one MCP configuration or for one connection's MCP server"
|
|
43
|
+
)
|
|
44
|
+
if not connection_name:
|
|
45
|
+
raise ValueError("connection_name must not be empty")
|
|
46
|
+
if not identifier:
|
|
47
|
+
raise ValueError("identifier is required")
|
|
48
|
+
return identifier
|
|
49
|
+
|
|
50
|
+
|
|
11
51
|
class McpClient:
|
|
12
52
|
"""Class definition for MCP Client"""
|
|
13
53
|
|
|
@@ -282,32 +322,130 @@ class McpClient:
|
|
|
282
322
|
request,
|
|
283
323
|
)
|
|
284
324
|
|
|
325
|
+
@overload
|
|
285
326
|
def create_session_token(
|
|
286
327
|
self,
|
|
287
328
|
mcp_config_id: str,
|
|
288
329
|
identifier: str,
|
|
289
|
-
expiry:
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
Create a short-lived session token for a user to authenticate against an MCP server.
|
|
330
|
+
expiry: timedelta | None = None,
|
|
331
|
+
access_level: str | None = None,
|
|
332
|
+
) -> tuple[CreateMcpSessionTokenResponse, grpc.Call]: ...
|
|
293
333
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
:
|
|
299
|
-
:
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
334
|
+
@overload
|
|
335
|
+
def create_session_token(
|
|
336
|
+
self,
|
|
337
|
+
*,
|
|
338
|
+
connection_name: str,
|
|
339
|
+
identifier: str,
|
|
340
|
+
expiry: timedelta | None = None,
|
|
341
|
+
access_level: str | None = None,
|
|
342
|
+
) -> tuple[CreateMcpSessionTokenResponse, grpc.Call]: ...
|
|
303
343
|
|
|
304
|
-
|
|
305
|
-
|
|
344
|
+
def create_session_token(
|
|
345
|
+
self,
|
|
346
|
+
mcp_config_id: str | None | _Unset = _UNSET,
|
|
347
|
+
identifier: str | None = None,
|
|
348
|
+
expiry: timedelta | None = None,
|
|
349
|
+
access_level: str | None = None,
|
|
350
|
+
*,
|
|
351
|
+
connection_name: str | None = None,
|
|
352
|
+
) -> tuple[CreateMcpSessionTokenResponse, grpc.Call]:
|
|
353
|
+
"""Create a short-lived session token for a user to access an MCP server.
|
|
354
|
+
|
|
355
|
+
Pass exactly one of ``mcp_config_id`` or ``connection_name``; the
|
|
356
|
+
token works only on the MCP server of that target:
|
|
357
|
+
|
|
358
|
+
- ``mcp_config_id``: the MCP configuration's server, at the config's
|
|
359
|
+
``mcp_server_url``. It serves the tools the configuration exposes.
|
|
360
|
+
- ``connection_name``: the connection's own MCP server, at
|
|
361
|
+
``<environment_url>/mcp/v3/connections/<connection_name>``. It
|
|
362
|
+
serves every tool of that connection, with no MCP configuration.
|
|
363
|
+
|
|
364
|
+
Send the token as a ``Bearer`` token in the ``Authorization`` header
|
|
365
|
+
when calling that URL.
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
mcp_config_id: ID of the MCP configuration the token grants access
|
|
369
|
+
to, e.g. ``"cfg_01abc123"``.
|
|
370
|
+
identifier: End-user identifier the token acts as, e.g.
|
|
371
|
+
``"user_123"``: the user of the configuration's instance, or
|
|
372
|
+
the user whose connected account on the connection is used.
|
|
373
|
+
1 to 255 characters. Required.
|
|
374
|
+
expiry: Lifetime of the token. The server accepts 60 seconds to
|
|
375
|
+
24 hours and applies 1 hour when omitted. Fractions of a
|
|
376
|
+
second are dropped.
|
|
377
|
+
access_level: Tools the token can use. ``"READ_ONLY"`` limits it
|
|
378
|
+
to tools annotated read-only: other tools are left out of the
|
|
379
|
+
tool list and refused when called. ``"FULL"``, or omitting it,
|
|
380
|
+
exposes every tool of the target. Values are case-sensitive.
|
|
381
|
+
connection_name: Name of the connection whose MCP server the token
|
|
382
|
+
grants access to, e.g. ``"gmail"``. Keyword-only. Matched
|
|
383
|
+
without regard to case, but the server URL path is
|
|
384
|
+
case-sensitive: connect using the name exactly as stored, e.g.
|
|
385
|
+
copied from the dashboard.
|
|
386
|
+
|
|
387
|
+
Returns:
|
|
388
|
+
The ``(response, call)`` tuple, like the other methods of this
|
|
389
|
+
client. ``response.token`` is the bearer token and
|
|
390
|
+
``response.expires_at`` (Timestamp) is when it expires.
|
|
391
|
+
|
|
392
|
+
Raises:
|
|
393
|
+
ValueError: Raised before any request when neither
|
|
394
|
+
``mcp_config_id`` nor ``connection_name`` is passed, or, with
|
|
395
|
+
``connection_name``: ``mcp_config_id`` is also given,
|
|
396
|
+
``connection_name`` is empty, or ``identifier`` is missing or
|
|
397
|
+
empty. With ``mcp_config_id``, the arguments are sent as given
|
|
398
|
+
and the server validates them.
|
|
399
|
+
ScalekitNotFoundException: No active connection has
|
|
400
|
+
``connection_name``.
|
|
401
|
+
ScalekitBadRequestException: Any other invalid request, e.g. an
|
|
402
|
+
invalid ``identifier``, ``expiry`` or ``access_level``, or a
|
|
403
|
+
connection that is not an AgentKit connection. Depending on
|
|
404
|
+
the environment's configuration, a connection token also
|
|
405
|
+
requires ``identifier`` to have an active connected account on
|
|
406
|
+
the connection; otherwise the server creates a pending
|
|
407
|
+
connected account for ``identifier`` if it has none on the
|
|
408
|
+
connection, a token is minted, and the account is reported as
|
|
409
|
+
not connected when tools are called.
|
|
410
|
+
|
|
411
|
+
Example::
|
|
412
|
+
|
|
413
|
+
from datetime import timedelta
|
|
414
|
+
|
|
415
|
+
# MCP configuration
|
|
416
|
+
response, _ = client.mcp.create_session_token("cfg_01abc123", "user_123")
|
|
417
|
+
|
|
418
|
+
# A connection's MCP server, read-only tools for 15 minutes
|
|
419
|
+
response, _ = client.mcp.create_session_token(
|
|
420
|
+
connection_name="gmail",
|
|
421
|
+
identifier="user_123",
|
|
422
|
+
expiry=timedelta(minutes=15),
|
|
423
|
+
access_level="READ_ONLY",
|
|
424
|
+
)
|
|
425
|
+
headers = {"Authorization": f"Bearer {response.token}"}
|
|
306
426
|
"""
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
identifier=identifier
|
|
310
|
-
|
|
427
|
+
if connection_name is not None:
|
|
428
|
+
identifier = _check_connection_token_args(mcp_config_id, connection_name, identifier)
|
|
429
|
+
request = CreateMcpSessionTokenRequest(key_id=connection_name, identifier=identifier)
|
|
430
|
+
elif mcp_config_id is _UNSET:
|
|
431
|
+
raise ValueError("Either mcp_config_id or connection_name is required")
|
|
432
|
+
else:
|
|
433
|
+
# Built exactly as before connection_name existed: the server
|
|
434
|
+
# validates the configuration ID and identifier.
|
|
435
|
+
request = CreateMcpSessionTokenRequest(
|
|
436
|
+
mcp_config_id=mcp_config_id, identifier=identifier
|
|
437
|
+
)
|
|
438
|
+
return self._mint_session_token(request, expiry, access_level)
|
|
439
|
+
|
|
440
|
+
def _mint_session_token(
|
|
441
|
+
self,
|
|
442
|
+
request: CreateMcpSessionTokenRequest,
|
|
443
|
+
expiry: timedelta | None,
|
|
444
|
+
access_level: str | None,
|
|
445
|
+
) -> tuple[CreateMcpSessionTokenResponse, grpc.Call]:
|
|
446
|
+
"""Set the optional fields shared by both session-token targets and send the request."""
|
|
447
|
+
if access_level is not None:
|
|
448
|
+
request.access_level = access_level
|
|
311
449
|
if expiry is not None:
|
|
312
450
|
duration = Duration()
|
|
313
451
|
total_seconds = int(expiry.total_seconds())
|