scalekit-sdk-python 2.10.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.
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/PKG-INFO +1 -1
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/_version.py +1 -1
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/actions.py +191 -28
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/mcp_config.py +6 -0
- scalekit_sdk_python-2.11.0/scalekit/actions/models/mcp_connection_auth_state.py +62 -0
- scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/create_mcp_session_token_response.py +52 -0
- scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +52 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/types.py +6 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/connected_accounts.py +19 -11
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/core.py +1 -1
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/mcp.py +104 -13
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/auth_pb2.py +40 -36
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/auth_pb2.pyi +8 -4
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/clients_pb2.py +84 -84
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/commons_pb2.py +21 -13
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/commons_pb2.pyi +10 -0
- scalekit_sdk_python-2.11.0/scalekit/v1/connected_accounts/connected_accounts_pb2.py +323 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +14 -2
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +34 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/domains_pb2.py +12 -12
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/environments_pb2.py +140 -112
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/environments_pb2.pyi +46 -4
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/environments_pb2_grpc.py +66 -0
- scalekit_sdk_python-2.11.0/scalekit/v1/mcp/mcp_pb2.py +358 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/mcp/mcp_pb2.pyi +59 -4
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +66 -0
- scalekit_sdk_python-2.11.0/scalekit/v1/migrations/migrations_pb2.py +101 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/migrations/migrations_pb2.pyi +21 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +33 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/organizations/organizations_pb2.py +96 -90
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/organizations/organizations_pb2.pyi +12 -6
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/roles_pb2.py +4 -4
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/tools_pb2.py +32 -32
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/SOURCES.txt +4 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_actions.py +189 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_connected_accounts.py +65 -0
- scalekit_sdk_python-2.11.0/tests/test_mcp.py +301 -0
- scalekit_sdk_python-2.11.0/tests/test_organization_slug_logo.py +89 -0
- scalekit_sdk_python-2.10.0/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -311
- scalekit_sdk_python-2.10.0/scalekit/v1/mcp/mcp_pb2.py +0 -309
- scalekit_sdk_python-2.10.0/scalekit/v1/migrations/migrations_pb2.py +0 -90
- scalekit_sdk_python-2.10.0/tests/test_mcp.py +0 -156
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/LICENSE +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/README.md +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/expression_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/expression_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/expression_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/private_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/private_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/priv/private_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/validate_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/validate_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/buf/validate/validate_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/pyproject.toml +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/google_adk.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/langchain.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/frameworks/util.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/custom_provider.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/mcp_instance.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/tool_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/tool_input_output.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/tool_mapping.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/modifier.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/auth.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/client.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/common/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/common/exceptions.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/common/scalekit.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/common/user.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/connection.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/constants/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/constants/user.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/directory.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/domain.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/m2m_client.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/organization.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/passwordless.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/permissions.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/providers.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/role.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/sessions.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/token.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/tools.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/users.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/utils/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/utils/directory.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/totp_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/clients_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/connections_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/connections_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/directories_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/emails_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/environments/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/events_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/events_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/keys_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/mcp/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/members_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/members_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/migrations/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/options_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/options_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/organizations/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/providers/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/providers/providers_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/users_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/users_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/__init__.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/webauthn.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/setup.cfg +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/setup.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_connection.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_directory.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_domain.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_m2m_client.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_org_roles.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_organization.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_organization_session_policy.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_passwordless.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_permissions.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_providers.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_role_defaults_dependent.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_roles.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_sessions.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_tokens.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_tools.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_user_roles_permissions.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_users.py +0 -0
- {scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/tests/test_webauthn_credentials.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
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, \
|
|
@@ -5,7 +6,8 @@ from scalekit.actions.types import ToolRequest,ExecuteToolResponse,MagicLinkResp
|
|
|
5
6
|
EnsureMcpInstanceResponse,UpdateMcpInstanceResponse,GetMcpInstanceResponse,ListMcpInstancesResponse,DeleteMcpInstanceResponse,GetMcpInstanceAuthStateResponse, \
|
|
6
7
|
McpConfig,McpConfigConnectionToolMapping,VerifyConnectedAccountUserResponse, \
|
|
7
8
|
CreateCustomProviderRequest,UpdateCustomProviderRequest,ListProvidersRequest,DeleteCustomProviderRequest, \
|
|
8
|
-
CreateCustomProviderResponse,UpdateCustomProviderResponse,ListProvidersResponse,DeleteCustomProviderResponse
|
|
9
|
+
CreateCustomProviderResponse,UpdateCustomProviderResponse,ListProvidersResponse,DeleteCustomProviderResponse, \
|
|
10
|
+
ListMcpConnectedAccountsResponse,CreateMcpSessionTokenResponse,McpConnectionAuthState
|
|
9
11
|
from scalekit.actions.models.responses.create_connected_account_response import CreateConnectedAccountResponse
|
|
10
12
|
from scalekit.actions.models.requests.create_connected_account_request import CreateConnectedAccountRequest
|
|
11
13
|
from scalekit.actions.models.requests.update_connected_account_request import UpdateConnectedAccountRequest
|
|
@@ -242,37 +244,35 @@ class ActionClient:
|
|
|
242
244
|
return VerifyConnectedAccountUserResponse.from_proto(proto_response)
|
|
243
245
|
|
|
244
246
|
def list_connected_accounts(
|
|
245
|
-
self,
|
|
247
|
+
self,
|
|
246
248
|
connection_name: Optional[str] = None,
|
|
247
249
|
identifier: Optional[str] = None,
|
|
248
250
|
provider: Optional[str] = None,
|
|
251
|
+
connection_names: Optional[List[str]] = None,
|
|
249
252
|
**kwargs
|
|
250
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.
|
|
251
268
|
"""
|
|
252
|
-
List connected accounts with optional filtering
|
|
253
|
-
|
|
254
|
-
:param connection_name: Connector identifier (optional)
|
|
255
|
-
:type: str
|
|
256
|
-
:param identifier: Identifier filter (optional)
|
|
257
|
-
:type: str
|
|
258
|
-
:param provider: Provider filter (optional)
|
|
259
|
-
:type: str
|
|
260
|
-
|
|
261
|
-
:returns:
|
|
262
|
-
ListConnectedAccountsResponse containing list of connected accounts
|
|
263
|
-
"""
|
|
264
|
-
# Call the existing connected_accounts method which returns (response, metadata) tuple
|
|
265
269
|
result_tuple = self.connected_accounts.list_connected_accounts(
|
|
266
270
|
connector=connection_name,
|
|
267
271
|
identifier=identifier,
|
|
268
|
-
provider=provider
|
|
272
|
+
provider=provider,
|
|
273
|
+
connection_names=connection_names,
|
|
269
274
|
)
|
|
270
|
-
|
|
271
|
-
# Extract the response[0] (the actual ListConnectedAccountsResponse proto object)
|
|
272
|
-
proto_response = result_tuple[0]
|
|
273
|
-
|
|
274
|
-
# Convert proto to our ListConnectedAccountsResponse class
|
|
275
|
-
return ListConnectedAccountsResponse.from_proto(proto_response)
|
|
275
|
+
return ListConnectedAccountsResponse.from_proto(result_tuple[0])
|
|
276
276
|
|
|
277
277
|
def delete_connected_account(
|
|
278
278
|
self,
|
|
@@ -543,6 +543,7 @@ class ActionClient:
|
|
|
543
543
|
filter_id: Optional[str] = None,
|
|
544
544
|
filter_provider: Optional[str] = None,
|
|
545
545
|
filter_name: Optional[str] = None,
|
|
546
|
+
filter_mcp_server_url: Optional[str] = None,
|
|
546
547
|
search: Optional[str] = None,
|
|
547
548
|
**kwargs,
|
|
548
549
|
) -> ListMcpConfigsResponse:
|
|
@@ -554,6 +555,7 @@ class ActionClient:
|
|
|
554
555
|
filter_id=filter_id,
|
|
555
556
|
filter_provider=filter_provider,
|
|
556
557
|
filter_name=filter_name,
|
|
558
|
+
filter_mcp_server_url=filter_mcp_server_url,
|
|
557
559
|
search=search,
|
|
558
560
|
)
|
|
559
561
|
|
|
@@ -900,23 +902,43 @@ class ActionMcp:
|
|
|
900
902
|
filter_id: Optional[str] = None,
|
|
901
903
|
filter_provider: Optional[str] = None,
|
|
902
904
|
filter_name: Optional[str] = None,
|
|
905
|
+
filter_mcp_server_url: Optional[str] = None,
|
|
903
906
|
search: Optional[str] = None,
|
|
904
907
|
) -> ListMcpConfigsResponse:
|
|
905
908
|
"""List MCP configurations with optional pagination and filtering.
|
|
906
909
|
|
|
907
910
|
Args:
|
|
908
911
|
page_size: Maximum number of configs to include in the current page.
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
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.
|
|
914
924
|
|
|
915
925
|
Returns:
|
|
916
|
-
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``.
|
|
917
928
|
|
|
918
929
|
Raises:
|
|
919
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
|
+
)
|
|
920
942
|
"""
|
|
921
943
|
client = self._client()
|
|
922
944
|
result_tuple = client.list_configs(
|
|
@@ -925,6 +947,7 @@ class ActionMcp:
|
|
|
925
947
|
filter_id=filter_id,
|
|
926
948
|
filter_provider=filter_provider,
|
|
927
949
|
filter_name=filter_name,
|
|
950
|
+
filter_mcp_server_url=filter_mcp_server_url,
|
|
928
951
|
search=search,
|
|
929
952
|
)
|
|
930
953
|
return ListMcpConfigsResponse.from_proto(result_tuple[0])
|
|
@@ -1160,6 +1183,146 @@ class ActionMcp:
|
|
|
1160
1183
|
)
|
|
1161
1184
|
return GetMcpInstanceAuthStateResponse.from_proto(result_tuple[0])
|
|
1162
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
|
+
|
|
1163
1326
|
|
|
1164
1327
|
class ActionProviders:
|
|
1165
1328
|
"""Typed action layer over ProvidersClient for custom provider CRUD.
|
{scalekit_sdk_python-2.10.0 → scalekit_sdk_python-2.11.0}/scalekit/actions/models/mcp_config.py
RENAMED
|
@@ -74,6 +74,10 @@ class McpConfig(BaseModel):
|
|
|
74
74
|
default_factory=list,
|
|
75
75
|
description="Mappings that connect tools to underlying connections",
|
|
76
76
|
)
|
|
77
|
+
mcp_server_url: Optional[str] = Field(
|
|
78
|
+
None,
|
|
79
|
+
description="URL of the MCP server endpoint associated with this config (read-only)",
|
|
80
|
+
)
|
|
77
81
|
|
|
78
82
|
def to_proto(self) -> ProtoMcpConfig:
|
|
79
83
|
"""Convert the model into a protobuf MCP config."""
|
|
@@ -117,6 +121,7 @@ class McpConfig(BaseModel):
|
|
|
117
121
|
McpConfigConnectionToolMapping.from_proto(mapping)
|
|
118
122
|
for mapping in proto_config.connection_tool_mappings
|
|
119
123
|
],
|
|
124
|
+
mcp_server_url=proto_config.mcp_server_url or None,
|
|
120
125
|
)
|
|
121
126
|
|
|
122
127
|
def to_dict(self) -> dict:
|
|
@@ -129,6 +134,7 @@ class McpConfig(BaseModel):
|
|
|
129
134
|
"connection_tool_mappings": [
|
|
130
135
|
mapping.model_dump() for mapping in self.connection_tool_mappings
|
|
131
136
|
],
|
|
137
|
+
"mcp_server_url": self.mcp_server_url,
|
|
132
138
|
}
|
|
133
139
|
|
|
134
140
|
class Config:
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from scalekit.v1.mcp.mcp_pb2 import McpConnectionAuthState as ProtoMcpConnectionAuthState
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class McpConnectionAuthState(BaseModel):
|
|
9
|
+
"""Authentication status for a single connection within an MCP config.
|
|
10
|
+
|
|
11
|
+
Returned by ``list_mcp_connected_accounts`` to show whether each connection
|
|
12
|
+
backing an MCP configuration is authorised for a given user identifier.
|
|
13
|
+
|
|
14
|
+
Attributes:
|
|
15
|
+
connection_id: Internal Scalekit identifier for the connection.
|
|
16
|
+
connection_name: Slug name of the connection, e.g. ``"github"``.
|
|
17
|
+
provider: OAuth/API-key provider backing the connection, e.g. ``"github"``.
|
|
18
|
+
connected_account_id: Scalekit identifier for the user's connected account,
|
|
19
|
+
if one exists.
|
|
20
|
+
connected_account_status: Current authorisation status of the connected
|
|
21
|
+
account. Common values: ``"active"``, ``"expired"``, ``"disconnected"``.
|
|
22
|
+
authentication_link: One-time URL the end-user can open to authorise or
|
|
23
|
+
re-authorise the connection. Only populated when ``include_auth_link``
|
|
24
|
+
was ``True`` in the request and the account is not currently active.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
connection_id: Optional[str] = Field(None, description="Internal connection identifier")
|
|
28
|
+
connection_name: Optional[str] = Field(None, description="Slug name of the connection")
|
|
29
|
+
provider: Optional[str] = Field(None, description="Provider backing the connection")
|
|
30
|
+
connected_account_id: Optional[str] = Field(None, description="Scalekit connected account ID")
|
|
31
|
+
connected_account_status: Optional[str] = Field(
|
|
32
|
+
None,
|
|
33
|
+
description="Authorisation status: 'active', 'expired', 'disconnected'",
|
|
34
|
+
)
|
|
35
|
+
authentication_link: Optional[str] = Field(
|
|
36
|
+
None,
|
|
37
|
+
description="One-time auth URL; only present when include_auth_link=True and account is not active",
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
@classmethod
|
|
41
|
+
def from_proto(cls, proto_state: ProtoMcpConnectionAuthState) -> "McpConnectionAuthState":
|
|
42
|
+
return cls(
|
|
43
|
+
connection_id=proto_state.connection_id or None,
|
|
44
|
+
connection_name=proto_state.connection_name or None,
|
|
45
|
+
provider=proto_state.provider or None,
|
|
46
|
+
connected_account_id=proto_state.connected_account_id or None,
|
|
47
|
+
connected_account_status=proto_state.connected_account_status or None,
|
|
48
|
+
authentication_link=proto_state.authentication_link or None,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
def to_dict(self) -> dict:
|
|
52
|
+
return {
|
|
53
|
+
"connection_id": self.connection_id,
|
|
54
|
+
"connection_name": self.connection_name,
|
|
55
|
+
"provider": self.provider,
|
|
56
|
+
"connected_account_id": self.connected_account_id,
|
|
57
|
+
"connected_account_status": self.connected_account_status,
|
|
58
|
+
"authentication_link": self.authentication_link,
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
class Config:
|
|
62
|
+
validate_assignment = True
|
scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/create_mcp_session_token_response.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from pydantic import BaseModel, Field
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class CreateMcpSessionTokenResponse(BaseModel):
|
|
8
|
+
"""Response from ``create_session_token``.
|
|
9
|
+
|
|
10
|
+
A short-lived session token that an end-user or service can use to
|
|
11
|
+
authenticate against an MCP server endpoint.
|
|
12
|
+
|
|
13
|
+
Attributes:
|
|
14
|
+
token: Opaque bearer token string. Pass this as the ``Authorization``
|
|
15
|
+
header value (``Bearer <token>``) when calling the MCP server URL.
|
|
16
|
+
expires_at: UTC datetime at which the token becomes invalid. Your
|
|
17
|
+
application should refresh before this time.
|
|
18
|
+
|
|
19
|
+
Example::
|
|
20
|
+
|
|
21
|
+
from datetime import timedelta
|
|
22
|
+
|
|
23
|
+
resp = client.actions.mcp.create_session_token(
|
|
24
|
+
mcp_config_id="cfg_abc123",
|
|
25
|
+
identifier="user@example.com",
|
|
26
|
+
expiry=timedelta(hours=8),
|
|
27
|
+
)
|
|
28
|
+
print(resp.token) # "eyJ..."
|
|
29
|
+
print(resp.expires_at) # 2026-06-03 20:00:00
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
token: Optional[str] = Field(None, description="Bearer token for MCP server authentication")
|
|
33
|
+
expires_at: Optional[datetime] = Field(None, description="UTC expiry time for the token")
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def from_proto(cls, proto_response) -> "CreateMcpSessionTokenResponse":
|
|
37
|
+
expires_at = None
|
|
38
|
+
if proto_response.HasField("expires_at"):
|
|
39
|
+
expires_at = proto_response.expires_at.ToDatetime()
|
|
40
|
+
return cls(
|
|
41
|
+
token=proto_response.token or None,
|
|
42
|
+
expires_at=expires_at,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
def to_dict(self) -> dict:
|
|
46
|
+
return {
|
|
47
|
+
"token": self.token,
|
|
48
|
+
"expires_at": self.expires_at.isoformat() if self.expires_at else None,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
class Config:
|
|
52
|
+
validate_assignment = True
|
scalekit_sdk_python-2.11.0/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from scalekit.actions.models.mcp_connection_auth_state import McpConnectionAuthState
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ListMcpConnectedAccountsResponse(BaseModel):
|
|
9
|
+
"""Response from ``list_mcp_connected_accounts``.
|
|
10
|
+
|
|
11
|
+
Contains the per-connection authentication state for every connection
|
|
12
|
+
that is part of the requested MCP configuration, for a specific user
|
|
13
|
+
identifier.
|
|
14
|
+
|
|
15
|
+
Attributes:
|
|
16
|
+
connected_accounts: One entry per connection in the MCP config. Each
|
|
17
|
+
entry carries the connection name, provider, the user's connected
|
|
18
|
+
account ID/status, and optionally an auth link if the account is
|
|
19
|
+
not active and ``include_auth_link`` was requested.
|
|
20
|
+
|
|
21
|
+
Example::
|
|
22
|
+
|
|
23
|
+
response = client.actions.mcp.list_mcp_connected_accounts(
|
|
24
|
+
config_id="cfg_abc123",
|
|
25
|
+
identifier="user@example.com",
|
|
26
|
+
include_auth_link=True,
|
|
27
|
+
)
|
|
28
|
+
for account in response.connected_accounts:
|
|
29
|
+
if account.connected_account_status != "active":
|
|
30
|
+
print(f"Re-auth needed for {account.connection_name}: {account.authentication_link}")
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
connected_accounts: List[McpConnectionAuthState] = Field(
|
|
34
|
+
default_factory=list,
|
|
35
|
+
description="Auth state per connection in the MCP config",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def from_proto(cls, proto_response) -> "ListMcpConnectedAccountsResponse":
|
|
40
|
+
connected_accounts = [
|
|
41
|
+
McpConnectionAuthState.from_proto(proto_state)
|
|
42
|
+
for proto_state in getattr(proto_response, "connected_accounts", [])
|
|
43
|
+
]
|
|
44
|
+
return cls(connected_accounts=connected_accounts)
|
|
45
|
+
|
|
46
|
+
def to_dict(self) -> dict:
|
|
47
|
+
return {
|
|
48
|
+
"connected_accounts": [account.to_dict() for account in self.connected_accounts],
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
class Config:
|
|
52
|
+
validate_assignment = True
|
|
@@ -35,6 +35,9 @@ from .models.responses.create_custom_provider_response import CreateCustomProvid
|
|
|
35
35
|
from .models.responses.update_custom_provider_response import UpdateCustomProviderResponse
|
|
36
36
|
from .models.responses.list_providers_response import ListProvidersResponse
|
|
37
37
|
from .models.responses.delete_custom_provider_response import DeleteCustomProviderResponse
|
|
38
|
+
from .models.responses.list_mcp_connected_accounts_response import ListMcpConnectedAccountsResponse
|
|
39
|
+
from .models.responses.create_mcp_session_token_response import CreateMcpSessionTokenResponse
|
|
40
|
+
from .models.mcp_connection_auth_state import McpConnectionAuthState
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
__all__ = [
|
|
@@ -82,4 +85,7 @@ __all__ = [
|
|
|
82
85
|
'ListProvidersResponse',
|
|
83
86
|
'DeleteCustomProviderResponse',
|
|
84
87
|
'VerifyConnectedAccountUserResponse',
|
|
88
|
+
'ListMcpConnectedAccountsResponse',
|
|
89
|
+
'CreateMcpSessionTokenResponse',
|
|
90
|
+
'McpConnectionAuthState',
|
|
85
91
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Optional
|
|
1
|
+
from typing import List, Optional
|
|
2
2
|
|
|
3
3
|
from scalekit.core import CoreClient
|
|
4
4
|
from scalekit.v1.connected_accounts.connected_accounts_pb2 import (
|
|
@@ -47,7 +47,8 @@ class ConnectedAccountsClient:
|
|
|
47
47
|
identifier: Optional[str] = None,
|
|
48
48
|
provider: Optional[str] = None,
|
|
49
49
|
page_size: Optional[int] = None,
|
|
50
|
-
page_token: Optional[str] = None
|
|
50
|
+
page_token: Optional[str] = None,
|
|
51
|
+
connection_names: Optional[List[str]] = None,
|
|
51
52
|
) -> ListConnectedAccountsResponse:
|
|
52
53
|
"""
|
|
53
54
|
Method to list connected accounts for a user
|
|
@@ -66,21 +67,28 @@ class ConnectedAccountsClient:
|
|
|
66
67
|
:type : ``` int ```
|
|
67
68
|
:param page_token : Page token for pagination (optional)
|
|
68
69
|
:type : ``` str ```
|
|
70
|
+
:param connection_names : Filter results to only connected accounts belonging to these
|
|
71
|
+
connection names (optional). Each entry is the slug name of
|
|
72
|
+
a connector, e.g. ``["github", "google-calendar"]``.
|
|
73
|
+
:type : ``` List[str] ```
|
|
69
74
|
|
|
70
75
|
:returns:
|
|
71
76
|
List Connected Accounts Response
|
|
72
77
|
"""
|
|
78
|
+
request = ListConnectedAccountsRequest(
|
|
79
|
+
organization_id=organization_id,
|
|
80
|
+
user_id=user_id,
|
|
81
|
+
connector=connector,
|
|
82
|
+
identifier=identifier,
|
|
83
|
+
provider=provider,
|
|
84
|
+
page_size=page_size,
|
|
85
|
+
page_token=page_token,
|
|
86
|
+
)
|
|
87
|
+
if connection_names:
|
|
88
|
+
request.connection_names.extend(connection_names)
|
|
73
89
|
return self.core_client.grpc_exec(
|
|
74
90
|
self.connected_accounts_service.ListConnectedAccounts.with_call,
|
|
75
|
-
|
|
76
|
-
organization_id=organization_id,
|
|
77
|
-
user_id=user_id,
|
|
78
|
-
connector=connector,
|
|
79
|
-
identifier=identifier,
|
|
80
|
-
provider=provider,
|
|
81
|
-
page_size=page_size,
|
|
82
|
-
page_token=page_token
|
|
83
|
-
),
|
|
91
|
+
request,
|
|
84
92
|
)
|
|
85
93
|
|
|
86
94
|
def create_connected_account(
|
|
@@ -29,7 +29,7 @@ class CoreClient:
|
|
|
29
29
|
|
|
30
30
|
sdk_version = f"Scalekit-Python/{_sdk_version}"
|
|
31
31
|
# YYYYMMDD
|
|
32
|
-
api_version = "
|
|
32
|
+
api_version = "20260603"
|
|
33
33
|
user_agent = f"{sdk_version} Python/{platform.python_version()} ({platform.system()}; {platform.architecture()}"
|
|
34
34
|
|
|
35
35
|
def __init__(self, env_url, client_id, client_secret):
|