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.
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/PKG-INFO +1 -1
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/actions.py +440 -84
- scalekit_sdk_python-2.4.11/scalekit/actions/models/mcp_config.py +137 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/mcp_instance.py +105 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/create_mcp_config_response.py +35 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/delete_mcp_config_response.py +22 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/delete_mcp_instance_response.py +15 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/ensure_mcp_instance_response.py +29 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +30 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/get_mcp_instance_response.py +29 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/list_mcp_configs_response.py +59 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/list_mcp_instances_response.py +53 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/update_mcp_config_response.py +35 -0
- scalekit_sdk_python-2.4.11/scalekit/actions/models/responses/update_mcp_instance_response.py +29 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/types.py +27 -1
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/core.py +1 -1
- scalekit_sdk_python-2.4.11/scalekit/mcp.py +229 -0
- scalekit_sdk_python-2.4.11/scalekit/v1/auditlogs/auditlogs_pb2.py +41 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +4 -12
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/auth_pb2.py +44 -44
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/auth_pb2.pyi +2 -6
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/auth_pb2_grpc.py +33 -0
- scalekit_sdk_python-2.4.11/scalekit/v1/connections/connections_pb2.py +580 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connections/connections_pb2.pyi +4 -100
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connections/connections_pb2_grpc.py +0 -33
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/environments_pb2.py +34 -34
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/environments_pb2.pyi +2 -4
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/events_pb2.py +16 -16
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/events_pb2.pyi +2 -6
- scalekit_sdk_python-2.4.11/scalekit/v1/mcp/mcp_pb2.py +309 -0
- scalekit_sdk_python-2.4.11/scalekit/v1/mcp/mcp_pb2.pyi +339 -0
- scalekit_sdk_python-2.4.11/scalekit/v1/mcp/mcp_pb2_grpc.py +528 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/PKG-INFO +1 -1
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/SOURCES.txt +14 -12
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/setup.py +1 -1
- scalekit_sdk_python-2.4.11/tests/test_actions.py +1895 -0
- scalekit_sdk_python-2.4.10/scalekit/mcp.py +0 -96
- scalekit_sdk_python-2.4.10/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -41
- scalekit_sdk_python-2.4.10/scalekit/v1/auth/webauthn_pb2.py +0 -123
- scalekit_sdk_python-2.4.10/scalekit/v1/auth/webauthn_pb2.pyi +0 -238
- scalekit_sdk_python-2.4.10/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -264
- scalekit_sdk_python-2.4.10/scalekit/v1/connections/connections_pb2.py +0 -657
- scalekit_sdk_python-2.4.10/scalekit/v1/interceptors/interceptors_pb2.py +0 -238
- scalekit_sdk_python-2.4.10/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -307
- scalekit_sdk_python-2.4.10/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -298
- scalekit_sdk_python-2.4.10/scalekit/v1/mcp/mcp_pb2.py +0 -97
- scalekit_sdk_python-2.4.10/scalekit/v1/mcp/mcp_pb2.pyi +0 -91
- scalekit_sdk_python-2.4.10/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -165
- scalekit_sdk_python-2.4.10/scalekit/v1/secrets/secrets_pb2.py +0 -106
- scalekit_sdk_python-2.4.10/scalekit/v1/secrets/secrets_pb2.pyi +0 -120
- scalekit_sdk_python-2.4.10/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -199
- scalekit_sdk_python-2.4.10/scalekit/v1/webhooks/__init__.py +0 -0
- scalekit_sdk_python-2.4.10/scalekit/v1/workspaces/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/LICENSE +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/README.md +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/expression_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/expression_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/expression_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/private_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/private_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/priv/private_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/validate_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/validate_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/buf/validate/validate_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/google_adk.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/langchain.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/types/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/frameworks/util.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/mcp_request.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/tool_request.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/magic_link_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/tool_input_output.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/models/tool_mapping.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/actions/modifier.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/client.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/exceptions.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/scalekit.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/common/user.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/connected_accounts.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/connection.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/constants/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/constants/user.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/directory.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/domain.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/m2m_client.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/organization.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/passwordless.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/permissions.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/role.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/sessions.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/tools.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/users.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/utils/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/utils/directory.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auditlogs/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/passwordless_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/totp_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/totp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/clients_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/clients_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/commons_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/commons_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/directories_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/directories_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/domains_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/domains_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/emails_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/emails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/events/events_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/interceptors → scalekit_sdk_python-2.4.11/scalekit/v1/mcp}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/mcp → scalekit_sdk_python-2.4.11/scalekit/v1/members}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/members/members_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/members/members_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/members/members_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/members → scalekit_sdk_python-2.4.11/scalekit/v1/migrations}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/migrations/migrations_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/migrations → scalekit_sdk_python-2.4.11/scalekit/v1/options}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/options/options_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/options/options_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/options/options_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/options → scalekit_sdk_python-2.4.11/scalekit/v1/organizations}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/organizations/organizations_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/organizations → scalekit_sdk_python-2.4.11/scalekit/v1/providers}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/providers/providers_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/providers/providers_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/providers → scalekit_sdk_python-2.4.11/scalekit/v1/roles}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/roles/roles_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/roles/roles_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/roles → scalekit_sdk_python-2.4.11/scalekit/v1/sessions}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/sessions/sessions_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/secrets → scalekit_sdk_python-2.4.11/scalekit/v1/tools}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/tools/tools_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/tools/tools_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/sessions → scalekit_sdk_python-2.4.11/scalekit/v1/user_attributes}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/tools → scalekit_sdk_python-2.4.11/scalekit/v1/users}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/users/users_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/users/users_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/users/users_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/user_attributes → scalekit_sdk_python-2.4.11/scalekit/v1/webhooks}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10/scalekit/v1/users → scalekit_sdk_python-2.4.11/scalekit/v1/workspaces}/__init__.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/requires.txt +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
- {scalekit_sdk_python-2.4.10 → scalekit_sdk_python-2.4.11}/setup.cfg +0 -0
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
326
|
+
def list_configs(
|
|
321
327
|
self,
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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
|
|
347
|
+
def create_config(
|
|
353
348
|
self,
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
**kwargs
|
|
358
|
-
) ->
|
|
359
|
-
"""
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
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
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
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
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
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])
|