diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py b/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py index c4e6e5ffc4..a8df8d0c6d 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py @@ -106,6 +106,9 @@ class RunBlockTool(BaseTool): and discriminator_value in field_info.discriminator_mapping ): effective_field_info = field_info.discriminate(discriminator_value) + # For host-scoped credentials, add the discriminator value + # (e.g., URL) so _credential_is_for_host can match it + effective_field_info.discriminator_values.add(discriminator_value) logger.debug( f"Discriminated provider for {field_name}: " f"{discriminator_value} -> {effective_field_info.provider}" diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/utils.py b/autogpt_platform/backend/backend/api/features/chat/tools/utils.py index c48cd09458..80a842bf36 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/utils.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/utils.py @@ -295,7 +295,9 @@ def find_matching_credential( continue if cred.type not in field_info.supported_types: continue - if cred.type == "oauth2" and not _credential_has_required_scopes(cred, field_info): + if cred.type == "oauth2" and not _credential_has_required_scopes( + cred, field_info + ): continue if cred.type == "host_scoped" and not _credential_is_for_host(cred, field_info): continue