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.
Files changed (301) hide show
  1. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/PKG-INFO +2 -2
  2. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/README.md +1 -1
  3. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/_version.py +1 -1
  4. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/actions.py +101 -23
  5. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/core.py +1 -1
  6. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/mcp.py +158 -20
  7. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/auth_pb2.py +59 -15
  8. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/auth_pb2.pyi +54 -0
  9. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/auth_pb2_grpc.py +36 -3
  10. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/clients_pb2.py +113 -89
  11. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/clients_pb2.pyi +37 -6
  12. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +75 -61
  13. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +18 -2
  14. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +34 -0
  15. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/connections_pb2.py +108 -98
  16. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/connections_pb2.pyi +14 -4
  17. scalekit_sdk_python-2.21.0/scalekit/v1/gateway/gateway_pb2.py +153 -0
  18. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/gateway/gateway_pb2.pyi +6 -2
  19. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/mcp_pb2.py +16 -10
  20. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/mcp_pb2.pyi +6 -2
  21. scalekit_sdk_python-2.21.0/scalekit/v1/migrations/migrations_pb2.py +129 -0
  22. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/migrations/migrations_pb2.pyi +32 -0
  23. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +33 -0
  24. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/organizations_pb2.py +63 -29
  25. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/organizations_pb2.pyi +47 -0
  26. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +66 -0
  27. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/tools_pb2.py +48 -48
  28. scalekit_sdk_python-2.21.0/scalekit/v1/triggers/triggers_pb2.py +376 -0
  29. scalekit_sdk_python-2.21.0/scalekit/v1/triggers/triggers_pb2.pyi +567 -0
  30. scalekit_sdk_python-2.21.0/scalekit/v1/triggers/triggers_pb2_grpc.py +518 -0
  31. scalekit_sdk_python-2.21.0/scalekit/v1/workspaces/__init__.py +0 -0
  32. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/PKG-INFO +2 -2
  33. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/SOURCES.txt +6 -0
  34. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_mcp.py +46 -0
  35. scalekit_sdk_python-2.21.0/tests/test_mcp_connection_session_token.py +351 -0
  36. scalekit_sdk_python-2.21.0/tests/test_mcp_session_token_access_level.py +75 -0
  37. scalekit_sdk_python-2.20.0/scalekit/v1/gateway/gateway_pb2.py +0 -151
  38. scalekit_sdk_python-2.20.0/scalekit/v1/migrations/migrations_pb2.py +0 -119
  39. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/LICENSE +0 -0
  40. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/__init__.py +0 -0
  41. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/__init__.py +0 -0
  42. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/validate_pb2.py +0 -0
  43. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/validate_pb2.pyi +0 -0
  44. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/buf/validate/validate_pb2_grpc.py +0 -0
  45. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/pyproject.toml +0 -0
  46. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/__init__.py +0 -0
  47. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/__init__.py +0 -0
  48. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/__init__.py +0 -0
  49. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/google_adk.py +0 -0
  50. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/langchain.py +0 -0
  51. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
  52. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  53. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/frameworks/util.py +0 -0
  54. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/__init__.py +0 -0
  55. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/custom_provider.py +0 -0
  56. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/mcp_config.py +0 -0
  57. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/mcp_connection_auth_state.py +0 -0
  58. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/mcp_instance.py +0 -0
  59. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/__init__.py +0 -0
  60. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
  61. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
  62. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
  63. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
  64. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
  65. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/tool_request.py +0 -0
  66. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
  67. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
  68. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/__init__.py +0 -0
  69. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  70. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
  71. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
  72. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  73. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/create_mcp_session_token_response.py +0 -0
  74. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  75. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
  76. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
  77. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
  78. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
  79. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  80. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
  81. {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
  82. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
  83. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  84. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  85. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
  86. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +0 -0
  87. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
  88. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
  89. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/list_tools_response.py +0 -0
  90. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  91. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  92. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
  93. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
  94. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
  95. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
  96. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/tool_input_output.py +0 -0
  97. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/models/tool_mapping.py +0 -0
  98. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/modifier.py +0 -0
  99. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/actions/types.py +0 -0
  100. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/auth.py +0 -0
  101. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/client.py +0 -0
  102. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/__init__.py +0 -0
  103. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/exceptions.py +0 -0
  104. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/scalekit.py +0 -0
  105. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/common/user.py +0 -0
  106. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/connected_accounts.py +0 -0
  107. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/connection.py +0 -0
  108. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/constants/__init__.py +0 -0
  109. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/constants/user.py +0 -0
  110. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/directory.py +0 -0
  111. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/domain.py +0 -0
  112. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/events.py +0 -0
  113. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/__init__.py +0 -0
  114. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/django.py +0 -0
  115. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/fastapi.py +0 -0
  116. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/frameworks/flask.py +0 -0
  117. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/m2m_client.py +0 -0
  118. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/__init__.py +0 -0
  119. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/csrf_state.py +0 -0
  120. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/protocol.py +0 -0
  121. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/session_crypto.py +0 -0
  122. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/middleware/session_manager.py +0 -0
  123. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/organization.py +0 -0
  124. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/passwordless.py +0 -0
  125. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/permissions.py +0 -0
  126. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/providers.py +0 -0
  127. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/resource.py +0 -0
  128. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/role.py +0 -0
  129. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/sessions.py +0 -0
  130. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/token.py +0 -0
  131. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/tools.py +0 -0
  132. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/users.py +0 -0
  133. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/utils/__init__.py +0 -0
  134. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/utils/directory.py +0 -0
  135. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/__init__.py +0 -0
  136. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
  137. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
  138. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
  139. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
  140. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
  141. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
  142. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
  143. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/__init__.py +0 -0
  144. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
  145. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
  146. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  147. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/__init__.py +0 -0
  148. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  149. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  150. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  151. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/totp_pb2.py +0 -0
  152. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  153. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  154. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
  155. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
  156. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
  157. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/__init__.py +0 -0
  158. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/billing_pb2.py +0 -0
  159. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/billing_pb2.pyi +0 -0
  160. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/billing/billing_pb2_grpc.py +0 -0
  161. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/__init__.py +0 -0
  162. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
  163. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/__init__.py +0 -0
  164. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/commons_pb2.py +0 -0
  165. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
  166. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  167. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
  168. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/__init__.py +0 -0
  169. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
  170. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/__init__.py +0 -0
  171. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/directories_pb2.py +0 -0
  172. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  173. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  174. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/__init__.py +0 -0
  175. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/domains_pb2.py +0 -0
  176. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
  177. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
  178. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/__init__.py +0 -0
  179. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/emails_pb2.py +0 -0
  180. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  181. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  182. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/__init__.py +0 -0
  183. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/environments_pb2.py +0 -0
  184. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
  185. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
  186. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/__init__.py +0 -0
  187. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  188. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  189. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  190. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/__init__.py +0 -0
  191. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/events_pb2.py +0 -0
  192. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/events_pb2.pyi +0 -0
  193. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  194. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/gateway/__init__.py +0 -0
  195. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/gateway/gateway_pb2_grpc.py +0 -0
  196. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/__init__.py +0 -0
  197. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
  198. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
  199. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
  200. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/__init__.py +0 -0
  201. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/keys_pb2.py +0 -0
  202. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
  203. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
  204. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/__init__.py +0 -0
  205. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/logstreams_pb2.py +0 -0
  206. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/logstreams_pb2.pyi +0 -0
  207. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/logstreams/logstreams_pb2_grpc.py +0 -0
  208. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/__init__.py +0 -0
  209. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
  210. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/__init__.py +0 -0
  211. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/members_pb2.py +0 -0
  212. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/members_pb2.pyi +0 -0
  213. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  214. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/migrations/__init__.py +0 -0
  215. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/__init__.py +0 -0
  216. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/options_pb2.py +0 -0
  217. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/options_pb2.pyi +0 -0
  218. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  219. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/organizations/__init__.py +0 -0
  220. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/__init__.py +0 -0
  221. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/providers_pb2.py +0 -0
  222. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
  223. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  224. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/__init__.py +0 -0
  225. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/roles_pb2.py +0 -0
  226. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
  227. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  228. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/__init__.py +0 -0
  229. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
  230. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
  231. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
  232. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/__init__.py +0 -0
  233. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
  234. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
  235. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  236. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/__init__.py +0 -0
  237. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
  238. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
  239. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
  240. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/__init__.py +0 -0
  241. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
  242. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  243. {scalekit_sdk_python-2.20.0/scalekit/v1/user_attributes → scalekit_sdk_python-2.21.0/scalekit/v1/triggers}/__init__.py +0 -0
  244. {scalekit_sdk_python-2.20.0/scalekit/v1/users → scalekit_sdk_python-2.21.0/scalekit/v1/user_attributes}/__init__.py +0 -0
  245. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
  246. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  247. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  248. {scalekit_sdk_python-2.20.0/scalekit/v1/webhooks → scalekit_sdk_python-2.21.0/scalekit/v1/users}/__init__.py +0 -0
  249. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/users/users_pb2.py +0 -0
  250. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/users/users_pb2.pyi +0 -0
  251. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
  252. {scalekit_sdk_python-2.20.0/scalekit/v1/workspaces → scalekit_sdk_python-2.21.0/scalekit/v1/webhooks}/__init__.py +0 -0
  253. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  254. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  255. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  256. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
  257. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
  258. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
  259. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit/webauthn.py +0 -0
  260. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  261. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  262. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  263. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/setup.cfg +0 -0
  264. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/setup.py +0 -0
  265. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_actions.py +0 -0
  266. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_actions_list_connected_accounts_pagination.py +0 -0
  267. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_call_timeout.py +0 -0
  268. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_connected_accounts.py +0 -0
  269. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_connection.py +0 -0
  270. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_directory.py +0 -0
  271. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_domain.py +0 -0
  272. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_events.py +0 -0
  273. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_http_timeout.py +0 -0
  274. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_keepalive_channel_options.py +0 -0
  275. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_login.py +0 -0
  276. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_m2m_client.py +0 -0
  277. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_csrf_state.py +0 -0
  278. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_django.py +0 -0
  279. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_fastapi.py +0 -0
  280. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_flask.py +0 -0
  281. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_session_crypto.py +0 -0
  282. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_middleware_session_manager.py +0 -0
  283. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_multi_issuer.py +0 -0
  284. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_org_roles.py +0 -0
  285. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_organization.py +0 -0
  286. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_organization_session_policy.py +0 -0
  287. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_organization_slug_logo.py +0 -0
  288. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_passwordless.py +0 -0
  289. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_permissions.py +0 -0
  290. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_providers.py +0 -0
  291. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_resource.py +0 -0
  292. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_role_defaults_dependent.py +0 -0
  293. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_roles.py +0 -0
  294. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_sessions.py +0 -0
  295. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_sk819_retry_behavior.py +0 -0
  296. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_tokens.py +0 -0
  297. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_tools.py +0 -0
  298. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_transient_error_no_retry.py +0 -0
  299. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_user_roles_permissions.py +0 -0
  300. {scalekit_sdk_python-2.20.0 → scalekit_sdk_python-2.21.0}/tests/test_users.py +0 -0
  301. {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.20.0
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
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
61
61
  [![Python versions](https://img.shields.io/pypi/pyversions/scalekit-sdk-python.svg?style=flat-square)](https://pypi.org/project/scalekit-sdk-python/)
62
62
 
63
- <a href="https://scalekit.com" target="_blank" rel="noopener noreferrer">Scalekit</a> is the **auth stack for AI apps** - from human authentication to agent authorization. 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.
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
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
14
14
  [![Python versions](https://img.shields.io/pypi/pyversions/scalekit-sdk-python.svg?style=flat-square)](https://pypi.org/project/scalekit-sdk-python/)
15
15
 
16
- <a href="https://scalekit.com" target="_blank" rel="noopener noreferrer">Scalekit</a> is the **auth stack for AI apps** - from human authentication to agent authorization. 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.
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,3 +1,3 @@
1
1
  # Single source of truth for the SDK version.
2
2
  # Import this in setup.py and scalekit/core.py — never hardcode the version elsewhere.
3
- __version__ = "2.20.0"
3
+ __version__ = "2.21.0"
@@ -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: Optional[timedelta] = None,
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
- The token is scoped to a specific MCP configuration and end-user. Pass it
1378
- as a ``Bearer`` token in the ``Authorization`` header when making requests
1379
- to the MCP server URL associated with the config.
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 should
1383
- grant access to, e.g. ``"cfg_01abc123"``.
1384
- identifier: End-user identifier for whom the token is minted — typically
1385
- the same email or opaque ID used when calling ``ensure_instance``,
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
- When omitted, the server-side default TTL is applied (typically
1389
- 1 hour). Example values:
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``) — UTC datetime when the token expires.
1441
+ - ``expires_at`` (``datetime``) — naive datetime, in UTC, when the
1442
+ token expires.
1400
1443
 
1401
1444
  Raises:
1402
- ValueError: If ``mcp_config_id`` or ``identifier`` is blank.
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 not mcp_config_id:
1418
- raise ValueError("mcp_config_id is required")
1419
- if not identifier:
1420
- raise ValueError("identifier is required")
1421
- result_tuple = self._client().create_session_token(
1422
- mcp_config_id=mcp_config_id,
1423
- identifier=identifier,
1424
- expiry=expiry,
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 = "20260922"
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, List
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: Optional[timedelta] = None,
290
- ) -> CreateMcpSessionTokenResponse:
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
- :param mcp_config_id : ID of the MCP configuration the session token is scoped to
295
- :type : ``` str ```
296
- :param identifier : End-user identifier (e.g. email or opaque user ID) for whom
297
- the token is being minted
298
- :type : ``` str ```
299
- :param expiry : Lifetime of the token as a Python ``timedelta``. When omitted,
300
- the server-side default TTL is applied.
301
- Example: ``timedelta(hours=1)``
302
- :type : ``` timedelta ```
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
- :returns:
305
- CreateMcpSessionTokenResponse — contains ``token`` (str) and ``expires_at`` (Timestamp)
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
- request = CreateMcpSessionTokenRequest(
308
- mcp_config_id=mcp_config_id,
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())