scalekit-sdk-python 2.4.10__tar.gz → 2.4.11__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 (211) hide show
  1. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/PKG-INFO +1 -1
  2. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/actions.py +440 -84
  3. scalekit_sdk_python-2.4.11/scalekit/actions/models/mcp_config.py +137 -0
  4. scalekit_sdk_python-2.4.11/scalekit/actions/models/mcp_instance.py +105 -0
  5. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/create_mcp_config_response.py +35 -0
  6. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/delete_mcp_config_response.py +22 -0
  7. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/delete_mcp_instance_response.py +15 -0
  8. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/ensure_mcp_instance_response.py +29 -0
  9. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +30 -0
  10. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/get_mcp_instance_response.py +29 -0
  11. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/list_mcp_configs_response.py +59 -0
  12. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/list_mcp_instances_response.py +53 -0
  13. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/update_mcp_config_response.py +35 -0
  14. scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/update_mcp_instance_response.py +29 -0
  15. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/types.py +27 -1
  16. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/core.py +1 -1
  17. scalekit_sdk_python-2.4.11/scalekit/mcp.py +229 -0
  18. scalekit_sdk_python-2.4.11/scalekit/v1/auditlogs/auditlogs_pb2.py +41 -0
  19. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +4 -12
  20. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/auth_pb2.py +44 -44
  21. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/auth_pb2.pyi +2 -6
  22. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/auth_pb2_grpc.py +33 -0
  23. scalekit_sdk_python-2.4.11/scalekit/v1/connections/connections_pb2.py +580 -0
  24. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connections/connections_pb2.pyi +4 -100
  25. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connections/connections_pb2_grpc.py +0 -33
  26. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/environments_pb2.py +34 -34
  27. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/environments_pb2.pyi +2 -4
  28. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/events_pb2.py +16 -16
  29. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/events_pb2.pyi +2 -6
  30. scalekit_sdk_python-2.4.11/scalekit/v1/mcp/mcp_pb2.py +309 -0
  31. scalekit_sdk_python-2.4.11/scalekit/v1/mcp/mcp_pb2.pyi +339 -0
  32. scalekit_sdk_python-2.4.11/scalekit/v1/mcp/mcp_pb2_grpc.py +528 -0
  33. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
  34. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/SOURCES.txt +14 -12
  35. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/setup.py +1 -1
  36. scalekit_sdk_python-2.4.11/tests/test_actions.py +1895 -0
  37. scalekit_sdk_python-2.4.10/scalekit/mcp.py +0 -96
  38. scalekit_sdk_python-2.4.10/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -41
  39. scalekit_sdk_python-2.4.10/scalekit/v1/auth/webauthn_pb2.py +0 -123
  40. scalekit_sdk_python-2.4.10/scalekit/v1/auth/webauthn_pb2.pyi +0 -238
  41. scalekit_sdk_python-2.4.10/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -264
  42. scalekit_sdk_python-2.4.10/scalekit/v1/connections/connections_pb2.py +0 -657
  43. scalekit_sdk_python-2.4.10/scalekit/v1/interceptors/interceptors_pb2.py +0 -238
  44. scalekit_sdk_python-2.4.10/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -307
  45. scalekit_sdk_python-2.4.10/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -298
  46. scalekit_sdk_python-2.4.10/scalekit/v1/mcp/mcp_pb2.py +0 -97
  47. scalekit_sdk_python-2.4.10/scalekit/v1/mcp/mcp_pb2.pyi +0 -91
  48. scalekit_sdk_python-2.4.10/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -165
  49. scalekit_sdk_python-2.4.10/scalekit/v1/secrets/secrets_pb2.py +0 -106
  50. scalekit_sdk_python-2.4.10/scalekit/v1/secrets/secrets_pb2.pyi +0 -120
  51. scalekit_sdk_python-2.4.10/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -199
  52. scalekit_sdk_python-2.4.10/scalekit/v1/webhooks/__init__.py +0 -0
  53. scalekit_sdk_python-2.4.10/scalekit/v1/workspaces/__init__.py +0 -0
  54. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/LICENSE +0 -0
  55. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/README.md +0 -0
  56. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/__init__.py +0 -0
  57. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/__init__.py +0 -0
  58. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/expression_pb2.py +0 -0
  59. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/expression_pb2.pyi +0 -0
  60. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/expression_pb2_grpc.py +0 -0
  61. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/__init__.py +0 -0
  62. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/private_pb2.py +0 -0
  63. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/private_pb2.pyi +0 -0
  64. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/private_pb2_grpc.py +0 -0
  65. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/validate_pb2.py +0 -0
  66. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/validate_pb2.pyi +0 -0
  67. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/validate_pb2_grpc.py +0 -0
  68. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/__init__.py +0 -0
  69. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/__init__.py +0 -0
  70. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/__init__.py +0 -0
  71. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/google_adk.py +0 -0
  72. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/langchain.py +0 -0
  73. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/types/__init__.py +0 -0
  74. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
  75. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/util.py +0 -0
  76. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/__init__.py +0 -0
  77. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/__init__.py +0 -0
  78. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
  79. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/mcp_request.py +0 -0
  80. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/tool_request.py +0 -0
  81. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
  82. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/__init__.py +0 -0
  83. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
  84. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
  85. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
  86. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
  87. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
  88. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
  89. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
  90. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/magic_link_response.py +0 -0
  91. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
  92. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/tool_input_output.py +0 -0
  93. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/tool_mapping.py +0 -0
  94. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/modifier.py +0 -0
  95. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/client.py +0 -0
  96. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/__init__.py +0 -0
  97. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/exceptions.py +0 -0
  98. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/scalekit.py +0 -0
  99. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/user.py +0 -0
  100. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/connected_accounts.py +0 -0
  101. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/connection.py +0 -0
  102. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/constants/__init__.py +0 -0
  103. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/constants/user.py +0 -0
  104. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/directory.py +0 -0
  105. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/domain.py +0 -0
  106. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/m2m_client.py +0 -0
  107. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/organization.py +0 -0
  108. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/passwordless.py +0 -0
  109. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/permissions.py +0 -0
  110. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/role.py +0 -0
  111. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/sessions.py +0 -0
  112. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/tools.py +0 -0
  113. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/users.py +0 -0
  114. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/utils/__init__.py +0 -0
  115. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/utils/directory.py +0 -0
  116. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/__init__.py +0 -0
  117. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auditlogs/__init__.py +0 -0
  118. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
  119. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/__init__.py +0 -0
  120. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/passwordless_pb2.py +0 -0
  121. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
  122. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
  123. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/totp_pb2.py +0 -0
  124. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/totp_pb2.pyi +0 -0
  125. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
  126. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/__init__.py +0 -0
  127. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/clients_pb2.py +0 -0
  128. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/clients_pb2.pyi +0 -0
  129. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
  130. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/__init__.py +0 -0
  131. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/commons_pb2.py +0 -0
  132. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/commons_pb2.pyi +0 -0
  133. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
  134. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/__init__.py +0 -0
  135. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -0
  136. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
  137. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
  138. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connections/__init__.py +0 -0
  139. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/__init__.py +0 -0
  140. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/directories_pb2.py +0 -0
  141. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/directories_pb2.pyi +0 -0
  142. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
  143. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/__init__.py +0 -0
  144. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/domains_pb2.py +0 -0
  145. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/domains_pb2.pyi +0 -0
  146. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
  147. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/__init__.py +0 -0
  148. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/emails_pb2.py +0 -0
  149. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/emails_pb2.pyi +0 -0
  150. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
  151. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/__init__.py +0 -0
  152. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
  153. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/__init__.py +0 -0
  154. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
  155. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
  156. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
  157. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/__init__.py +0 -0
  158. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/events_pb2_grpc.py +0 -0
  159. {scalekit_sdk_python-2.4.10/scalekit/v1/interceptors → scalekit_sdk_python-2.4.11/scalekit/v1/mcp}/__init__.py +0 -0
  160. {scalekit_sdk_python-2.4.10/scalekit/v1/mcp → scalekit_sdk_python-2.4.11/scalekit/v1/members}/__init__.py +0 -0
  161. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/members/members_pb2.py +0 -0
  162. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/members/members_pb2.pyi +0 -0
  163. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/members/members_pb2_grpc.py +0 -0
  164. {scalekit_sdk_python-2.4.10/scalekit/v1/members → scalekit_sdk_python-2.4.11/scalekit/v1/migrations}/__init__.py +0 -0
  165. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/migrations/migrations_pb2.py +0 -0
  166. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
  167. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
  168. {scalekit_sdk_python-2.4.10/scalekit/v1/migrations → scalekit_sdk_python-2.4.11/scalekit/v1/options}/__init__.py +0 -0
  169. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/options/options_pb2.py +0 -0
  170. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/options/options_pb2.pyi +0 -0
  171. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/options/options_pb2_grpc.py +0 -0
  172. {scalekit_sdk_python-2.4.10/scalekit/v1/options → scalekit_sdk_python-2.4.11/scalekit/v1/organizations}/__init__.py +0 -0
  173. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/organizations/organizations_pb2.py +0 -0
  174. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
  175. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
  176. {scalekit_sdk_python-2.4.10/scalekit/v1/organizations → scalekit_sdk_python-2.4.11/scalekit/v1/providers}/__init__.py +0 -0
  177. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/providers/providers_pb2.py +0 -0
  178. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/providers/providers_pb2.pyi +0 -0
  179. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
  180. {scalekit_sdk_python-2.4.10/scalekit/v1/providers → scalekit_sdk_python-2.4.11/scalekit/v1/roles}/__init__.py +0 -0
  181. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/roles/roles_pb2.py +0 -0
  182. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/roles/roles_pb2.pyi +0 -0
  183. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
  184. {scalekit_sdk_python-2.4.10/scalekit/v1/roles → scalekit_sdk_python-2.4.11/scalekit/v1/sessions}/__init__.py +0 -0
  185. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/sessions/sessions_pb2.py +0 -0
  186. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
  187. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
  188. {scalekit_sdk_python-2.4.10/scalekit/v1/secrets → scalekit_sdk_python-2.4.11/scalekit/v1/tools}/__init__.py +0 -0
  189. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/tools/tools_pb2.py +0 -0
  190. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/tools/tools_pb2.pyi +0 -0
  191. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
  192. {scalekit_sdk_python-2.4.10/scalekit/v1/sessions → scalekit_sdk_python-2.4.11/scalekit/v1/user_attributes}/__init__.py +0 -0
  193. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
  194. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
  195. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
  196. {scalekit_sdk_python-2.4.10/scalekit/v1/tools → scalekit_sdk_python-2.4.11/scalekit/v1/users}/__init__.py +0 -0
  197. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/users/users_pb2.py +0 -0
  198. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/users/users_pb2.pyi +0 -0
  199. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/users/users_pb2_grpc.py +0 -0
  200. {scalekit_sdk_python-2.4.10/scalekit/v1/user_attributes → scalekit_sdk_python-2.4.11/scalekit/v1/webhooks}/__init__.py +0 -0
  201. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
  202. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
  203. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
  204. {scalekit_sdk_python-2.4.10/scalekit/v1/users → scalekit_sdk_python-2.4.11/scalekit/v1/workspaces}/__init__.py +0 -0
  205. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
  206. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
  207. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
  208. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
  209. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/requires.txt +0 -0
  210. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
  211. {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scalekit-sdk-python
3
- Version: 2.4.10
3
+ Version: 2.4.11
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,10 +1,8 @@
1
1
  from typing import Optional, Any, List, Dict
2
- from scalekit.v1.mcp.mcp_pb2 import Mcp
3
- from scalekit.v1.mcp.mcp_pb2 import ToolMapping as ProtoToolMapping
4
-
5
- from scalekit.actions.models.tool_mapping import ToolMapping
6
2
  from scalekit.actions.types import ToolRequest,ExecuteToolResponse,MagicLinkResponse,ListConnectedAccountsResponse,DeleteConnectedAccountResponse,GetConnectedAccountAuthResponse,ToolInput, \
7
- McpRequest,CreateMcpResponse,GetMcpResponse,UpdateConnectedAccountResponse
3
+ UpdateConnectedAccountResponse,CreateMcpConfigResponse,ListMcpConfigsResponse,UpdateMcpConfigResponse,DeleteMcpConfigResponse, \
4
+ EnsureMcpInstanceResponse,UpdateMcpInstanceResponse,GetMcpInstanceResponse,ListMcpInstancesResponse,DeleteMcpInstanceResponse,GetMcpInstanceAuthStateResponse, \
5
+ McpConfig,McpConfigConnectionToolMapping
8
6
  from scalekit.actions.models.responses.create_connected_account_response import CreateConnectedAccountResponse
9
7
  from scalekit.actions.models.requests.create_connected_account_request import CreateConnectedAccountRequest
10
8
  from scalekit.actions.models.requests.update_connected_account_request import UpdateConnectedAccountRequest
@@ -37,7 +35,8 @@ class ActionClient:
37
35
 
38
36
  self.tools = tools_client
39
37
  self.connected_accounts = connected_accounts_client
40
- self.mcp = mcp_client
38
+ self._mcp_client = mcp_client
39
+ self._mcp_actions = None
41
40
  self._modifiers: List[Modifier] = []
42
41
  self._google = None
43
42
  self._langchain = None
@@ -80,6 +79,13 @@ class ActionClient:
80
79
 
81
80
  return self._google
82
81
 
82
+ @property
83
+ def mcp(self) -> "ActionMcp":
84
+ """Expose MCP-related operations behind a dedicated helper."""
85
+ if self._mcp_actions is None:
86
+ self._mcp_actions = ActionMcp(self)
87
+ return self._mcp_actions
88
+
83
89
  def execute_tool(
84
90
  self,
85
91
  tool_input:ToolInput,
@@ -317,91 +323,153 @@ class ActionClient:
317
323
  return func
318
324
  return decorator
319
325
 
320
- def get_mcp(
326
+ def list_configs(
321
327
  self,
322
- mcp_id: str,
323
- mcp_request: Optional[McpRequest] = None,
324
- **kwargs
325
- ) -> GetMcpResponse:
326
- """
327
- Get an existing MCP by ID via the connect interface
328
-
329
- :param mcp_id: ID of the MCP to retrieve (required)
330
- :type: str
331
- :param mcp_request: Optional McpRequest configuration object
332
- :type: McpRequest
333
-
334
- :returns:
335
- GetMcpResponse containing MCP details
336
- """
337
- if not self.mcp:
338
- raise ValueError("MCP client not initialized. Please ensure MCP client is available.")
339
-
340
- if not mcp_id:
341
- raise ValueError("mcp_id is required")
342
-
343
- # Call the MCP client's get_mcp method which returns (response, metadata) tuple
344
- result_tuple = self.mcp.get_mcp(mcp_id=mcp_id)
345
-
346
- # Extract the response[0] (the actual GetMcpResponse proto object)
347
- proto_response = result_tuple[0]
348
-
349
- # Convert proto to our GetMcpResponse class
350
- return GetMcpResponse.from_proto(proto_response)
328
+ page_size: Optional[int] = None,
329
+ page_token: Optional[str] = None,
330
+ filter_id: Optional[str] = None,
331
+ filter_provider: Optional[str] = None,
332
+ filter_name: Optional[str] = None,
333
+ search: Optional[str] = None,
334
+ **kwargs,
335
+ ) -> ListMcpConfigsResponse:
336
+ """List MCP configurations with optional filters via the action layer."""
337
+
338
+ return self.mcp.list_configs(
339
+ page_size=page_size,
340
+ page_token=page_token,
341
+ filter_id=filter_id,
342
+ filter_provider=filter_provider,
343
+ filter_name=filter_name,
344
+ search=search,
345
+ )
351
346
 
352
- def create_mcp(
347
+ def create_config(
353
348
  self,
354
- identifier: str,
355
- tool_mappings: List[ToolMapping],
356
- mcp_request: Optional[McpRequest] = None,
357
- **kwargs
358
- ) -> CreateMcpResponse:
359
- """
360
- Create or return existing MCP with given configuration via the connect interface
361
-
362
- :param identifier: Identifier for the connected account (required)
363
- :type: str
364
- :param tool_mappings: List of tool mappings for the MCP (required)
365
- :type: List[ToolMapping]
366
- :param mcp_request: Optional McpRequest configuration object
367
- :type: McpRequest
368
-
369
- :returns:
370
- CreateMcpResponse containing created MCP details
371
- """
372
- if not self.mcp:
373
- raise ValueError("MCP client not initialized. Please ensure MCP client is available.")
374
-
375
- # Validate required parameters
376
- if not identifier:
377
- raise ValueError("connected_account_identifier is required")
378
- if not tool_mappings:
379
- raise ValueError("tool_mappings is required")
349
+ name: str,
350
+ description: Optional[str] = None,
351
+ connection_tool_mappings: Optional[List[McpConfigConnectionToolMapping]] = None,
352
+ **kwargs,
353
+ ) -> CreateMcpConfigResponse:
354
+ """Create a new MCP configuration via the action layer."""
355
+
356
+ return self.mcp.create_config(
357
+ name=name,
358
+ description=description,
359
+ connection_tool_mappings=connection_tool_mappings,
360
+ )
380
361
 
362
+ def update_config(
363
+ self,
364
+ config_id: str,
365
+ description: Optional[str] = None,
366
+ connection_tool_mappings: Optional[List[McpConfigConnectionToolMapping]] = None,
367
+ **kwargs,
368
+ ) -> UpdateMcpConfigResponse:
369
+ """Update an existing MCP configuration via the action layer."""
370
+
371
+ return self.mcp.update_config(
372
+ config_id=config_id,
373
+ description=description,
374
+ connection_tool_mappings=connection_tool_mappings,
375
+ )
381
376
 
377
+ def delete_config(
378
+ self,
379
+ config_id: str,
380
+ **kwargs,
381
+ ) -> DeleteMcpConfigResponse:
382
+ """Delete an MCP configuration via the action layer."""
382
383
 
383
- # Create ToolMapping objects from the provided tool_mappings
384
- proto_tool_mappings = []
385
- for mapping in tool_mappings:
386
- proto_mapping = ProtoToolMapping(
387
- tool_names=mapping.tool_names,
388
- connection_name=mapping.connection_name,
389
- )
390
- proto_tool_mappings.append(proto_mapping)
391
-
392
- # Create the MCP proto object
393
- mcp_proto = Mcp(
394
- connected_account_identifier=identifier,
395
- tool_mappings=proto_tool_mappings,
384
+ return self.mcp.delete_config(config_id=config_id)
385
+
386
+ def ensure_instance(
387
+ self,
388
+ config_name: str,
389
+ user_identifier: str,
390
+ name: Optional[str] = None,
391
+ **kwargs,
392
+ ) -> EnsureMcpInstanceResponse:
393
+ """Ensure (create or return) an MCP instance for a given config and user."""
394
+
395
+ return self.mcp.ensure_instance(
396
+ config_name=config_name,
397
+ user_identifier=user_identifier,
398
+ name=name,
396
399
  )
397
400
 
398
- result_tuple = self.mcp.create_mcp(mcp=mcp_proto)
399
-
400
- # Extract the response[0] (the actual CreateMcpResponse proto object)
401
- proto_response = result_tuple[0]
402
-
403
- # Convert proto to our CreateMcpResponse class
404
- return CreateMcpResponse.from_proto(proto_response)
401
+ def update_instance(
402
+ self,
403
+ instance_id: str,
404
+ name: Optional[str] = None,
405
+ config_name: Optional[str] = None,
406
+ **kwargs,
407
+ ) -> UpdateMcpInstanceResponse:
408
+ """Update mutable fields on an MCP instance."""
409
+
410
+ return self.mcp.update_instance(
411
+ instance_id=instance_id,
412
+ name=name,
413
+ config_name=config_name,
414
+ )
415
+
416
+ def get_instance(
417
+ self,
418
+ instance_id: str,
419
+ **kwargs,
420
+ ) -> GetMcpInstanceResponse:
421
+ """Fetch a single MCP instance by ID."""
422
+
423
+ return self.mcp.get_instance(instance_id=instance_id)
424
+
425
+ def list_instances(
426
+ self,
427
+ page_size: Optional[int] = None,
428
+ page_token: Optional[str] = None,
429
+ filter_id: Optional[str] = None,
430
+ filter_name: Optional[str] = None,
431
+ filter_config_name: Optional[str] = None,
432
+ filter_user_identifier: Optional[str] = None,
433
+ **kwargs,
434
+ ) -> ListMcpInstancesResponse:
435
+ """List MCP instances with optional filters applied."""
436
+
437
+ return self.mcp.list_instances(
438
+ page_size=page_size,
439
+ page_token=page_token,
440
+ filter_id=filter_id,
441
+ filter_name=filter_name,
442
+ filter_config_name=filter_config_name,
443
+ filter_user_identifier=filter_user_identifier,
444
+ )
445
+
446
+ def delete_instance(
447
+ self,
448
+ instance_id: str,
449
+ **kwargs,
450
+ ) -> DeleteMcpInstanceResponse:
451
+ """Delete an MCP instance by ID."""
452
+
453
+ return self.mcp.delete_instance(instance_id=instance_id)
454
+
455
+ def get_instance_auth_state(
456
+ self,
457
+ instance_id: str,
458
+ include_auth_links: Optional[bool] = None,
459
+ **kwargs,
460
+ ) -> GetMcpInstanceAuthStateResponse:
461
+ """Retrieve authentication state for the connections used by an MCP instance.
462
+
463
+ :param instance_id: ID of the MCP instance (required)
464
+ :type instance_id: str
465
+ :param include_auth_links: When True, generate fresh auth links for connections
466
+ :type include_auth_links: Optional[bool]
467
+ """
468
+
469
+ return self.mcp.get_instance_auth_state(
470
+ instance_id=instance_id,
471
+ include_auth_links=include_auth_links,
472
+ )
405
473
 
406
474
  def create_connected_account(
407
475
  self,
@@ -592,4 +660,292 @@ class ActionClient:
592
660
  proto_response = result_tuple[0]
593
661
 
594
662
  # Convert proto to our UpdateConnectedAccountResponse class
595
- return UpdateConnectedAccountResponse.from_proto(proto_response)
663
+ return UpdateConnectedAccountResponse.from_proto(proto_response)
664
+
665
+
666
+ class ActionMcp:
667
+ """Helper that exposes MCP-specific actions through the ActionClient."""
668
+
669
+ def __init__(self, action_client: ActionClient) -> None:
670
+ self._actions = action_client
671
+
672
+ def _client(self):
673
+ """Return the underlying MCP client, ensuring it has been configured.
674
+
675
+ Returns:
676
+ The low-level MCP client bound to the parent `ActionClient`.
677
+
678
+ Raises:
679
+ ValueError: If no MCP client has been provided to the `ActionClient`.
680
+ """
681
+ client = self._actions._mcp_client
682
+ if not client:
683
+ raise ValueError("MCP client not initialized. Please ensure MCP client is available.")
684
+ return client
685
+
686
+ def list_configs(
687
+ self,
688
+ page_size: Optional[int] = None,
689
+ page_token: Optional[str] = None,
690
+ filter_id: Optional[str] = None,
691
+ filter_provider: Optional[str] = None,
692
+ filter_name: Optional[str] = None,
693
+ search: Optional[str] = None,
694
+ ) -> ListMcpConfigsResponse:
695
+ """List MCP configurations with optional pagination and filtering.
696
+
697
+ Args:
698
+ page_size: Maximum number of configs to include in the current page.
699
+ page_token: Cursor token returned by a previous `list_configs` call.
700
+ filter_id: Restrict results to a specific configuration identifier.
701
+ filter_provider: Restrict results to configs for a given provider slug.
702
+ filter_name: Restrict results to configs whose names match exactly.
703
+ search: Free-form search query applied to name field.
704
+
705
+ Returns:
706
+ ListMcpConfigsResponse: Parsed wrapper around the proto response.
707
+
708
+ Raises:
709
+ ValueError: If an MCP client has not been configured on the action client.
710
+ """
711
+ client = self._client()
712
+ result_tuple = client.list_configs(
713
+ page_size=page_size,
714
+ page_token=page_token,
715
+ filter_id=filter_id,
716
+ filter_provider=filter_provider,
717
+ filter_name=filter_name,
718
+ search=search,
719
+ )
720
+ return ListMcpConfigsResponse.from_proto(result_tuple[0])
721
+
722
+ def create_config(
723
+ self,
724
+ name: str,
725
+ description: Optional[str] = None,
726
+ connection_tool_mappings: Optional[List[McpConfigConnectionToolMapping]] = None,
727
+ ) -> CreateMcpConfigResponse:
728
+ """Create a new MCP configuration from the supplied metadata and tool mappings.
729
+
730
+ Args:
731
+ name: Human readable name for the configuration.
732
+ description: Optional summary that surfaces in dashboards and APIs.
733
+ connection_tool_mappings: Explicit mapping between connectors and tools.
734
+
735
+ Returns:
736
+ CreateMcpConfigResponse: Wrapper containing the created configuration payload.
737
+
738
+ Raises:
739
+ ValueError: If `name` is blank or the MCP client is not available.
740
+ """
741
+ if not name:
742
+ raise ValueError("name is required")
743
+ proto_config = McpConfig.to_proto_static(
744
+ name=name,
745
+ description=description,
746
+ connection_tool_mappings=connection_tool_mappings or [],
747
+ )
748
+ result_tuple = self._client().create_config(mcp_config=proto_config)
749
+ return CreateMcpConfigResponse.from_proto(result_tuple[0])
750
+
751
+ def update_config(
752
+ self,
753
+ config_id: str,
754
+ description: Optional[str] = None,
755
+ connection_tool_mappings: Optional[List[McpConfigConnectionToolMapping]] = None,
756
+ ) -> UpdateMcpConfigResponse:
757
+ """Update mutable fields on an existing MCP configuration.
758
+
759
+ Args:
760
+ config_id: Identifier of the configuration to update.
761
+ description: New description to persist, if provided.
762
+ connection_tool_mappings: Replacement connector-to-tool mappings.
763
+
764
+ Returns:
765
+ UpdateMcpConfigResponse: Wrapper containing the updated configuration payload.
766
+
767
+ Raises:
768
+ ValueError: If `config_id` is blank or the MCP client is not available.
769
+ """
770
+ if not config_id:
771
+ raise ValueError("config_id is required")
772
+ proto_mappings = None
773
+ if connection_tool_mappings is not None:
774
+ proto_mappings = [mapping.to_proto() for mapping in connection_tool_mappings]
775
+ result_tuple = self._client().update_config(
776
+ config_id=config_id,
777
+ description=description,
778
+ connection_tool_mappings=proto_mappings,
779
+ )
780
+ return UpdateMcpConfigResponse.from_proto(result_tuple[0])
781
+
782
+ def delete_config(self, config_id: str) -> DeleteMcpConfigResponse:
783
+ """Delete an MCP configuration so it can no longer be used to create instances.
784
+
785
+ Args:
786
+ config_id: Identifier of the configuration to remove.
787
+
788
+ Returns:
789
+ DeleteMcpConfigResponse: Wrapper confirming deletion status.
790
+
791
+ Raises:
792
+ ValueError: If `config_id` is blank or the MCP client is not available.
793
+ """
794
+ if not config_id:
795
+ raise ValueError("config_id is required")
796
+ result_tuple = self._client().delete_config(config_id=config_id)
797
+ return DeleteMcpConfigResponse.from_proto(result_tuple[0])
798
+
799
+ def ensure_instance(
800
+ self,
801
+ config_name: str,
802
+ user_identifier: str,
803
+ name: Optional[str] = None,
804
+ ) -> EnsureMcpInstanceResponse:
805
+ """Create or return an MCP instance matching a configuration and user.
806
+
807
+ Args:
808
+ config_name: Name of the MCP configuration to instantiate.
809
+ user_identifier: Identifier that represents the end user or tenant.
810
+ name: Optional name applied to the generated instance.
811
+
812
+ Returns:
813
+ EnsureMcpInstanceResponse: Wrapper containing the ensured instance payload.
814
+
815
+ Raises:
816
+ ValueError: If required identifiers are missing or the MCP client is absent.
817
+ """
818
+ if not config_name:
819
+ raise ValueError("config_name is required")
820
+ if not user_identifier:
821
+ raise ValueError("user_identifier is required")
822
+ result_tuple = self._client().ensure_instance(
823
+ name=name,
824
+ config_name=config_name,
825
+ user_identifier=user_identifier,
826
+ )
827
+ return EnsureMcpInstanceResponse.from_proto(result_tuple[0])
828
+
829
+ def update_instance(
830
+ self,
831
+ instance_id: str,
832
+ name: Optional[str] = None,
833
+ config_name: Optional[str] = None,
834
+ ) -> UpdateMcpInstanceResponse:
835
+ """Apply updates to an existing MCP instance's identifying fields.
836
+
837
+ Args:
838
+ instance_id: Identifier of the MCP instance to update.
839
+ name: New display name to assign to the instance.
840
+ config_name: New backing configuration to associate with the instance.
841
+
842
+ Returns:
843
+ UpdateMcpInstanceResponse: Wrapper containing the updated instance payload.
844
+
845
+ Raises:
846
+ ValueError: If `instance_id` is blank, no updates are provided, or the client is absent.
847
+ """
848
+ if not instance_id:
849
+ raise ValueError("instance_id is required")
850
+ if name is None and config_name is None:
851
+ raise ValueError("At least one of name or config_name must be provided")
852
+ result_tuple = self._client().update_instance(
853
+ instance_id=instance_id,
854
+ name=name,
855
+ config_name=config_name,
856
+ )
857
+ return UpdateMcpInstanceResponse.from_proto(result_tuple[0])
858
+
859
+ def get_instance(self, instance_id: str) -> GetMcpInstanceResponse:
860
+ """Fetch a single MCP instance by its identifier.
861
+
862
+ Args:
863
+ instance_id: Identifier of the MCP instance to retrieve.
864
+
865
+ Returns:
866
+ GetMcpInstanceResponse: Wrapper containing the fetched instance payload.
867
+
868
+ Raises:
869
+ ValueError: If `instance_id` is blank or the MCP client is not available.
870
+ """
871
+ if not instance_id:
872
+ raise ValueError("instance_id is required")
873
+ result_tuple = self._client().get_instance(instance_id=instance_id)
874
+ return GetMcpInstanceResponse.from_proto(result_tuple[0])
875
+
876
+ def list_instances(
877
+ self,
878
+ page_size: Optional[int] = None,
879
+ page_token: Optional[str] = None,
880
+ filter_id: Optional[str] = None,
881
+ filter_name: Optional[str] = None,
882
+ filter_config_name: Optional[str] = None,
883
+ filter_user_identifier: Optional[str] = None,
884
+ ) -> ListMcpInstancesResponse:
885
+ """List MCP instances, allowing pagination and filtering by common fields.
886
+
887
+ Args:
888
+ page_size: Maximum number of instances to include in the current page.
889
+ page_token: Cursor token returned by a previous `list_instances` call.
890
+ filter_id: Restrict results to a specific instance identifier.
891
+ filter_name: Restrict results to instances with a matching name.
892
+ filter_config_name: Restrict results to instances bound to a configuration name.
893
+ filter_user_identifier: Restrict results to instances for a specific user.
894
+
895
+ Returns:
896
+ ListMcpInstancesResponse: Wrapper containing the page of instances.
897
+
898
+ Raises:
899
+ ValueError: If the MCP client is not available.
900
+ """
901
+ result_tuple = self._client().list_instances(
902
+ page_size=page_size,
903
+ page_token=page_token,
904
+ filter_id=filter_id,
905
+ filter_name=filter_name,
906
+ filter_config_name=filter_config_name,
907
+ filter_user_identifier=filter_user_identifier,
908
+ )
909
+ return ListMcpInstancesResponse.from_proto(result_tuple[0])
910
+
911
+ def delete_instance(self, instance_id: str) -> DeleteMcpInstanceResponse:
912
+ """Delete a specific MCP instance by identifier.
913
+
914
+ Args:
915
+ instance_id: Identifier of the MCP instance to delete.
916
+
917
+ Returns:
918
+ DeleteMcpInstanceResponse: Wrapper confirming deletion status.
919
+
920
+ Raises:
921
+ ValueError: If `instance_id` is blank or the MCP client is not available.
922
+ """
923
+ if not instance_id:
924
+ raise ValueError("instance_id is required")
925
+ result_tuple = self._client().delete_instance(instance_id=instance_id)
926
+ return DeleteMcpInstanceResponse.from_proto(result_tuple[0])
927
+
928
+ def get_instance_auth_state(
929
+ self,
930
+ instance_id: str,
931
+ include_auth_links: Optional[bool] = None,
932
+ ) -> GetMcpInstanceAuthStateResponse:
933
+ """Retrieve authorization health for the connectors backing an MCP instance and create new authorization links.
934
+
935
+ Args:
936
+ instance_id: Identifier of the MCP instance whose auth state to inspect.
937
+ include_auth_links: When true, mint new auth links for authorization or re-authorization.
938
+
939
+ Returns:
940
+ GetMcpInstanceAuthStateResponse: Wrapper containing per-connector auth status.
941
+
942
+ Raises:
943
+ ValueError: If `instance_id` is blank or the MCP client is not available.
944
+ """
945
+ if not instance_id:
946
+ raise ValueError("instance_id is required")
947
+ result_tuple = self._client().get_instance_auth_state(
948
+ instance_id=instance_id,
949
+ include_auth_links=include_auth_links,
950
+ )
951
+ return GetMcpInstanceAuthStateResponse.from_proto(result_tuple[0])