diff --git a/src/Azure.DataApiBuilder.Mcp/BuiltInTools/DescribeEntitiesTool.cs b/src/Azure.DataApiBuilder.Mcp/BuiltInTools/DescribeEntitiesTool.cs index 14e1e4db85..4215705572 100644 --- a/src/Azure.DataApiBuilder.Mcp/BuiltInTools/DescribeEntitiesTool.cs +++ b/src/Azure.DataApiBuilder.Mcp/BuiltInTools/DescribeEntitiesTool.cs @@ -368,13 +368,30 @@ private static List BuildParameterMetadataInfo(List? /// A list of permissions available to the entity private static string[] BuildPermissionsInfo(Entity entity) { - HashSet permissions = new(); + if (entity.Permissions == null) + { + return Array.Empty(); + } + + bool isStoredProcedure = entity.Source.Type == EntitySourceType.StoredProcedure; + HashSet validOperations = isStoredProcedure + ? EntityAction.ValidStoredProcedurePermissionOperations + : EntityAction.ValidPermissionOperations; - if (entity.Permissions != null) + HashSet permissions = new(StringComparer.OrdinalIgnoreCase); + + foreach (EntityPermission permission in entity.Permissions) { - foreach (EntityPermission permission in entity.Permissions) + foreach (EntityAction action in permission.Actions) { - foreach (EntityAction action in permission.Actions) + if (action.Action == EntityActionOperation.All) + { + foreach (EntityActionOperation op in validOperations) + { + permissions.Add(op.ToString().ToUpperInvariant()); + } + } + else { permissions.Add(action.Action.ToString().ToUpperInvariant()); }