diff --git a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java
index 5b8c7c15..69774497 100644
--- a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java
+++ b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java
@@ -137,7 +137,6 @@ public class ScaffoldingController {
parseDelimited(req.get("tags")),
req.get("ownerOrg"),
positiveLongOrNull(req.get("timeoutMillis")),
- req.containsKey("retryEnabled") ? Boolean.valueOf(req.get("retryEnabled")) : null,
positiveIntOrNull(req.get("retryMaxAttempts")));
String defaultWorkspace = DEFAULT_WORKSPACE;
diff --git a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java
index 10babcd6..fc8d8787 100644
--- a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java
+++ b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java
@@ -353,7 +353,7 @@ public class ExecuteService {
private boolean retryAllowedByOperation(ToolMetadata metadata, ObjectNode arguments) {
if (metadata.getOperationType() == OperationType.READ) {
- return metadata.getRetryEnabled() != null ? metadata.getRetryEnabled() : true;
+ return true;
}
return arguments.hasNonNull("idempotencyKey") && !arguments.path("idempotencyKey").asText("").isBlank();
}
diff --git a/dat-gateway/src/main/resources/static/admin/scaffold.html b/dat-gateway/src/main/resources/static/admin/scaffold.html
index d172b233..9f60a1d5 100644
--- a/dat-gateway/src/main/resources/static/admin/scaffold.html
+++ b/dat-gateway/src/main/resources/static/admin/scaffold.html
@@ -1037,13 +1037,6 @@
Tool 호출 최대 대기 시간입니다.
-
-
-
-
@@ -1681,7 +1674,6 @@
exampleQueries: (data.exampleQueries || '').split(/[\n,]+/).map(value => value.trim()).filter(Boolean),
tags: (data.tags || '').split(',').map(value => value.trim()).filter(Boolean), ownerOrg: data.ownerOrg || 'MCP_TOOL',
timeoutMillis: Number(data.timeoutMillis || 5000),
- retryEnabled: data.retryEnabled !== 'false',
retryMaxAttempts: Number(data.retryMaxAttempts || 3)
}
};
diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java
index 936e26b9..8a26b17d 100644
--- a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java
+++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java
@@ -30,7 +30,6 @@ public @interface GrowToolHint {
String inputSchemaResource() default "";
String outputSchemaResource() default "";
long timeoutMillis() default 5000L;
- boolean retryEnabled() default true;
int retryMaxAttempts() default 3;
// Meta 정보 추가 (보고용 샘플)
diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java
index 108e4095..8194fd70 100644
--- a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java
+++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java
@@ -70,24 +70,19 @@ public class ToolScaffolder {
List tags,
String ownerOrg,
Long timeoutMillis,
- Boolean retryEnabled,
Integer retryMaxAttempts) {
public ToolDefinitionOptions(String functionDescription, String whenToUse, String whenNotToUse,
String ioLimits, String displayDescription, List exampleQueries,
List tags, String ownerOrg) {
this(functionDescription, whenToUse, whenNotToUse, ioLimits, displayDescription, exampleQueries, tags,
- ownerOrg, null, null, null);
+ ownerOrg, null, null);
}
public long timeoutMillisOrDefault() {
return timeoutMillis != null && timeoutMillis > 0 ? timeoutMillis : 5000L;
}
- public boolean retryEnabledOrDefault() {
- return retryEnabled == null || retryEnabled;
- }
-
public int retryMaxAttemptsOrDefault() {
return retryMaxAttempts != null && retryMaxAttempts > 0 ? retryMaxAttempts : 3;
}
@@ -265,7 +260,6 @@ public class ToolScaffolder {
.append(" requiresApproval = ").append(isMutation).append(",\n")
.append(" categoryKey = \"").append(tool.group().toLowerCase(Locale.ROOT)).append("\",\n")
.append(" timeoutMillis = ").append(opts.timeoutMillisOrDefault()).append("L,\n")
- .append(" retryEnabled = ").append(opts.retryEnabledOrDefault()).append(",\n")
.append(" retryMaxAttempts = ").append(opts.retryMaxAttemptsOrDefault()).append(",\n");
if (tool.interfaceId() != null && !tool.interfaceId().isBlank()) {
methods.append(" mappingId = \"").append(javaText(tool.interfaceId())).append("\",\n");
@@ -424,7 +418,6 @@ public class ToolScaffolder {
.append(" requiresApproval = ").append(isMutation).append(",\n")
.append(" categoryKey = \"").append(tool.group().toLowerCase(Locale.ROOT)).append("\",\n")
.append(" timeoutMillis = ").append(opts.timeoutMillisOrDefault()).append("L,\n")
- .append(" retryEnabled = ").append(opts.retryEnabledOrDefault()).append(",\n")
.append(" retryMaxAttempts = ").append(opts.retryMaxAttemptsOrDefault()).append(",\n");
String mappingId = option(tool.interfaceId(), tool.httpApiName());
if (mappingId != null && !mappingId.isBlank()) {
@@ -813,7 +806,6 @@ public class ToolScaffolder {
sb.append(" requiresApproval = ").append(isMutation).append(",\n");
sb.append(" categoryKey = \"").append(group.toLowerCase(Locale.ROOT)).append("\",\n");
sb.append(" timeoutMillis = ").append(definitionOptions.timeoutMillisOrDefault()).append("L,\n");
- sb.append(" retryEnabled = ").append(definitionOptions.retryEnabledOrDefault()).append(",\n");
sb.append(" retryMaxAttempts = ").append(definitionOptions.retryMaxAttemptsOrDefault()).append(",\n");
if (interfaceId != null && !interfaceId.isBlank()) {
sb.append(" mappingId = \"").append(interfaceId).append("\",\n");
diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java
index 6eafeaa7..eec485aa 100644
--- a/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java
+++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java
@@ -121,8 +121,6 @@ public class ToolMetadata {
@Builder.Default
private OperationType operationType = OperationType.READ;
- @Builder.Default
- private Boolean retryEnabled = true;
@Builder.Default
private Integer retryMaxAttempts = 3;
diff --git a/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java b/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java
index beb8314f..f5779540 100644
--- a/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java
+++ b/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java
@@ -472,7 +472,7 @@ class ToolScaffolderTest {
ToolScaffolder.scaffoldUseCase("Customer", moduleName, "tester", "2026.08.13", List.of(
new ToolScaffolder.ToolMethodDefinition("CustomerProfile", "getProfile", "CUST001", "Profile", "profile", "cmm", "MCI",
false, "CSTM", null, List.of(), List.of(), new ToolScaffolder.ToolDefinitionOptions(
- null, null, null, null, null, List.of(), List.of(), null, 12000L, false, 5))));
+ null, null, null, null, null, List.of(), List.of(), null, 12000L, 5))));
ToolScaffolder.scaffoldUseCase("Customer", moduleName, "tester", "2026.08.13", List.of(
new ToolScaffolder.ToolMethodDefinition("CustomerNotice", "getNotice", "NOTICE001", "Notice", "notice", "cmm", "HTTP",
false, null, "customer-notice", List.of(), List.of(), null)));
@@ -482,7 +482,6 @@ class ToolScaffolderTest {
String impl = Files.readString(sourceRoot.resolve("biz/cmm/usecase/impl/CustomerUseCaseImpl.java"));
assertTrue(useCase.contains("getProfile(CustomerProfileRequest req)"), useCase);
assertTrue(useCase.contains("timeoutMillis = 12000L"), useCase);
- assertTrue(useCase.contains("retryEnabled = false"), useCase);
assertTrue(useCase.contains("retryMaxAttempts = 5"), useCase);
assertTrue(useCase.contains("getNotice(CustomerNoticeRequest req)"), useCase);
assertTrue(impl.contains("private final MciCstmClient mciCstmClient;"), impl);