scalekit-sdk-python 2.9.0__tar.gz → 2.11.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 (267) hide show
  1. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/PKG-INFO +1 -1
  2. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/_version.py +1 -1
  3. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/actions.py +327 -31
  4. scalekit_sdk_python-2.11.0/scalekit/actions/models/custom_provider.py +348 -0
  5. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/mcp_config.py +6 -0
  6. scalekit_sdk_python-2.11.0/scalekit/actions/models/mcp_connection_auth_state.py +62 -0
  7. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/create_connected_account_request.py +13 -2
  8. scalekit_sdk_python-2.11.0/scalekit/actions/models/requests/create_custom_provider_request.py +74 -0
  9. scalekit_sdk_python-2.11.0/scalekit/actions/models/requests/delete_custom_provider_request.py +22 -0
  10. scalekit_sdk_python-2.11.0/scalekit/actions/models/requests/list_providers_request.py +56 -0
  11. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/update_connected_account_request.py +12 -1
  12. scalekit_sdk_python-2.11.0/scalekit/actions/models/requests/update_custom_provider_request.py +71 -0
  13. scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/create_custom_provider_response.py +46 -0
  14. scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/create_mcp_session_token_response.py +52 -0
  15. scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/delete_custom_provider_response.py +32 -0
  16. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +13 -4
  17. scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +52 -0
  18. scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/list_providers_response.py +65 -0
  19. scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/update_custom_provider_response.py +45 -0
  20. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/types.py +27 -0
  21. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/client.py +4 -2
  22. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/connected_accounts.py +19 -11
  23. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/connection.py +70 -0
  24. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/core.py +1 -1
  25. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/mcp.py +104 -13
  26. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/organization.py +75 -0
  27. scalekit_sdk_python-2.11.0/scalekit/providers.py +211 -0
  28. scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +62 -0
  29. scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +91 -0
  30. scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +66 -0
  31. scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +80 -0
  32. scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +101 -0
  33. scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +99 -0
  34. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/auth_pb2.py +42 -36
  35. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/auth_pb2.pyi +12 -6
  36. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/clients_pb2.py +90 -82
  37. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/clients_pb2.pyi +12 -2
  38. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/commons_pb2.py +21 -11
  39. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/commons_pb2.pyi +21 -0
  40. scalekit_sdk_python-2.11.0/scalekit/v1/connected_accounts/connected_accounts_pb2.py +323 -0
  41. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +58 -4
  42. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +102 -0
  43. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/connections_pb2.py +157 -137
  44. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/connections_pb2.pyi +32 -6
  45. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/domains_pb2.py +48 -39
  46. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/domains_pb2.pyi +22 -2
  47. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/domains_pb2_grpc.py +3 -4
  48. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/environments_pb2.py +144 -114
  49. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/environments_pb2.pyi +54 -8
  50. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/environments_pb2_grpc.py +66 -0
  51. scalekit_sdk_python-2.11.0/scalekit/v1/mcp/mcp_pb2.py +358 -0
  52. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/mcp/mcp_pb2.pyi +59 -4
  53. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +66 -0
  54. scalekit_sdk_python-2.11.0/scalekit/v1/migrations/migrations_pb2.py +101 -0
  55. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/migrations/migrations_pb2.pyi +21 -0
  56. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +33 -0
  57. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/options_pb2.py +2 -2
  58. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/options_pb2.pyi +14 -0
  59. scalekit_sdk_python-2.11.0/scalekit/v1/organizations/organizations_pb2.py +367 -0
  60. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/organizations/organizations_pb2.pyi +103 -72
  61. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +53 -86
  62. scalekit_sdk_python-2.11.0/scalekit/v1/providers/providers_pb2.py +184 -0
  63. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/providers/providers_pb2.pyi +37 -6
  64. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/roles_pb2.py +4 -4
  65. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/tools_pb2.py +34 -32
  66. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/tools_pb2.pyi +4 -2
  67. scalekit_sdk_python-2.11.0/scalekit/v1/workspaces/__init__.py +0 -0
  68. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
  69. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/SOURCES.txt +23 -0
  70. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_actions.py +268 -2
  71. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_connected_accounts.py +65 -0
  72. scalekit_sdk_python-2.11.0/tests/test_connection.py +238 -0
  73. scalekit_sdk_python-2.11.0/tests/test_mcp.py +301 -0
  74. scalekit_sdk_python-2.11.0/tests/test_organization_session_policy.py +107 -0
  75. scalekit_sdk_python-2.11.0/tests/test_organization_slug_logo.py +89 -0
  76. scalekit_sdk_python-2.11.0/tests/test_providers.py +260 -0
  77. scalekit_sdk_python-2.9.0/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -281
  78. scalekit_sdk_python-2.9.0/scalekit/v1/mcp/mcp_pb2.py +0 -309
  79. scalekit_sdk_python-2.9.0/scalekit/v1/migrations/migrations_pb2.py +0 -90
  80. scalekit_sdk_python-2.9.0/scalekit/v1/organizations/organizations_pb2.py +0 -347
  81. scalekit_sdk_python-2.9.0/scalekit/v1/providers/providers_pb2.py +0 -162
  82. scalekit_sdk_python-2.9.0/tests/test_connection.py +0 -100
  83. scalekit_sdk_python-2.9.0/tests/test_mcp.py +0 -156
  84. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/LICENSE +0 -0
  85. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/README.md +0 -0
  86. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/__init__.py +0 -0
  87. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/__init__.py +0 -0
  88. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/expression_pb2.py +0 -0
  89. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/expression_pb2.pyi +0 -0
  90. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/expression_pb2_grpc.py +0 -0
  91. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/__init__.py +0 -0
  92. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/private_pb2.py +0 -0
  93. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/private_pb2.pyi +0 -0
  94. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
  95. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/validate_pb2.py +0 -0
  96. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/validate_pb2.pyi +0 -0
  97. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/buf/validate/validate_pb2_grpc.py +0 -0
  98. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/pyproject.toml +0 -0
  99. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/__init__.py +0 -0
  100. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/__init__.py +0 -0
  101. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/__init__.py +0 -0
  102. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/google_adk.py +0 -0
  103. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/langchain.py +0 -0
  104. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
  105. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  106. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/util.py +0 -0
  107. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/__init__.py +0 -0
  108. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/mcp_instance.py +0 -0
  109. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/__init__.py +0 -0
  110. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
  111. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/tool_request.py +0 -0
  112. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/__init__.py +0 -0
  113. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  114. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
  115. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  116. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  117. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
  118. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
  119. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
  120. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  121. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
  122. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
  123. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  124. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  125. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
  126. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
  127. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  128. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  129. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
  130. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
  131. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
  132. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/tool_input_output.py +0 -0
  133. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/tool_mapping.py +0 -0
  134. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/modifier.py +0 -0
  135. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/auth.py +0 -0
  136. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/common/__init__.py +0 -0
  137. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/common/exceptions.py +0 -0
  138. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/common/scalekit.py +0 -0
  139. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/common/user.py +0 -0
  140. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/constants/__init__.py +0 -0
  141. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/constants/user.py +0 -0
  142. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/directory.py +0 -0
  143. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/domain.py +0 -0
  144. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/m2m_client.py +0 -0
  145. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/passwordless.py +0 -0
  146. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/permissions.py +0 -0
  147. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/role.py +0 -0
  148. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/sessions.py +0 -0
  149. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/token.py +0 -0
  150. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/tools.py +0 -0
  151. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/users.py +0 -0
  152. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/utils/__init__.py +0 -0
  153. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/utils/directory.py +0 -0
  154. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/__init__.py +0 -0
  155. {scalekit_sdk_python-2.9.0/scalekit/v1/auditlogs → scalekit_sdk_python-2.11.0/scalekit/v1/agentkit_logs}/__init__.py +0 -0
  156. {scalekit_sdk_python-2.9.0/scalekit/v1/auth → scalekit_sdk_python-2.11.0/scalekit/v1/auditlogs}/__init__.py +0 -0
  157. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
  158. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
  159. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  160. {scalekit_sdk_python-2.9.0/scalekit/v1/clients → scalekit_sdk_python-2.11.0/scalekit/v1/auth}/__init__.py +0 -0
  161. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
  162. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  163. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  164. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  165. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/totp_pb2.py +0 -0
  166. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  167. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  168. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
  169. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
  170. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
  171. {scalekit_sdk_python-2.9.0/scalekit/v1/commons → scalekit_sdk_python-2.11.0/scalekit/v1/clients}/__init__.py +0 -0
  172. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
  173. {scalekit_sdk_python-2.9.0/scalekit/v1/connected_accounts → scalekit_sdk_python-2.11.0/scalekit/v1/commons}/__init__.py +0 -0
  174. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  175. {scalekit_sdk_python-2.9.0/scalekit/v1/connections → scalekit_sdk_python-2.11.0/scalekit/v1/connected_accounts}/__init__.py +0 -0
  176. {scalekit_sdk_python-2.9.0/scalekit/v1/directories → scalekit_sdk_python-2.11.0/scalekit/v1/connections}/__init__.py +0 -0
  177. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
  178. {scalekit_sdk_python-2.9.0/scalekit/v1/domains → scalekit_sdk_python-2.11.0/scalekit/v1/directories}/__init__.py +0 -0
  179. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/directories_pb2.py +0 -0
  180. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  181. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  182. {scalekit_sdk_python-2.9.0/scalekit/v1/emails → scalekit_sdk_python-2.11.0/scalekit/v1/domains}/__init__.py +0 -0
  183. {scalekit_sdk_python-2.9.0/scalekit/v1/environments → scalekit_sdk_python-2.11.0/scalekit/v1/emails}/__init__.py +0 -0
  184. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/emails_pb2.py +0 -0
  185. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  186. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  187. {scalekit_sdk_python-2.9.0/scalekit/v1/errdetails → scalekit_sdk_python-2.11.0/scalekit/v1/environments}/__init__.py +0 -0
  188. {scalekit_sdk_python-2.9.0/scalekit/v1/events → scalekit_sdk_python-2.11.0/scalekit/v1/errdetails}/__init__.py +0 -0
  189. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  190. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  191. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  192. {scalekit_sdk_python-2.9.0/scalekit/v1/interceptors → scalekit_sdk_python-2.11.0/scalekit/v1/events}/__init__.py +0 -0
  193. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/events_pb2.py +0 -0
  194. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/events_pb2.pyi +0 -0
  195. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  196. {scalekit_sdk_python-2.9.0/scalekit/v1/keys → scalekit_sdk_python-2.11.0/scalekit/v1/interceptors}/__init__.py +0 -0
  197. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
  198. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
  199. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
  200. {scalekit_sdk_python-2.9.0/scalekit/v1/mcp → scalekit_sdk_python-2.11.0/scalekit/v1/keys}/__init__.py +0 -0
  201. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/keys_pb2.py +0 -0
  202. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
  203. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
  204. {scalekit_sdk_python-2.9.0/scalekit/v1/members → scalekit_sdk_python-2.11.0/scalekit/v1/mcp}/__init__.py +0 -0
  205. {scalekit_sdk_python-2.9.0/scalekit/v1/migrations → scalekit_sdk_python-2.11.0/scalekit/v1/members}/__init__.py +0 -0
  206. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/members_pb2.py +0 -0
  207. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/members_pb2.pyi +0 -0
  208. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  209. {scalekit_sdk_python-2.9.0/scalekit/v1/options → scalekit_sdk_python-2.11.0/scalekit/v1/migrations}/__init__.py +0 -0
  210. {scalekit_sdk_python-2.9.0/scalekit/v1/organizations → scalekit_sdk_python-2.11.0/scalekit/v1/options}/__init__.py +0 -0
  211. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  212. {scalekit_sdk_python-2.9.0/scalekit/v1/providers → scalekit_sdk_python-2.11.0/scalekit/v1/organizations}/__init__.py +0 -0
  213. {scalekit_sdk_python-2.9.0/scalekit/v1/roles → scalekit_sdk_python-2.11.0/scalekit/v1/providers}/__init__.py +0 -0
  214. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  215. {scalekit_sdk_python-2.9.0/scalekit/v1/secrets → scalekit_sdk_python-2.11.0/scalekit/v1/roles}/__init__.py +0 -0
  216. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
  217. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  218. {scalekit_sdk_python-2.9.0/scalekit/v1/sessions → scalekit_sdk_python-2.11.0/scalekit/v1/secrets}/__init__.py +0 -0
  219. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
  220. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
  221. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
  222. {scalekit_sdk_python-2.9.0/scalekit/v1/tokens → scalekit_sdk_python-2.11.0/scalekit/v1/sessions}/__init__.py +0 -0
  223. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
  224. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
  225. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  226. {scalekit_sdk_python-2.9.0/scalekit/v1/tools → scalekit_sdk_python-2.11.0/scalekit/v1/tokens}/__init__.py +0 -0
  227. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
  228. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
  229. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
  230. {scalekit_sdk_python-2.9.0/scalekit/v1/user_attributes → scalekit_sdk_python-2.11.0/scalekit/v1/tools}/__init__.py +0 -0
  231. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  232. {scalekit_sdk_python-2.9.0/scalekit/v1/users → scalekit_sdk_python-2.11.0/scalekit/v1/user_attributes}/__init__.py +0 -0
  233. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
  234. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  235. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  236. {scalekit_sdk_python-2.9.0/scalekit/v1/webhooks → scalekit_sdk_python-2.11.0/scalekit/v1/users}/__init__.py +0 -0
  237. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/users_pb2.py +0 -0
  238. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/users_pb2.pyi +0 -0
  239. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
  240. {scalekit_sdk_python-2.9.0/scalekit/v1/workspaces → scalekit_sdk_python-2.11.0/scalekit/v1/webhooks}/__init__.py +0 -0
  241. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  242. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  243. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  244. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
  245. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
  246. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
  247. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit/webauthn.py +0 -0
  248. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  249. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  250. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  251. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/setup.cfg +0 -0
  252. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/setup.py +0 -0
  253. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_directory.py +0 -0
  254. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_domain.py +0 -0
  255. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_m2m_client.py +0 -0
  256. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_org_roles.py +0 -0
  257. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_organization.py +0 -0
  258. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_passwordless.py +0 -0
  259. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_permissions.py +0 -0
  260. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_role_defaults_dependent.py +0 -0
  261. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_roles.py +0 -0
  262. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_sessions.py +0 -0
  263. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_tokens.py +0 -0
  264. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_tools.py +0 -0
  265. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_user_roles_permissions.py +0 -0
  266. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.0}/tests/test_users.py +0 -0
  267. {scalekit_sdk_python-2.9.0 → scalekit_sdk_python-2.11.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.9.0
3
+ Version: 2.11.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
@@ -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.9.0"
3
+ __version__ = "2.11.0"
@@ -1,9 +1,13 @@
1
+ from datetime import timedelta
1
2
  from typing import Optional, Any, List, Dict, Union
2
3
  import requests
3
4
  from scalekit.actions.types import ToolRequest,ExecuteToolResponse,MagicLinkResponse,ListConnectedAccountsResponse,DeleteConnectedAccountResponse,GetConnectedAccountAuthResponse,GetConnectedAccountDetailsResponse,ToolInput, \
4
5
  UpdateConnectedAccountResponse,CreateMcpConfigResponse,ListMcpConfigsResponse,UpdateMcpConfigResponse,DeleteMcpConfigResponse, \
5
6
  EnsureMcpInstanceResponse,UpdateMcpInstanceResponse,GetMcpInstanceResponse,ListMcpInstancesResponse,DeleteMcpInstanceResponse,GetMcpInstanceAuthStateResponse, \
6
- McpConfig,McpConfigConnectionToolMapping,VerifyConnectedAccountUserResponse
7
+ McpConfig,McpConfigConnectionToolMapping,VerifyConnectedAccountUserResponse, \
8
+ CreateCustomProviderRequest,UpdateCustomProviderRequest,ListProvidersRequest,DeleteCustomProviderRequest, \
9
+ CreateCustomProviderResponse,UpdateCustomProviderResponse,ListProvidersResponse,DeleteCustomProviderResponse, \
10
+ ListMcpConnectedAccountsResponse,CreateMcpSessionTokenResponse,McpConnectionAuthState
7
11
  from scalekit.actions.models.responses.create_connected_account_response import CreateConnectedAccountResponse
8
12
  from scalekit.actions.models.requests.create_connected_account_request import CreateConnectedAccountRequest
9
13
  from scalekit.actions.models.requests.update_connected_account_request import UpdateConnectedAccountRequest
@@ -19,17 +23,19 @@ from scalekit.common.exceptions import ScalekitNotFoundException
19
23
  class ActionClient:
20
24
  """Class definition for Connect Client"""
21
25
 
22
- def __init__(self,tools_client, connected_accounts_client, mcp_client=None):
26
+ def __init__(self,tools_client, connected_accounts_client, mcp_client=None, providers_client=None):
23
27
  """
24
28
  Initialize ActionClient with tools, connected accounts, and MCP dependencies
25
-
29
+
26
30
  :param tools_client: ToolsClient instance
27
31
  :type: ToolsClient
28
32
  :param connected_accounts_client: ConnectedAccountsClient instance
29
33
  :type: ConnectedAccountsClient
30
34
  :param mcp_client: McpClient instance (optional)
31
35
  :type: McpClient
32
-
36
+ :param providers_client: ProvidersClient instance (optional)
37
+ :type: ProvidersClient
38
+
33
39
  :returns:
34
40
  None
35
41
  """
@@ -38,6 +44,8 @@ class ActionClient:
38
44
  self.connected_accounts = connected_accounts_client
39
45
  self._mcp_client = mcp_client
40
46
  self._mcp_actions = None
47
+ self._providers_client = providers_client
48
+ self._providers_actions = None
41
49
  self._modifiers: List[Modifier] = []
42
50
  self._google = None
43
51
  self._langchain = None
@@ -87,6 +95,20 @@ class ActionClient:
87
95
  self._mcp_actions = ActionMcp(self)
88
96
  return self._mcp_actions
89
97
 
98
+ @property
99
+ def providers(self) -> "ActionProviders":
100
+ """Expose custom provider CRUD with typed request and response objects.
101
+
102
+ :returns: ActionProviders instance bound to the configured ProvidersClient.
103
+ :rtype: ActionProviders
104
+ :raises ValueError: If no ProvidersClient was passed at construction time.
105
+ """
106
+ if self._providers_client is None:
107
+ raise ValueError("Providers client not initialized.")
108
+ if self._providers_actions is None:
109
+ self._providers_actions = ActionProviders(self._providers_client)
110
+ return self._providers_actions
111
+
90
112
  def execute_tool(
91
113
  self,
92
114
  tool_input:ToolInput,
@@ -222,37 +244,35 @@ class ActionClient:
222
244
  return VerifyConnectedAccountUserResponse.from_proto(proto_response)
223
245
 
224
246
  def list_connected_accounts(
225
- self,
247
+ self,
226
248
  connection_name: Optional[str] = None,
227
249
  identifier: Optional[str] = None,
228
250
  provider: Optional[str] = None,
251
+ connection_names: Optional[List[str]] = None,
229
252
  **kwargs
230
253
  ) -> ListConnectedAccountsResponse:
254
+ """List connected accounts with optional filtering.
255
+
256
+ Args:
257
+ connection_name: Filter by a single connector slug, e.g. ``"github"``.
258
+ Mapped to the ``connector`` field in the underlying request.
259
+ identifier: Filter by end-user identifier, e.g. email or opaque user ID.
260
+ provider: Filter by OAuth/API-key provider slug, e.g. ``"google"``.
261
+ connection_names: Filter results to connected accounts belonging to *any*
262
+ of these connection slugs. Useful when you want to check multiple
263
+ connectors at once, e.g. ``["github", "google-calendar", "slack"]``.
264
+ Can be combined with ``identifier`` to narrow results to a specific user.
265
+
266
+ Returns:
267
+ ListConnectedAccountsResponse containing the matching connected accounts.
231
268
  """
232
- List connected accounts with optional filtering
233
-
234
- :param connection_name: Connector identifier (optional)
235
- :type: str
236
- :param identifier: Identifier filter (optional)
237
- :type: str
238
- :param provider: Provider filter (optional)
239
- :type: str
240
-
241
- :returns:
242
- ListConnectedAccountsResponse containing list of connected accounts
243
- """
244
- # Call the existing connected_accounts method which returns (response, metadata) tuple
245
269
  result_tuple = self.connected_accounts.list_connected_accounts(
246
270
  connector=connection_name,
247
271
  identifier=identifier,
248
- provider=provider
272
+ provider=provider,
273
+ connection_names=connection_names,
249
274
  )
250
-
251
- # Extract the response[0] (the actual ListConnectedAccountsResponse proto object)
252
- proto_response = result_tuple[0]
253
-
254
- # Convert proto to our ListConnectedAccountsResponse class
255
- return ListConnectedAccountsResponse.from_proto(proto_response)
275
+ return ListConnectedAccountsResponse.from_proto(result_tuple[0])
256
276
 
257
277
  def delete_connected_account(
258
278
  self,
@@ -523,6 +543,7 @@ class ActionClient:
523
543
  filter_id: Optional[str] = None,
524
544
  filter_provider: Optional[str] = None,
525
545
  filter_name: Optional[str] = None,
546
+ filter_mcp_server_url: Optional[str] = None,
526
547
  search: Optional[str] = None,
527
548
  **kwargs,
528
549
  ) -> ListMcpConfigsResponse:
@@ -534,6 +555,7 @@ class ActionClient:
534
555
  filter_id=filter_id,
535
556
  filter_provider=filter_provider,
536
557
  filter_name=filter_name,
558
+ filter_mcp_server_url=filter_mcp_server_url,
537
559
  search=search,
538
560
  )
539
561
 
@@ -880,23 +902,43 @@ class ActionMcp:
880
902
  filter_id: Optional[str] = None,
881
903
  filter_provider: Optional[str] = None,
882
904
  filter_name: Optional[str] = None,
905
+ filter_mcp_server_url: Optional[str] = None,
883
906
  search: Optional[str] = None,
884
907
  ) -> ListMcpConfigsResponse:
885
908
  """List MCP configurations with optional pagination and filtering.
886
909
 
887
910
  Args:
888
911
  page_size: Maximum number of configs to include in the current page.
889
- page_token: Cursor token returned by a previous `list_configs` call.
890
- filter_id: Restrict results to a specific configuration identifier.
891
- filter_provider: Restrict results to configs for a given provider slug.
892
- filter_name: Restrict results to configs whose names match exactly.
893
- search: Free-form search query applied to name field.
912
+ Defaults to the server-side default (typically 20).
913
+ page_token: Cursor token returned by a previous ``list_configs`` call.
914
+ Pass this to fetch the next page of results.
915
+ filter_id: Restrict results to a specific configuration by its Scalekit ID,
916
+ e.g. ``"cfg_01abc123"``.
917
+ filter_provider: Restrict results to configs for a given provider slug,
918
+ e.g. ``"github"`` or ``"google-calendar"``.
919
+ filter_name: Restrict results to configs whose name matches exactly,
920
+ e.g. ``"My GitHub Config"``.
921
+ filter_mcp_server_url: Restrict results to configs whose MCP server URL
922
+ matches this value, e.g. ``"https://mcp.example.com/sse"``.
923
+ search: Free-form search query applied to the config name field.
894
924
 
895
925
  Returns:
896
- ListMcpConfigsResponse: Parsed wrapper around the proto response.
926
+ ListMcpConfigsResponse: Parsed wrapper around the proto response containing
927
+ a ``configs`` list, ``next_page_token``, and ``total_count``.
897
928
 
898
929
  Raises:
899
930
  ValueError: If an MCP client has not been configured on the action client.
931
+
932
+ Example::
933
+
934
+ page1 = client.actions.mcp.list_configs(page_size=10)
935
+ for cfg in page1.configs:
936
+ print(cfg.name, cfg.mcp_server_url)
937
+
938
+ if page1.next_page_token:
939
+ page2 = client.actions.mcp.list_configs(
940
+ page_size=10, page_token=page1.next_page_token
941
+ )
900
942
  """
901
943
  client = self._client()
902
944
  result_tuple = client.list_configs(
@@ -905,6 +947,7 @@ class ActionMcp:
905
947
  filter_id=filter_id,
906
948
  filter_provider=filter_provider,
907
949
  filter_name=filter_name,
950
+ filter_mcp_server_url=filter_mcp_server_url,
908
951
  search=search,
909
952
  )
910
953
  return ListMcpConfigsResponse.from_proto(result_tuple[0])
@@ -1139,3 +1182,256 @@ class ActionMcp:
1139
1182
  include_auth_links=include_auth_links,
1140
1183
  )
1141
1184
  return GetMcpInstanceAuthStateResponse.from_proto(result_tuple[0])
1185
+
1186
+ def list_mcp_connected_accounts(
1187
+ self,
1188
+ config_id: str,
1189
+ identifier: str,
1190
+ include_auth_link: Optional[bool] = None,
1191
+ ) -> ListMcpConnectedAccountsResponse:
1192
+ """List the connected account auth state for all connections in an MCP config.
1193
+
1194
+ For each connection defined in the MCP configuration, this method returns the
1195
+ current authorisation status of the end-user's connected account and,
1196
+ optionally, a one-time link the user can open to authorise or re-authorise
1197
+ the connection.
1198
+
1199
+ This is typically called server-side before serving MCP tool calls, to
1200
+ determine whether the user still has valid credentials for every connector
1201
+ the MCP config requires.
1202
+
1203
+ Args:
1204
+ config_id: Scalekit ID of the MCP configuration to inspect,
1205
+ e.g. ``"cfg_01abc123"``.
1206
+ identifier: End-user identifier for whom to fetch auth state — usually
1207
+ an email address or opaque user ID that was used when calling
1208
+ ``ensure_instance``, e.g. ``"alice@example.com"``.
1209
+ include_auth_link: When ``True``, every connected account in the response
1210
+ will include an ``authentication_link`` regardless of its current
1211
+ status. Set this to ``True`` when building a connected-account
1212
+ integration page for an MCP server — it lets the end user see the
1213
+ status of all their connections and authorise or re-authorise any of
1214
+ them in one pass.
1215
+
1216
+ When ``False`` (default), ``authentication_link`` is omitted from
1217
+ the response. If a connected account does not yet exist for a given
1218
+ connection, ``connected_account_id`` will be an empty string. In
1219
+ that situation you can either call ``get_authorization_link`` for
1220
+ the specific connection or re-call this method with
1221
+ ``include_auth_link=True``.
1222
+
1223
+ **Auth links are valid for 1 minute only** — generate them close
1224
+ to the time you redirect the user.
1225
+
1226
+ Returns:
1227
+ ListMcpConnectedAccountsResponse: Contains a ``connected_accounts`` list.
1228
+ Each item is a :class:`McpConnectionAuthState` with fields:
1229
+
1230
+ - ``connection_name`` — slug of the connector (``"github"``)
1231
+ - ``provider`` — OAuth provider (``"github"``)
1232
+ - ``connected_account_id`` — Scalekit ID for the user's connected account;
1233
+ empty string if no connected account exists yet for this connection
1234
+ - ``connected_account_status`` — ``"active"``, ``"expired"``, or ``"disconnected"``
1235
+ - ``authentication_link`` — auth/re-auth URL valid for 1 minute;
1236
+ present for all connections when ``include_auth_link=True``,
1237
+ otherwise omitted
1238
+
1239
+ Raises:
1240
+ ValueError: If ``config_id`` or ``identifier`` is blank.
1241
+
1242
+ Example::
1243
+
1244
+ state = client.actions.mcp.list_mcp_connected_accounts(
1245
+ config_id="cfg_01abc123",
1246
+ identifier="alice@example.com",
1247
+ include_auth_link=True,
1248
+ )
1249
+ for account in state.connected_accounts:
1250
+ if account.connected_account_status != "active":
1251
+ print(
1252
+ f"{account.connection_name} needs auth: "
1253
+ f"{account.authentication_link}"
1254
+ )
1255
+ """
1256
+ if not config_id:
1257
+ raise ValueError("config_id is required")
1258
+ if not identifier:
1259
+ raise ValueError("identifier is required")
1260
+ result_tuple = self._client().list_mcp_connected_accounts(
1261
+ config_id=config_id,
1262
+ identifier=identifier,
1263
+ include_auth_link=include_auth_link,
1264
+ )
1265
+ return ListMcpConnectedAccountsResponse.from_proto(result_tuple[0])
1266
+
1267
+ def create_session_token(
1268
+ self,
1269
+ mcp_config_id: str,
1270
+ identifier: str,
1271
+ expiry: Optional[timedelta] = None,
1272
+ ) -> CreateMcpSessionTokenResponse:
1273
+ """Create a short-lived session token for a user to access an MCP server.
1274
+
1275
+ The token is scoped to a specific MCP configuration and end-user. Pass it
1276
+ as a ``Bearer`` token in the ``Authorization`` header when making requests
1277
+ to the MCP server URL associated with the config.
1278
+
1279
+ Args:
1280
+ mcp_config_id: Scalekit ID of the MCP configuration the token should
1281
+ grant access to, e.g. ``"cfg_01abc123"``.
1282
+ identifier: End-user identifier for whom the token is minted — typically
1283
+ the same email or opaque ID used when calling ``ensure_instance``,
1284
+ e.g. ``"alice@example.com"``.
1285
+ expiry: Requested lifetime for the token as a Python ``timedelta``.
1286
+ When omitted, the server-side default TTL is applied (typically
1287
+ 1 hour). Example values:
1288
+
1289
+ - ``timedelta(minutes=30)`` — 30-minute token
1290
+ - ``timedelta(hours=8)`` — 8-hour token (work-day session)
1291
+ - ``timedelta(days=1)`` — 24-hour token
1292
+
1293
+ Returns:
1294
+ CreateMcpSessionTokenResponse: Contains:
1295
+
1296
+ - ``token`` (``str``) — opaque bearer token string.
1297
+ - ``expires_at`` (``datetime``) — UTC datetime when the token expires.
1298
+
1299
+ Raises:
1300
+ ValueError: If ``mcp_config_id`` or ``identifier`` is blank.
1301
+
1302
+ Example::
1303
+
1304
+ from datetime import timedelta
1305
+
1306
+ resp = client.actions.mcp.create_session_token(
1307
+ mcp_config_id="cfg_01abc123",
1308
+ identifier="alice@example.com",
1309
+ expiry=timedelta(hours=8),
1310
+ )
1311
+
1312
+ headers = {"Authorization": f"Bearer {resp.token}"}
1313
+ # Use headers when calling the MCP server URL
1314
+ """
1315
+ if not mcp_config_id:
1316
+ raise ValueError("mcp_config_id is required")
1317
+ if not identifier:
1318
+ raise ValueError("identifier is required")
1319
+ result_tuple = self._client().create_session_token(
1320
+ mcp_config_id=mcp_config_id,
1321
+ identifier=identifier,
1322
+ expiry=expiry,
1323
+ )
1324
+ return CreateMcpSessionTokenResponse.from_proto(result_tuple[0])
1325
+
1326
+
1327
+ class ActionProviders:
1328
+ """Typed action layer over ProvidersClient for custom provider CRUD.
1329
+
1330
+ Accepts typed request objects and returns typed response objects.
1331
+ Access via ActionClient.providers — do not instantiate directly.
1332
+ """
1333
+
1334
+ def __init__(self, providers_client) -> None:
1335
+ self._providers_client = providers_client
1336
+
1337
+ def create_custom_provider(
1338
+ self,
1339
+ request: CreateCustomProviderRequest,
1340
+ ) -> CreateCustomProviderResponse:
1341
+ """Create a new custom provider.
1342
+
1343
+ :param request: Request object containing display_name (required),
1344
+ proxy_url (required), and optional description,
1345
+ proxy_enabled, and auth_patterns.
1346
+ :type request: CreateCustomProviderRequest
1347
+
1348
+ :returns: Response containing the created provider with its server-assigned
1349
+ identifier and all decoded auth_patterns.
1350
+ :rtype: CreateCustomProviderResponse
1351
+
1352
+ :raises ScalekitBadRequestException: If required fields are missing or invalid.
1353
+ :raises ScalekitConflictException: If a provider with the same name already exists.
1354
+ """
1355
+ result_tuple = self._providers_client.create_custom_provider(
1356
+ display_name=request.display_name,
1357
+ proxy_url=request.proxy_url,
1358
+ proxy_enabled=request.proxy_enabled,
1359
+ description=request.description,
1360
+ auth_patterns=request.auth_patterns,
1361
+ )
1362
+ return CreateCustomProviderResponse.from_proto(result_tuple[0])
1363
+
1364
+ def update_custom_provider(
1365
+ self,
1366
+ request: UpdateCustomProviderRequest,
1367
+ ) -> UpdateCustomProviderResponse:
1368
+ """Update an existing custom provider.
1369
+
1370
+ Only fields set to a non-None value in the request are applied.
1371
+ Fields left as None are ignored and their existing server values are kept.
1372
+
1373
+ :param request: Request object containing identifier (required) and any
1374
+ combination of display_name, description, proxy_url, and
1375
+ auth_patterns to update.
1376
+ :type request: UpdateCustomProviderRequest
1377
+
1378
+ :returns: Response containing the provider's full state after the update.
1379
+ :rtype: UpdateCustomProviderResponse
1380
+
1381
+ :raises ScalekitNotFoundException: If no provider with the given identifier exists.
1382
+ :raises ScalekitBadRequestException: If any updated field value is invalid.
1383
+ """
1384
+ result_tuple = self._providers_client.update_custom_provider(
1385
+ identifier=request.identifier,
1386
+ display_name=request.display_name,
1387
+ proxy_url=request.proxy_url,
1388
+ description=request.description,
1389
+ auth_patterns=request.auth_patterns,
1390
+ )
1391
+ return UpdateCustomProviderResponse.from_proto(result_tuple[0])
1392
+
1393
+ def list_providers(
1394
+ self,
1395
+ request: ListProvidersRequest,
1396
+ ) -> ListProvidersResponse:
1397
+ """List providers with optional filtering and pagination.
1398
+
1399
+ :param request: Request object with optional provider_type, page_size,
1400
+ page_token, and identifier filters. All fields are optional —
1401
+ an empty ListProvidersRequest() returns all providers.
1402
+ :type request: ListProvidersRequest
1403
+
1404
+ :returns: Response containing a page of providers and a next_page_token
1405
+ for fetching subsequent pages.
1406
+ :rtype: ListProvidersResponse
1407
+ """
1408
+ result_tuple = self._providers_client.list_providers(
1409
+ page_size=request.page_size,
1410
+ page_token=request.page_token,
1411
+ provider_type=request.provider_type,
1412
+ identifier=request.identifier,
1413
+ )
1414
+ return ListProvidersResponse.from_proto(result_tuple[0])
1415
+
1416
+ def delete_custom_provider(
1417
+ self,
1418
+ request: DeleteCustomProviderRequest,
1419
+ ) -> DeleteCustomProviderResponse:
1420
+ """Delete a custom provider by identifier.
1421
+
1422
+ Deletion is permanent. Returns an empty response on success. Any error
1423
+ (provider not found, insufficient permissions) raises a
1424
+ ScalekitServerException subclass before this method returns.
1425
+
1426
+ :param request: Request object containing the identifier of the provider
1427
+ to delete.
1428
+ :type request: DeleteCustomProviderRequest
1429
+
1430
+ :returns: Empty response confirming deletion.
1431
+ :rtype: DeleteCustomProviderResponse
1432
+
1433
+ :raises ScalekitNotFoundException: If no provider with the given identifier exists.
1434
+ :raises ScalekitForbiddenException: If the caller lacks permission to delete.
1435
+ """
1436
+ result_tuple = self._providers_client.delete_custom_provider(request.identifier)
1437
+ return DeleteCustomProviderResponse.from_proto(result_tuple[0])