diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 33e25082f..5e6af6222 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -184,6 +184,12 @@ # ServiceLabel: %tools-Storage # ServiceOwners: @alzimmermsft @jongio +# PRLabel: %tools-Tables +/tools/Azure.Mcp.Tools.Tables/ @alzimmermsft @microsoft/azure-mcp + +# ServiceLabel: %tools-Tables +# ServiceOwners: @alzimmermsft + # PRLabel: %tools-Authorization /tools/Azure.Mcp.Tools.Authorization/ @vurhanau @jongio @xiangyan99 @microsoft/azure-mcp diff --git a/AzureMcp.sln b/AzureMcp.sln index 2d2382deb..03223d8ee 100644 --- a/AzureMcp.sln +++ b/AzureMcp.sln @@ -87,12 +87,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AABD2F22-45E EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.AzureIsv", "tools\Azure.Mcp.Tools.AzureIsv\src\Azure.Mcp.Tools.AzureIsv.csproj", "{51FF959C-5452-4611-B3DF-671D5D2FEF1E}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.ManagedLustre", "Azure.Mcp.Tools.ManagedLustre", "{9B70BA7E-5CCA-8859-C252-AF72C051F264}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{72886DEE-EE65-CAB4-D88E-95639D81D7B4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.ManagedLustre", "tools\Azure.Mcp.Tools.ManagedLustre\src\Azure.Mcp.Tools.ManagedLustre.csproj", "{38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.AzureTerraformBestPractices", "Azure.Mcp.Tools.AzureTerraformBestPractices", "{3050869B-5B38-A2E1-E211-FDD96922C0D8}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9E83E5D7-427F-F90E-BAF8-110976D8882A}" @@ -189,6 +183,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{96640177-9FE EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.LoadTesting", "tools\Azure.Mcp.Tools.LoadTesting\src\Azure.Mcp.Tools.LoadTesting.csproj", "{19631370-84E9-45A5-B98F-0359499DB2FA}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.ManagedLustre", "Azure.Mcp.Tools.ManagedLustre", "{BC6B0F7E-455A-8CD6-9D34-34D63EF1C586}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{3DBDEE22-B819-F38B-FA26-0F71EEE6B68A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.ManagedLustre", "tools\Azure.Mcp.Tools.ManagedLustre\src\Azure.Mcp.Tools.ManagedLustre.csproj", "{38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.Marketplace", "Azure.Mcp.Tools.Marketplace", "{EB5334E6-670B-EC92-68F3-634AA8C9020E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{59B172EF-E666-A44A-A88A-206F6A63264A}" @@ -267,6 +267,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0131AD4F-393 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Storage", "tools\Azure.Mcp.Tools.Storage\src\Azure.Mcp.Tools.Storage.csproj", "{DE1B4312-1A4F-4774-B7EB-B1EC77F80D5E}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.Tables", "Azure.Mcp.Tools.Tables", "{7DC9F1E2-AB34-5135-E904-B1BD6D1D8EAD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5ECFEF0C-3BB5-0FB5-BFDE-297FEE69F1C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Tables", "tools\Azure.Mcp.Tools.Tables\src\Azure.Mcp.Tools.Tables.csproj", "{37495405-1881-4192-BABA-C4E8CE7893D8}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.VirtualDesktop", "Azure.Mcp.Tools.VirtualDesktop", "{B28A9B67-1C09-C756-C02A-7AC1895F9584}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E38B6DEF-57A1-6CCA-498B-5697FF0B466C}" @@ -365,12 +371,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.AzureIsv.Li EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.AzureIsv.UnitTests", "tools\Azure.Mcp.Tools.AzureIsv\tests\Azure.Mcp.Tools.AzureIsv.UnitTests\Azure.Mcp.Tools.AzureIsv.UnitTests.csproj", "{D3348F94-9831-4A3D-8E79-844900B88287}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D80CC604-369B-AC81-8F7A-C731A7ABD68E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.ManagedLustre.LiveTests", "tools\Azure.Mcp.Tools.ManagedLustre\tests\Azure.Mcp.Tools.ManagedLustre.LiveTests\Azure.Mcp.Tools.ManagedLustre.LiveTests.csproj", "{75A5A87C-BF04-4ABE-B466-874074D37C8D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.ManagedLustre.UnitTests", "tools\Azure.Mcp.Tools.ManagedLustre\tests\Azure.Mcp.Tools.ManagedLustre.UnitTests\Azure.Mcp.Tools.ManagedLustre.UnitTests.csproj", "{D1BCD822-AC8A-408F-A71A-9205DB29A9D2}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A8D0F127-6ACB-380E-8423-B6B6EA1AF2DC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.AzureTerraformBestPractices.UnitTests", "tools\Azure.Mcp.Tools.AzureTerraformBestPractices\tests\Azure.Mcp.Tools.AzureTerraformBestPractices.UnitTests\Azure.Mcp.Tools.AzureTerraformBestPractices.UnitTests.csproj", "{A99D3C27-65B7-4ADF-AB54-6D8649D1E7C7}" @@ -459,6 +459,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.LoadTesting EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.LoadTesting.UnitTests", "tools\Azure.Mcp.Tools.LoadTesting\tests\Azure.Mcp.Tools.LoadTesting.UnitTests\Azure.Mcp.Tools.LoadTesting.UnitTests.csproj", "{F009F428-7BBE-41FE-AD55-D19B4947E978}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{19EEEACE-2421-E3A7-A6B6-B8B43E3BA461}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.ManagedLustre.LiveTests", "tools\Azure.Mcp.Tools.ManagedLustre\tests\Azure.Mcp.Tools.ManagedLustre.LiveTests\Azure.Mcp.Tools.ManagedLustre.LiveTests.csproj", "{75A5A87C-BF04-4ABE-B466-874074D37C8D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.ManagedLustre.UnitTests", "tools\Azure.Mcp.Tools.ManagedLustre\tests\Azure.Mcp.Tools.ManagedLustre.UnitTests\Azure.Mcp.Tools.ManagedLustre.UnitTests.csproj", "{D1BCD822-AC8A-408F-A71A-9205DB29A9D2}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D5394AFD-90BE-8F1D-1BC6-C1A4C372E9EC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Marketplace.LiveTests", "tools\Azure.Mcp.Tools.Marketplace\tests\Azure.Mcp.Tools.Marketplace.LiveTests\Azure.Mcp.Tools.Marketplace.LiveTests.csproj", "{751F96A2-DB60-4B40-A415-0924FEEFFD9C}" @@ -531,6 +537,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Storage.Liv EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Storage.UnitTests", "tools\Azure.Mcp.Tools.Storage\tests\Azure.Mcp.Tools.Storage.UnitTests\Azure.Mcp.Tools.Storage.UnitTests.csproj", "{F3F49C7E-9106-4FF7-A71D-442022D63F7B}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{E644C61C-62F2-2BB0-FA9F-259BEACD55DF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Tables.LiveTests", "tools\Azure.Mcp.Tools.Tables\tests\Azure.Mcp.Tools.Tables.LiveTests\Azure.Mcp.Tools.Tables.LiveTests.csproj", "{F96BFDAC-1146-4892-95DC-68287ED03FDB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Tables.UnitTests", "tools\Azure.Mcp.Tools.Tables\tests\Azure.Mcp.Tools.Tables.UnitTests\Azure.Mcp.Tools.Tables.UnitTests.csproj", "{CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D38B6103-E564-8894-9748-4CF0C62984DB}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.VirtualDesktop.LiveTests", "tools\Azure.Mcp.Tools.VirtualDesktop\tests\Azure.Mcp.Tools.VirtualDesktop.LiveTests\Azure.Mcp.Tools.VirtualDesktop.LiveTests.csproj", "{0A09784C-BB49-44E8-B07A-DA4EEEC1184E}" @@ -725,18 +737,6 @@ Global {51FF959C-5452-4611-B3DF-671D5D2FEF1E}.Release|x64.Build.0 = Release|Any CPU {51FF959C-5452-4611-B3DF-671D5D2FEF1E}.Release|x86.ActiveCfg = Release|Any CPU {51FF959C-5452-4611-B3DF-671D5D2FEF1E}.Release|x86.Build.0 = Release|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x64.ActiveCfg = Debug|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x64.Build.0 = Debug|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x86.ActiveCfg = Debug|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x86.Build.0 = Debug|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|Any CPU.Build.0 = Release|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x64.ActiveCfg = Release|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x64.Build.0 = Release|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x86.ActiveCfg = Release|Any CPU - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x86.Build.0 = Release|Any CPU {F6B9B9A5-3A77-44F6-A349-50A751B46904}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F6B9B9A5-3A77-44F6-A349-50A751B46904}.Debug|Any CPU.Build.0 = Debug|Any CPU {F6B9B9A5-3A77-44F6-A349-50A751B46904}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -929,6 +929,18 @@ Global {19631370-84E9-45A5-B98F-0359499DB2FA}.Release|x64.Build.0 = Release|Any CPU {19631370-84E9-45A5-B98F-0359499DB2FA}.Release|x86.ActiveCfg = Release|Any CPU {19631370-84E9-45A5-B98F-0359499DB2FA}.Release|x86.Build.0 = Release|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x64.ActiveCfg = Debug|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x64.Build.0 = Debug|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x86.ActiveCfg = Debug|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Debug|x86.Build.0 = Debug|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|Any CPU.Build.0 = Release|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x64.ActiveCfg = Release|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x64.Build.0 = Release|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x86.ActiveCfg = Release|Any CPU + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B}.Release|x86.Build.0 = Release|Any CPU {1F58262C-B95C-4EC3-95BF-469D7A56480E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1F58262C-B95C-4EC3-95BF-469D7A56480E}.Debug|Any CPU.Build.0 = Debug|Any CPU {1F58262C-B95C-4EC3-95BF-469D7A56480E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1085,6 +1097,18 @@ Global {DE1B4312-1A4F-4774-B7EB-B1EC77F80D5E}.Release|x64.Build.0 = Release|Any CPU {DE1B4312-1A4F-4774-B7EB-B1EC77F80D5E}.Release|x86.ActiveCfg = Release|Any CPU {DE1B4312-1A4F-4774-B7EB-B1EC77F80D5E}.Release|x86.Build.0 = Release|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Debug|x64.ActiveCfg = Debug|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Debug|x64.Build.0 = Debug|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Debug|x86.ActiveCfg = Debug|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Debug|x86.Build.0 = Debug|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Release|Any CPU.Build.0 = Release|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Release|x64.ActiveCfg = Release|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Release|x64.Build.0 = Release|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Release|x86.ActiveCfg = Release|Any CPU + {37495405-1881-4192-BABA-C4E8CE7893D8}.Release|x86.Build.0 = Release|Any CPU {3156A400-78C7-410A-9B79-9CDFFD5B94E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3156A400-78C7-410A-9B79-9CDFFD5B94E3}.Debug|Any CPU.Build.0 = Debug|Any CPU {3156A400-78C7-410A-9B79-9CDFFD5B94E3}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1373,30 +1397,6 @@ Global {D3348F94-9831-4A3D-8E79-844900B88287}.Release|x64.Build.0 = Release|Any CPU {D3348F94-9831-4A3D-8E79-844900B88287}.Release|x86.ActiveCfg = Release|Any CPU {D3348F94-9831-4A3D-8E79-844900B88287}.Release|x86.Build.0 = Release|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x64.ActiveCfg = Debug|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x64.Build.0 = Debug|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x86.ActiveCfg = Debug|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x86.Build.0 = Debug|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|Any CPU.Build.0 = Release|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x64.ActiveCfg = Release|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x64.Build.0 = Release|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x86.ActiveCfg = Release|Any CPU - {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x86.Build.0 = Release|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x64.ActiveCfg = Debug|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x64.Build.0 = Debug|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x86.ActiveCfg = Debug|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x86.Build.0 = Debug|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|Any CPU.Build.0 = Release|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x64.ActiveCfg = Release|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x64.Build.0 = Release|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x86.ActiveCfg = Release|Any CPU - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x86.Build.0 = Release|Any CPU {A99D3C27-65B7-4ADF-AB54-6D8649D1E7C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A99D3C27-65B7-4ADF-AB54-6D8649D1E7C7}.Debug|Any CPU.Build.0 = Debug|Any CPU {A99D3C27-65B7-4ADF-AB54-6D8649D1E7C7}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1733,6 +1733,30 @@ Global {F009F428-7BBE-41FE-AD55-D19B4947E978}.Release|x64.Build.0 = Release|Any CPU {F009F428-7BBE-41FE-AD55-D19B4947E978}.Release|x86.ActiveCfg = Release|Any CPU {F009F428-7BBE-41FE-AD55-D19B4947E978}.Release|x86.Build.0 = Release|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x64.ActiveCfg = Debug|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x64.Build.0 = Debug|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x86.ActiveCfg = Debug|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Debug|x86.Build.0 = Debug|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|Any CPU.Build.0 = Release|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x64.ActiveCfg = Release|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x64.Build.0 = Release|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x86.ActiveCfg = Release|Any CPU + {75A5A87C-BF04-4ABE-B466-874074D37C8D}.Release|x86.Build.0 = Release|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x64.ActiveCfg = Debug|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x64.Build.0 = Debug|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x86.ActiveCfg = Debug|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Debug|x86.Build.0 = Debug|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|Any CPU.Build.0 = Release|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x64.ActiveCfg = Release|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x64.Build.0 = Release|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x86.ActiveCfg = Release|Any CPU + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2}.Release|x86.Build.0 = Release|Any CPU {751F96A2-DB60-4B40-A415-0924FEEFFD9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {751F96A2-DB60-4B40-A415-0924FEEFFD9C}.Debug|Any CPU.Build.0 = Debug|Any CPU {751F96A2-DB60-4B40-A415-0924FEEFFD9C}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -2009,6 +2033,30 @@ Global {F3F49C7E-9106-4FF7-A71D-442022D63F7B}.Release|x64.Build.0 = Release|Any CPU {F3F49C7E-9106-4FF7-A71D-442022D63F7B}.Release|x86.ActiveCfg = Release|Any CPU {F3F49C7E-9106-4FF7-A71D-442022D63F7B}.Release|x86.Build.0 = Release|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Debug|x64.ActiveCfg = Debug|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Debug|x64.Build.0 = Debug|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Debug|x86.ActiveCfg = Debug|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Debug|x86.Build.0 = Debug|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Release|Any CPU.Build.0 = Release|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Release|x64.ActiveCfg = Release|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Release|x64.Build.0 = Release|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Release|x86.ActiveCfg = Release|Any CPU + {F96BFDAC-1146-4892-95DC-68287ED03FDB}.Release|x86.Build.0 = Release|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Debug|x64.ActiveCfg = Debug|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Debug|x64.Build.0 = Debug|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Debug|x86.ActiveCfg = Debug|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Debug|x86.Build.0 = Debug|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Release|Any CPU.Build.0 = Release|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Release|x64.ActiveCfg = Release|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Release|x64.Build.0 = Release|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Release|x86.ActiveCfg = Release|Any CPU + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A}.Release|x86.Build.0 = Release|Any CPU {0A09784C-BB49-44E8-B07A-DA4EEEC1184E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0A09784C-BB49-44E8-B07A-DA4EEEC1184E}.Debug|Any CPU.Build.0 = Debug|Any CPU {0A09784C-BB49-44E8-B07A-DA4EEEC1184E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -2113,9 +2161,6 @@ Global {527E7737-8178-1F7B-CC32-0B66418AAAE3} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {AABD2F22-45E6-D373-CACB-1E42EBBB89E4} = {527E7737-8178-1F7B-CC32-0B66418AAAE3} {51FF959C-5452-4611-B3DF-671D5D2FEF1E} = {AABD2F22-45E6-D373-CACB-1E42EBBB89E4} - {9B70BA7E-5CCA-8859-C252-AF72C051F264} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} - {72886DEE-EE65-CAB4-D88E-95639D81D7B4} = {9B70BA7E-5CCA-8859-C252-AF72C051F264} - {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B} = {72886DEE-EE65-CAB4-D88E-95639D81D7B4} {3050869B-5B38-A2E1-E211-FDD96922C0D8} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {9E83E5D7-427F-F90E-BAF8-110976D8882A} = {3050869B-5B38-A2E1-E211-FDD96922C0D8} {F6B9B9A5-3A77-44F6-A349-50A751B46904} = {9E83E5D7-427F-F90E-BAF8-110976D8882A} @@ -2164,6 +2209,9 @@ Global {2DD519C6-9156-B8C4-11E9-4269216495AD} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {96640177-9FE5-9698-15FE-FA6086540707} = {2DD519C6-9156-B8C4-11E9-4269216495AD} {19631370-84E9-45A5-B98F-0359499DB2FA} = {96640177-9FE5-9698-15FE-FA6086540707} + {BC6B0F7E-455A-8CD6-9D34-34D63EF1C586} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} + {3DBDEE22-B819-F38B-FA26-0F71EEE6B68A} = {BC6B0F7E-455A-8CD6-9D34-34D63EF1C586} + {38EF7AE0-C6B0-4809-85EE-27A2C4F8F83B} = {3DBDEE22-B819-F38B-FA26-0F71EEE6B68A} {EB5334E6-670B-EC92-68F3-634AA8C9020E} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {59B172EF-E666-A44A-A88A-206F6A63264A} = {EB5334E6-670B-EC92-68F3-634AA8C9020E} {1F58262C-B95C-4EC3-95BF-469D7A56480E} = {59B172EF-E666-A44A-A88A-206F6A63264A} @@ -2203,6 +2251,9 @@ Global {ED9D3D4A-502F-41A4-BBCC-970E65472F33} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {0131AD4F-3934-F56E-5081-42129AD09143} = {ED9D3D4A-502F-41A4-BBCC-970E65472F33} {DE1B4312-1A4F-4774-B7EB-B1EC77F80D5E} = {0131AD4F-3934-F56E-5081-42129AD09143} + {7DC9F1E2-AB34-5135-E904-B1BD6D1D8EAD} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} + {5ECFEF0C-3BB5-0FB5-BFDE-297FEE69F1C9} = {7DC9F1E2-AB34-5135-E904-B1BD6D1D8EAD} + {37495405-1881-4192-BABA-C4E8CE7893D8} = {5ECFEF0C-3BB5-0FB5-BFDE-297FEE69F1C9} {B28A9B67-1C09-C756-C02A-7AC1895F9584} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} {E38B6DEF-57A1-6CCA-498B-5697FF0B466C} = {B28A9B67-1C09-C756-C02A-7AC1895F9584} {3156A400-78C7-410A-9B79-9CDFFD5B94E3} = {E38B6DEF-57A1-6CCA-498B-5697FF0B466C} @@ -2251,9 +2302,6 @@ Global {BEEC386F-2B6A-A601-7DF0-FDB8FC583F0B} = {527E7737-8178-1F7B-CC32-0B66418AAAE3} {FFA1F834-6049-474C-9EED-72E1A3F9646E} = {BEEC386F-2B6A-A601-7DF0-FDB8FC583F0B} {D3348F94-9831-4A3D-8E79-844900B88287} = {BEEC386F-2B6A-A601-7DF0-FDB8FC583F0B} - {D80CC604-369B-AC81-8F7A-C731A7ABD68E} = {9B70BA7E-5CCA-8859-C252-AF72C051F264} - {75A5A87C-BF04-4ABE-B466-874074D37C8D} = {D80CC604-369B-AC81-8F7A-C731A7ABD68E} - {D1BCD822-AC8A-408F-A71A-9205DB29A9D2} = {D80CC604-369B-AC81-8F7A-C731A7ABD68E} {A8D0F127-6ACB-380E-8423-B6B6EA1AF2DC} = {3050869B-5B38-A2E1-E211-FDD96922C0D8} {A99D3C27-65B7-4ADF-AB54-6D8649D1E7C7} = {A8D0F127-6ACB-380E-8423-B6B6EA1AF2DC} {18221FA7-BAC2-07BA-D54F-D567400B25DA} = {A6722C15-810E-881D-D81D-B31AFB74E906} @@ -2298,6 +2346,9 @@ Global {FB0433B6-88B8-3F40-695F-E02336F620D7} = {2DD519C6-9156-B8C4-11E9-4269216495AD} {6B594222-0B9E-4CDE-A49E-C3CCB65815FD} = {FB0433B6-88B8-3F40-695F-E02336F620D7} {F009F428-7BBE-41FE-AD55-D19B4947E978} = {FB0433B6-88B8-3F40-695F-E02336F620D7} + {19EEEACE-2421-E3A7-A6B6-B8B43E3BA461} = {BC6B0F7E-455A-8CD6-9D34-34D63EF1C586} + {75A5A87C-BF04-4ABE-B466-874074D37C8D} = {19EEEACE-2421-E3A7-A6B6-B8B43E3BA461} + {D1BCD822-AC8A-408F-A71A-9205DB29A9D2} = {19EEEACE-2421-E3A7-A6B6-B8B43E3BA461} {D5394AFD-90BE-8F1D-1BC6-C1A4C372E9EC} = {EB5334E6-670B-EC92-68F3-634AA8C9020E} {751F96A2-DB60-4B40-A415-0924FEEFFD9C} = {D5394AFD-90BE-8F1D-1BC6-C1A4C372E9EC} {4D7B1DE3-D04E-48A2-A904-A3288F0A519C} = {D5394AFD-90BE-8F1D-1BC6-C1A4C372E9EC} @@ -2334,6 +2385,9 @@ Global {E03D2171-C4AB-45A3-681D-A2A2EBBB122A} = {ED9D3D4A-502F-41A4-BBCC-970E65472F33} {9A72A0E3-091A-4C64-AE66-ADAA5B46B1E8} = {E03D2171-C4AB-45A3-681D-A2A2EBBB122A} {F3F49C7E-9106-4FF7-A71D-442022D63F7B} = {E03D2171-C4AB-45A3-681D-A2A2EBBB122A} + {E644C61C-62F2-2BB0-FA9F-259BEACD55DF} = {7DC9F1E2-AB34-5135-E904-B1BD6D1D8EAD} + {F96BFDAC-1146-4892-95DC-68287ED03FDB} = {E644C61C-62F2-2BB0-FA9F-259BEACD55DF} + {CC180C2E-FDC1-4CD9-BF7D-2C8BAE96AC9A} = {E644C61C-62F2-2BB0-FA9F-259BEACD55DF} {D38B6103-E564-8894-9748-4CF0C62984DB} = {B28A9B67-1C09-C756-C02A-7AC1895F9584} {0A09784C-BB49-44E8-B07A-DA4EEEC1184E} = {D38B6103-E564-8894-9748-4CF0C62984DB} {F5980D17-1A14-4DD9-82DF-6496E0C4B70D} = {D38B6103-E564-8894-9748-4CF0C62984DB} diff --git a/Directory.Packages.props b/Directory.Packages.props index c1fccb4eb..90dbaecbc 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -11,6 +11,7 @@ + diff --git a/eng/tools/ToolDescriptionEvaluator/prompts.json b/eng/tools/ToolDescriptionEvaluator/prompts.json index 67b8f8cda..3bf8bbf1e 100644 --- a/eng/tools/ToolDescriptionEvaluator/prompts.json +++ b/eng/tools/ToolDescriptionEvaluator/prompts.json @@ -139,6 +139,10 @@ "Create an immutable ledger entry in with content {\"audit\": \"log\"}", "Write an entry to confidential ledger " ], + "azmcp_confidentialledger_entries_get": [ + "Get entry from Confidential Ledger for transaction on ledger ", + "Get transaction from ledger " + ], "azmcp_cosmos_account_list": [ "List all cosmosdb accounts in my subscription", "Show me my cosmosdb accounts", @@ -411,18 +415,24 @@ "azmcp_grafana_list": [ "List all Azure Managed Grafana in one subscription" ], - "azmcp_azuremanagedlustre_filesystem_list": [ + "azmcp_managedlustre_filesystem_create": [ + "Create an Azure Managed Lustre filesystem with name , size , SKU , and subnet for availability zone in location . Maintenance should occur on at " + ], + "azmcp_managedlustre_filesystem_list": [ "List the Azure Managed Lustre filesystems in my subscription ", "List the Azure Managed Lustre filesystems in my resource group " ], - "azmcp_azuremanagedlustre_filesystem_sku_get": [ - "List the Azure Managed Lustre SKUs available in " + "azmcp_managedlustre_filesystem_sku_get": [ + "List the Azure Managed Lustre SKUs available in location " ], - "azmcp_azuremanagedlustre_filesystem_subnetsize_ask": [ - "Tell me how many IP addresses I need for of " + "azmcp_managedlustre_filesystem_subnetsize_ask": [ + "Tell me how many IP addresses I need for an Azure Managed Lustre filesystem of size using the SKU " ], - "azmcp_azuremanagedlustre_filesystem_subnetsize_validate": [ - "Validate if can host of " + "azmcp_managedlustre_filesystem_subnetsize_validate": [ + "Validate if the network can host Azure Managed Lustre filesystem of size using the SKU " + ], + "azmcp_managedlustre_filesystem_update": [ + "Update the maintenance window of the Azure Managed Lustre filesystem to at " ], "azmcp_marketplace_product_get": [ "Get details about marketplace product " @@ -662,6 +672,12 @@ "What is my current subscription?", "What subscriptions do I have?" ], + "azmcp_tables_list": [ + "List all tables in the storage account ", + "Show me the tables in the storage account ", + "List all tables in the Cosmos DB account ", + "Show me the tables in the Cosmos DB account " + ], "azmcp_azureterraformbestpractices_get": [ "Fetch the Azure Terraform best practices", "Show me the Azure Terraform best practices and generate code sample to get a secret from Azure Key Vault" diff --git a/eng/tools/ToolDescriptionEvaluator/results.md b/eng/tools/ToolDescriptionEvaluator/results.md index 4dde4014d..9d2353b81 100644 --- a/eng/tools/ToolDescriptionEvaluator/results.md +++ b/eng/tools/ToolDescriptionEvaluator/results.md @@ -1,15 +1,15 @@ # Tool Selection Analysis Setup -**Setup completed:** 2025-10-07 15:24:03 -**Tool count:** 155 -**Database setup time:** 2.5664360s +**Setup completed:** 2025-10-09 13:38:31 +**Tool count:** 157 +**Database setup time:** 2.4518353s --- # Tool Selection Analysis Results -**Analysis Date:** 2025-10-07 15:24:03 -**Tool count:** 155 +**Analysis Date:** 2025-10-09 13:38:31 +**Tool count:** 157 ## Table of Contents @@ -97,72 +97,72 @@ - [Test 82: azmcp_confidentialledger_entries_append](#test-82) - [Test 83: azmcp_confidentialledger_entries_append](#test-83) - [Test 84: azmcp_confidentialledger_entries_append](#test-84) -- [Test 85: azmcp_cosmos_account_list](#test-85) -- [Test 86: azmcp_cosmos_account_list](#test-86) +- [Test 85: azmcp_confidentialledger_entries_get](#test-85) +- [Test 86: azmcp_confidentialledger_entries_get](#test-86) - [Test 87: azmcp_cosmos_account_list](#test-87) -- [Test 88: azmcp_cosmos_database_container_item_query](#test-88) -- [Test 89: azmcp_cosmos_database_container_list](#test-89) -- [Test 90: azmcp_cosmos_database_container_list](#test-90) -- [Test 91: azmcp_cosmos_database_list](#test-91) -- [Test 92: azmcp_cosmos_database_list](#test-92) -- [Test 93: azmcp_kusto_cluster_get](#test-93) -- [Test 94: azmcp_kusto_cluster_list](#test-94) -- [Test 95: azmcp_kusto_cluster_list](#test-95) +- [Test 88: azmcp_cosmos_account_list](#test-88) +- [Test 89: azmcp_cosmos_account_list](#test-89) +- [Test 90: azmcp_cosmos_database_container_item_query](#test-90) +- [Test 91: azmcp_cosmos_database_container_list](#test-91) +- [Test 92: azmcp_cosmos_database_container_list](#test-92) +- [Test 93: azmcp_cosmos_database_list](#test-93) +- [Test 94: azmcp_cosmos_database_list](#test-94) +- [Test 95: azmcp_kusto_cluster_get](#test-95) - [Test 96: azmcp_kusto_cluster_list](#test-96) -- [Test 97: azmcp_kusto_database_list](#test-97) -- [Test 98: azmcp_kusto_database_list](#test-98) -- [Test 99: azmcp_kusto_query](#test-99) -- [Test 100: azmcp_kusto_sample](#test-100) -- [Test 101: azmcp_kusto_table_list](#test-101) -- [Test 102: azmcp_kusto_table_list](#test-102) -- [Test 103: azmcp_kusto_table_schema](#test-103) -- [Test 104: azmcp_mysql_database_list](#test-104) -- [Test 105: azmcp_mysql_database_list](#test-105) -- [Test 106: azmcp_mysql_database_query](#test-106) -- [Test 107: azmcp_mysql_server_config_get](#test-107) -- [Test 108: azmcp_mysql_server_list](#test-108) -- [Test 109: azmcp_mysql_server_list](#test-109) +- [Test 97: azmcp_kusto_cluster_list](#test-97) +- [Test 98: azmcp_kusto_cluster_list](#test-98) +- [Test 99: azmcp_kusto_database_list](#test-99) +- [Test 100: azmcp_kusto_database_list](#test-100) +- [Test 101: azmcp_kusto_query](#test-101) +- [Test 102: azmcp_kusto_sample](#test-102) +- [Test 103: azmcp_kusto_table_list](#test-103) +- [Test 104: azmcp_kusto_table_list](#test-104) +- [Test 105: azmcp_kusto_table_schema](#test-105) +- [Test 106: azmcp_mysql_database_list](#test-106) +- [Test 107: azmcp_mysql_database_list](#test-107) +- [Test 108: azmcp_mysql_database_query](#test-108) +- [Test 109: azmcp_mysql_server_config_get](#test-109) - [Test 110: azmcp_mysql_server_list](#test-110) -- [Test 111: azmcp_mysql_server_param_get](#test-111) -- [Test 112: azmcp_mysql_server_param_set](#test-112) -- [Test 113: azmcp_mysql_table_list](#test-113) -- [Test 114: azmcp_mysql_table_list](#test-114) -- [Test 115: azmcp_mysql_table_schema_get](#test-115) -- [Test 116: azmcp_postgres_database_list](#test-116) -- [Test 117: azmcp_postgres_database_list](#test-117) -- [Test 118: azmcp_postgres_database_query](#test-118) -- [Test 119: azmcp_postgres_server_config_get](#test-119) -- [Test 120: azmcp_postgres_server_list](#test-120) -- [Test 121: azmcp_postgres_server_list](#test-121) +- [Test 111: azmcp_mysql_server_list](#test-111) +- [Test 112: azmcp_mysql_server_list](#test-112) +- [Test 113: azmcp_mysql_server_param_get](#test-113) +- [Test 114: azmcp_mysql_server_param_set](#test-114) +- [Test 115: azmcp_mysql_table_list](#test-115) +- [Test 116: azmcp_mysql_table_list](#test-116) +- [Test 117: azmcp_mysql_table_schema_get](#test-117) +- [Test 118: azmcp_postgres_database_list](#test-118) +- [Test 119: azmcp_postgres_database_list](#test-119) +- [Test 120: azmcp_postgres_database_query](#test-120) +- [Test 121: azmcp_postgres_server_config_get](#test-121) - [Test 122: azmcp_postgres_server_list](#test-122) -- [Test 123: azmcp_postgres_server_param_get](#test-123) -- [Test 124: azmcp_postgres_server_param_set](#test-124) -- [Test 125: azmcp_postgres_table_list](#test-125) -- [Test 126: azmcp_postgres_table_list](#test-126) -- [Test 127: azmcp_postgres_table_schema_get](#test-127) -- [Test 128: azmcp_deploy_app_logs_get](#test-128) -- [Test 129: azmcp_deploy_architecture_diagram_generate](#test-129) -- [Test 130: azmcp_deploy_iac_rules_get](#test-130) -- [Test 131: azmcp_deploy_pipeline_guidance_get](#test-131) -- [Test 132: azmcp_deploy_plan_get](#test-132) -- [Test 133: azmcp_eventgrid_events_publish](#test-133) -- [Test 134: azmcp_eventgrid_events_publish](#test-134) +- [Test 123: azmcp_postgres_server_list](#test-123) +- [Test 124: azmcp_postgres_server_list](#test-124) +- [Test 125: azmcp_postgres_server_param_get](#test-125) +- [Test 126: azmcp_postgres_server_param_set](#test-126) +- [Test 127: azmcp_postgres_table_list](#test-127) +- [Test 128: azmcp_postgres_table_list](#test-128) +- [Test 129: azmcp_postgres_table_schema_get](#test-129) +- [Test 130: azmcp_deploy_app_logs_get](#test-130) +- [Test 131: azmcp_deploy_architecture_diagram_generate](#test-131) +- [Test 132: azmcp_deploy_iac_rules_get](#test-132) +- [Test 133: azmcp_deploy_pipeline_guidance_get](#test-133) +- [Test 134: azmcp_deploy_plan_get](#test-134) - [Test 135: azmcp_eventgrid_events_publish](#test-135) -- [Test 136: azmcp_eventgrid_topic_list](#test-136) -- [Test 137: azmcp_eventgrid_topic_list](#test-137) +- [Test 136: azmcp_eventgrid_events_publish](#test-136) +- [Test 137: azmcp_eventgrid_events_publish](#test-137) - [Test 138: azmcp_eventgrid_topic_list](#test-138) - [Test 139: azmcp_eventgrid_topic_list](#test-139) -- [Test 140: azmcp_eventgrid_subscription_list](#test-140) -- [Test 141: azmcp_eventgrid_subscription_list](#test-141) +- [Test 140: azmcp_eventgrid_topic_list](#test-140) +- [Test 141: azmcp_eventgrid_topic_list](#test-141) - [Test 142: azmcp_eventgrid_subscription_list](#test-142) - [Test 143: azmcp_eventgrid_subscription_list](#test-143) - [Test 144: azmcp_eventgrid_subscription_list](#test-144) - [Test 145: azmcp_eventgrid_subscription_list](#test-145) - [Test 146: azmcp_eventgrid_subscription_list](#test-146) -- [Test 147: azmcp_eventhubs_namespace_get](#test-147) -- [Test 148: azmcp_eventhubs_namespace_get](#test-148) -- [Test 149: azmcp_functionapp_get](#test-149) -- [Test 150: azmcp_functionapp_get](#test-150) +- [Test 147: azmcp_eventgrid_subscription_list](#test-147) +- [Test 148: azmcp_eventgrid_subscription_list](#test-148) +- [Test 149: azmcp_eventhubs_namespace_get](#test-149) +- [Test 150: azmcp_eventhubs_namespace_get](#test-150) - [Test 151: azmcp_functionapp_get](#test-151) - [Test 152: azmcp_functionapp_get](#test-152) - [Test 153: azmcp_functionapp_get](#test-153) @@ -173,241 +173,249 @@ - [Test 158: azmcp_functionapp_get](#test-158) - [Test 159: azmcp_functionapp_get](#test-159) - [Test 160: azmcp_functionapp_get](#test-160) -- [Test 161: azmcp_keyvault_admin_settings_get](#test-161) -- [Test 162: azmcp_keyvault_admin_settings_get](#test-162) +- [Test 161: azmcp_functionapp_get](#test-161) +- [Test 162: azmcp_functionapp_get](#test-162) - [Test 163: azmcp_keyvault_admin_settings_get](#test-163) -- [Test 164: azmcp_keyvault_certificate_create](#test-164) -- [Test 165: azmcp_keyvault_certificate_create](#test-165) +- [Test 164: azmcp_keyvault_admin_settings_get](#test-164) +- [Test 165: azmcp_keyvault_admin_settings_get](#test-165) - [Test 166: azmcp_keyvault_certificate_create](#test-166) - [Test 167: azmcp_keyvault_certificate_create](#test-167) - [Test 168: azmcp_keyvault_certificate_create](#test-168) -- [Test 169: azmcp_keyvault_certificate_get](#test-169) -- [Test 170: azmcp_keyvault_certificate_get](#test-170) +- [Test 169: azmcp_keyvault_certificate_create](#test-169) +- [Test 170: azmcp_keyvault_certificate_create](#test-170) - [Test 171: azmcp_keyvault_certificate_get](#test-171) - [Test 172: azmcp_keyvault_certificate_get](#test-172) - [Test 173: azmcp_keyvault_certificate_get](#test-173) -- [Test 174: azmcp_keyvault_certificate_import](#test-174) -- [Test 175: azmcp_keyvault_certificate_import](#test-175) +- [Test 174: azmcp_keyvault_certificate_get](#test-174) +- [Test 175: azmcp_keyvault_certificate_get](#test-175) - [Test 176: azmcp_keyvault_certificate_import](#test-176) - [Test 177: azmcp_keyvault_certificate_import](#test-177) - [Test 178: azmcp_keyvault_certificate_import](#test-178) -- [Test 179: azmcp_keyvault_certificate_list](#test-179) -- [Test 180: azmcp_keyvault_certificate_list](#test-180) +- [Test 179: azmcp_keyvault_certificate_import](#test-179) +- [Test 180: azmcp_keyvault_certificate_import](#test-180) - [Test 181: azmcp_keyvault_certificate_list](#test-181) - [Test 182: azmcp_keyvault_certificate_list](#test-182) - [Test 183: azmcp_keyvault_certificate_list](#test-183) - [Test 184: azmcp_keyvault_certificate_list](#test-184) -- [Test 185: azmcp_keyvault_key_create](#test-185) -- [Test 186: azmcp_keyvault_key_create](#test-186) +- [Test 185: azmcp_keyvault_certificate_list](#test-185) +- [Test 186: azmcp_keyvault_certificate_list](#test-186) - [Test 187: azmcp_keyvault_key_create](#test-187) - [Test 188: azmcp_keyvault_key_create](#test-188) - [Test 189: azmcp_keyvault_key_create](#test-189) -- [Test 190: azmcp_keyvault_key_get](#test-190) -- [Test 191: azmcp_keyvault_key_get](#test-191) +- [Test 190: azmcp_keyvault_key_create](#test-190) +- [Test 191: azmcp_keyvault_key_create](#test-191) - [Test 192: azmcp_keyvault_key_get](#test-192) - [Test 193: azmcp_keyvault_key_get](#test-193) - [Test 194: azmcp_keyvault_key_get](#test-194) -- [Test 195: azmcp_keyvault_key_list](#test-195) -- [Test 196: azmcp_keyvault_key_list](#test-196) +- [Test 195: azmcp_keyvault_key_get](#test-195) +- [Test 196: azmcp_keyvault_key_get](#test-196) - [Test 197: azmcp_keyvault_key_list](#test-197) - [Test 198: azmcp_keyvault_key_list](#test-198) - [Test 199: azmcp_keyvault_key_list](#test-199) - [Test 200: azmcp_keyvault_key_list](#test-200) -- [Test 201: azmcp_keyvault_secret_create](#test-201) -- [Test 202: azmcp_keyvault_secret_create](#test-202) +- [Test 201: azmcp_keyvault_key_list](#test-201) +- [Test 202: azmcp_keyvault_key_list](#test-202) - [Test 203: azmcp_keyvault_secret_create](#test-203) - [Test 204: azmcp_keyvault_secret_create](#test-204) - [Test 205: azmcp_keyvault_secret_create](#test-205) -- [Test 206: azmcp_keyvault_secret_get](#test-206) -- [Test 207: azmcp_keyvault_secret_get](#test-207) +- [Test 206: azmcp_keyvault_secret_create](#test-206) +- [Test 207: azmcp_keyvault_secret_create](#test-207) - [Test 208: azmcp_keyvault_secret_get](#test-208) - [Test 209: azmcp_keyvault_secret_get](#test-209) - [Test 210: azmcp_keyvault_secret_get](#test-210) -- [Test 211: azmcp_keyvault_secret_list](#test-211) -- [Test 212: azmcp_keyvault_secret_list](#test-212) +- [Test 211: azmcp_keyvault_secret_get](#test-211) +- [Test 212: azmcp_keyvault_secret_get](#test-212) - [Test 213: azmcp_keyvault_secret_list](#test-213) - [Test 214: azmcp_keyvault_secret_list](#test-214) - [Test 215: azmcp_keyvault_secret_list](#test-215) - [Test 216: azmcp_keyvault_secret_list](#test-216) -- [Test 217: azmcp_aks_cluster_get](#test-217) -- [Test 218: azmcp_aks_cluster_get](#test-218) +- [Test 217: azmcp_keyvault_secret_list](#test-217) +- [Test 218: azmcp_keyvault_secret_list](#test-218) - [Test 219: azmcp_aks_cluster_get](#test-219) - [Test 220: azmcp_aks_cluster_get](#test-220) - [Test 221: azmcp_aks_cluster_get](#test-221) - [Test 222: azmcp_aks_cluster_get](#test-222) - [Test 223: azmcp_aks_cluster_get](#test-223) -- [Test 224: azmcp_aks_nodepool_get](#test-224) -- [Test 225: azmcp_aks_nodepool_get](#test-225) +- [Test 224: azmcp_aks_cluster_get](#test-224) +- [Test 225: azmcp_aks_cluster_get](#test-225) - [Test 226: azmcp_aks_nodepool_get](#test-226) - [Test 227: azmcp_aks_nodepool_get](#test-227) - [Test 228: azmcp_aks_nodepool_get](#test-228) - [Test 229: azmcp_aks_nodepool_get](#test-229) -- [Test 230: azmcp_loadtesting_test_create](#test-230) -- [Test 231: azmcp_loadtesting_test_get](#test-231) -- [Test 232: azmcp_loadtesting_testresource_create](#test-232) -- [Test 233: azmcp_loadtesting_testresource_list](#test-233) -- [Test 234: azmcp_loadtesting_testrun_create](#test-234) -- [Test 235: azmcp_loadtesting_testrun_get](#test-235) -- [Test 236: azmcp_loadtesting_testrun_list](#test-236) -- [Test 237: azmcp_loadtesting_testrun_update](#test-237) -- [Test 238: azmcp_grafana_list](#test-238) -- [Test 239: azmcp_azuremanagedlustre_filesystem_list](#test-239) -- [Test 240: azmcp_azuremanagedlustre_filesystem_list](#test-240) -- [Test 241: azmcp_azuremanagedlustre_filesystem_sku_get](#test-241) -- [Test 242: azmcp_azuremanagedlustre_filesystem_subnetsize_ask](#test-242) -- [Test 243: azmcp_azuremanagedlustre_filesystem_subnetsize_validate](#test-243) -- [Test 244: azmcp_marketplace_product_get](#test-244) -- [Test 245: azmcp_marketplace_product_list](#test-245) -- [Test 246: azmcp_marketplace_product_list](#test-246) -- [Test 247: azmcp_get_bestpractices_get](#test-247) -- [Test 248: azmcp_get_bestpractices_get](#test-248) -- [Test 249: azmcp_get_bestpractices_get](#test-249) -- [Test 250: azmcp_get_bestpractices_get](#test-250) +- [Test 230: azmcp_aks_nodepool_get](#test-230) +- [Test 231: azmcp_aks_nodepool_get](#test-231) +- [Test 232: azmcp_loadtesting_test_create](#test-232) +- [Test 233: azmcp_loadtesting_test_get](#test-233) +- [Test 234: azmcp_loadtesting_testresource_create](#test-234) +- [Test 235: azmcp_loadtesting_testresource_list](#test-235) +- [Test 236: azmcp_loadtesting_testrun_create](#test-236) +- [Test 237: azmcp_loadtesting_testrun_get](#test-237) +- [Test 238: azmcp_loadtesting_testrun_list](#test-238) +- [Test 239: azmcp_loadtesting_testrun_update](#test-239) +- [Test 240: azmcp_grafana_list](#test-240) +- [Test 241: azmcp_managedlustre_filesystem_create](#test-241) +- [Test 242: azmcp_managedlustre_filesystem_list](#test-242) +- [Test 243: azmcp_managedlustre_filesystem_list](#test-243) +- [Test 244: azmcp_managedlustre_filesystem_sku_get](#test-244) +- [Test 245: azmcp_managedlustre_filesystem_subnetsize_ask](#test-245) +- [Test 246: azmcp_managedlustre_filesystem_subnetsize_validate](#test-246) +- [Test 247: azmcp_managedlustre_filesystem_update](#test-247) +- [Test 248: azmcp_marketplace_product_get](#test-248) +- [Test 249: azmcp_marketplace_product_list](#test-249) +- [Test 250: azmcp_marketplace_product_list](#test-250) - [Test 251: azmcp_get_bestpractices_get](#test-251) - [Test 252: azmcp_get_bestpractices_get](#test-252) - [Test 253: azmcp_get_bestpractices_get](#test-253) - [Test 254: azmcp_get_bestpractices_get](#test-254) -- [Test 255: azmcp_monitor_healthmodels_entity_gethealth](#test-255) -- [Test 256: azmcp_monitor_metrics_definitions](#test-256) -- [Test 257: azmcp_monitor_metrics_definitions](#test-257) -- [Test 258: azmcp_monitor_metrics_definitions](#test-258) -- [Test 259: azmcp_monitor_metrics_query](#test-259) -- [Test 260: azmcp_monitor_metrics_query](#test-260) -- [Test 261: azmcp_monitor_metrics_query](#test-261) -- [Test 262: azmcp_monitor_metrics_query](#test-262) +- [Test 255: azmcp_get_bestpractices_get](#test-255) +- [Test 256: azmcp_get_bestpractices_get](#test-256) +- [Test 257: azmcp_get_bestpractices_get](#test-257) +- [Test 258: azmcp_get_bestpractices_get](#test-258) +- [Test 259: azmcp_monitor_healthmodels_entity_gethealth](#test-259) +- [Test 260: azmcp_monitor_metrics_definitions](#test-260) +- [Test 261: azmcp_monitor_metrics_definitions](#test-261) +- [Test 262: azmcp_monitor_metrics_definitions](#test-262) - [Test 263: azmcp_monitor_metrics_query](#test-263) - [Test 264: azmcp_monitor_metrics_query](#test-264) -- [Test 265: azmcp_monitor_resource_log_query](#test-265) -- [Test 266: azmcp_monitor_table_list](#test-266) -- [Test 267: azmcp_monitor_table_list](#test-267) -- [Test 268: azmcp_monitor_table_type_list](#test-268) -- [Test 269: azmcp_monitor_table_type_list](#test-269) -- [Test 270: azmcp_monitor_workspace_list](#test-270) -- [Test 271: azmcp_monitor_workspace_list](#test-271) -- [Test 272: azmcp_monitor_workspace_list](#test-272) -- [Test 273: azmcp_monitor_workspace_log_query](#test-273) -- [Test 274: azmcp_datadog_monitoredresources_list](#test-274) -- [Test 275: azmcp_datadog_monitoredresources_list](#test-275) -- [Test 276: azmcp_extension_azqr](#test-276) -- [Test 277: azmcp_extension_azqr](#test-277) -- [Test 278: azmcp_extension_azqr](#test-278) -- [Test 279: azmcp_quota_region_availability_list](#test-279) -- [Test 280: azmcp_quota_usage_check](#test-280) -- [Test 281: azmcp_role_assignment_list](#test-281) -- [Test 282: azmcp_role_assignment_list](#test-282) -- [Test 283: azmcp_redis_cache_accesspolicy_list](#test-283) -- [Test 284: azmcp_redis_cache_accesspolicy_list](#test-284) -- [Test 285: azmcp_redis_cache_list](#test-285) -- [Test 286: azmcp_redis_cache_list](#test-286) -- [Test 287: azmcp_redis_cache_list](#test-287) -- [Test 288: azmcp_redis_cluster_database_list](#test-288) -- [Test 289: azmcp_redis_cluster_database_list](#test-289) -- [Test 290: azmcp_redis_cluster_list](#test-290) -- [Test 291: azmcp_redis_cluster_list](#test-291) -- [Test 292: azmcp_redis_cluster_list](#test-292) -- [Test 293: azmcp_group_list](#test-293) -- [Test 294: azmcp_group_list](#test-294) -- [Test 295: azmcp_group_list](#test-295) -- [Test 296: azmcp_resourcehealth_availability-status_get](#test-296) -- [Test 297: azmcp_resourcehealth_availability-status_get](#test-297) -- [Test 298: azmcp_resourcehealth_availability-status_get](#test-298) -- [Test 299: azmcp_resourcehealth_availability-status_list](#test-299) -- [Test 300: azmcp_resourcehealth_availability-status_list](#test-300) -- [Test 301: azmcp_resourcehealth_availability-status_list](#test-301) -- [Test 302: azmcp_resourcehealth_service-health-events_list](#test-302) -- [Test 303: azmcp_resourcehealth_service-health-events_list](#test-303) -- [Test 304: azmcp_resourcehealth_service-health-events_list](#test-304) -- [Test 305: azmcp_resourcehealth_service-health-events_list](#test-305) +- [Test 265: azmcp_monitor_metrics_query](#test-265) +- [Test 266: azmcp_monitor_metrics_query](#test-266) +- [Test 267: azmcp_monitor_metrics_query](#test-267) +- [Test 268: azmcp_monitor_metrics_query](#test-268) +- [Test 269: azmcp_monitor_resource_log_query](#test-269) +- [Test 270: azmcp_monitor_table_list](#test-270) +- [Test 271: azmcp_monitor_table_list](#test-271) +- [Test 272: azmcp_monitor_table_type_list](#test-272) +- [Test 273: azmcp_monitor_table_type_list](#test-273) +- [Test 274: azmcp_monitor_workspace_list](#test-274) +- [Test 275: azmcp_monitor_workspace_list](#test-275) +- [Test 276: azmcp_monitor_workspace_list](#test-276) +- [Test 277: azmcp_monitor_workspace_log_query](#test-277) +- [Test 278: azmcp_datadog_monitoredresources_list](#test-278) +- [Test 279: azmcp_datadog_monitoredresources_list](#test-279) +- [Test 280: azmcp_extension_azqr](#test-280) +- [Test 281: azmcp_extension_azqr](#test-281) +- [Test 282: azmcp_extension_azqr](#test-282) +- [Test 283: azmcp_quota_region_availability_list](#test-283) +- [Test 284: azmcp_quota_usage_check](#test-284) +- [Test 285: azmcp_role_assignment_list](#test-285) +- [Test 286: azmcp_role_assignment_list](#test-286) +- [Test 287: azmcp_redis_cache_accesspolicy_list](#test-287) +- [Test 288: azmcp_redis_cache_accesspolicy_list](#test-288) +- [Test 289: azmcp_redis_cache_list](#test-289) +- [Test 290: azmcp_redis_cache_list](#test-290) +- [Test 291: azmcp_redis_cache_list](#test-291) +- [Test 292: azmcp_redis_cluster_database_list](#test-292) +- [Test 293: azmcp_redis_cluster_database_list](#test-293) +- [Test 294: azmcp_redis_cluster_list](#test-294) +- [Test 295: azmcp_redis_cluster_list](#test-295) +- [Test 296: azmcp_redis_cluster_list](#test-296) +- [Test 297: azmcp_group_list](#test-297) +- [Test 298: azmcp_group_list](#test-298) +- [Test 299: azmcp_group_list](#test-299) +- [Test 300: azmcp_resourcehealth_availability-status_get](#test-300) +- [Test 301: azmcp_resourcehealth_availability-status_get](#test-301) +- [Test 302: azmcp_resourcehealth_availability-status_get](#test-302) +- [Test 303: azmcp_resourcehealth_availability-status_list](#test-303) +- [Test 304: azmcp_resourcehealth_availability-status_list](#test-304) +- [Test 305: azmcp_resourcehealth_availability-status_list](#test-305) - [Test 306: azmcp_resourcehealth_service-health-events_list](#test-306) -- [Test 307: azmcp_servicebus_queue_details](#test-307) -- [Test 308: azmcp_servicebus_topic_details](#test-308) -- [Test 309: azmcp_servicebus_topic_subscription_details](#test-309) -- [Test 310: azmcp_signalr_runtime_get](#test-310) -- [Test 311: azmcp_signalr_runtime_get](#test-311) -- [Test 312: azmcp_signalr_runtime_get](#test-312) -- [Test 313: azmcp_signalr_runtime_get](#test-313) +- [Test 307: azmcp_resourcehealth_service-health-events_list](#test-307) +- [Test 308: azmcp_resourcehealth_service-health-events_list](#test-308) +- [Test 309: azmcp_resourcehealth_service-health-events_list](#test-309) +- [Test 310: azmcp_resourcehealth_service-health-events_list](#test-310) +- [Test 311: azmcp_servicebus_queue_details](#test-311) +- [Test 312: azmcp_servicebus_topic_details](#test-312) +- [Test 313: azmcp_servicebus_topic_subscription_details](#test-313) - [Test 314: azmcp_signalr_runtime_get](#test-314) - [Test 315: azmcp_signalr_runtime_get](#test-315) -- [Test 316: azmcp_sql_db_create](#test-316) -- [Test 317: azmcp_sql_db_create](#test-317) -- [Test 318: azmcp_sql_db_create](#test-318) -- [Test 319: azmcp_sql_db_delete](#test-319) -- [Test 320: azmcp_sql_db_delete](#test-320) -- [Test 321: azmcp_sql_db_delete](#test-321) -- [Test 322: azmcp_sql_db_list](#test-322) -- [Test 323: azmcp_sql_db_list](#test-323) -- [Test 324: azmcp_sql_db_rename](#test-324) -- [Test 325: azmcp_sql_db_rename](#test-325) -- [Test 326: azmcp_sql_db_show](#test-326) -- [Test 327: azmcp_sql_db_show](#test-327) -- [Test 328: azmcp_sql_db_update](#test-328) -- [Test 329: azmcp_sql_db_update](#test-329) -- [Test 330: azmcp_sql_elastic-pool_list](#test-330) -- [Test 331: azmcp_sql_elastic-pool_list](#test-331) -- [Test 332: azmcp_sql_elastic-pool_list](#test-332) -- [Test 333: azmcp_sql_server_create](#test-333) -- [Test 334: azmcp_sql_server_create](#test-334) -- [Test 335: azmcp_sql_server_create](#test-335) -- [Test 336: azmcp_sql_server_delete](#test-336) -- [Test 337: azmcp_sql_server_delete](#test-337) -- [Test 338: azmcp_sql_server_delete](#test-338) -- [Test 339: azmcp_sql_server_entra-admin_list](#test-339) -- [Test 340: azmcp_sql_server_entra-admin_list](#test-340) -- [Test 341: azmcp_sql_server_entra-admin_list](#test-341) -- [Test 342: azmcp_sql_server_firewall-rule_create](#test-342) -- [Test 343: azmcp_sql_server_firewall-rule_create](#test-343) -- [Test 344: azmcp_sql_server_firewall-rule_create](#test-344) -- [Test 345: azmcp_sql_server_firewall-rule_delete](#test-345) -- [Test 346: azmcp_sql_server_firewall-rule_delete](#test-346) -- [Test 347: azmcp_sql_server_firewall-rule_delete](#test-347) -- [Test 348: azmcp_sql_server_firewall-rule_list](#test-348) -- [Test 349: azmcp_sql_server_firewall-rule_list](#test-349) -- [Test 350: azmcp_sql_server_firewall-rule_list](#test-350) -- [Test 351: azmcp_sql_server_list](#test-351) -- [Test 352: azmcp_sql_server_list](#test-352) -- [Test 353: azmcp_sql_server_show](#test-353) -- [Test 354: azmcp_sql_server_show](#test-354) -- [Test 355: azmcp_sql_server_show](#test-355) -- [Test 356: azmcp_storage_account_create](#test-356) -- [Test 357: azmcp_storage_account_create](#test-357) -- [Test 358: azmcp_storage_account_create](#test-358) -- [Test 359: azmcp_storage_account_get](#test-359) -- [Test 360: azmcp_storage_account_get](#test-360) -- [Test 361: azmcp_storage_account_get](#test-361) -- [Test 362: azmcp_storage_account_get](#test-362) +- [Test 316: azmcp_signalr_runtime_get](#test-316) +- [Test 317: azmcp_signalr_runtime_get](#test-317) +- [Test 318: azmcp_signalr_runtime_get](#test-318) +- [Test 319: azmcp_signalr_runtime_get](#test-319) +- [Test 320: azmcp_sql_db_create](#test-320) +- [Test 321: azmcp_sql_db_create](#test-321) +- [Test 322: azmcp_sql_db_create](#test-322) +- [Test 323: azmcp_sql_db_delete](#test-323) +- [Test 324: azmcp_sql_db_delete](#test-324) +- [Test 325: azmcp_sql_db_delete](#test-325) +- [Test 326: azmcp_sql_db_list](#test-326) +- [Test 327: azmcp_sql_db_list](#test-327) +- [Test 328: azmcp_sql_db_rename](#test-328) +- [Test 329: azmcp_sql_db_rename](#test-329) +- [Test 330: azmcp_sql_db_show](#test-330) +- [Test 331: azmcp_sql_db_show](#test-331) +- [Test 332: azmcp_sql_db_update](#test-332) +- [Test 333: azmcp_sql_db_update](#test-333) +- [Test 334: azmcp_sql_elastic-pool_list](#test-334) +- [Test 335: azmcp_sql_elastic-pool_list](#test-335) +- [Test 336: azmcp_sql_elastic-pool_list](#test-336) +- [Test 337: azmcp_sql_server_create](#test-337) +- [Test 338: azmcp_sql_server_create](#test-338) +- [Test 339: azmcp_sql_server_create](#test-339) +- [Test 340: azmcp_sql_server_delete](#test-340) +- [Test 341: azmcp_sql_server_delete](#test-341) +- [Test 342: azmcp_sql_server_delete](#test-342) +- [Test 343: azmcp_sql_server_entra-admin_list](#test-343) +- [Test 344: azmcp_sql_server_entra-admin_list](#test-344) +- [Test 345: azmcp_sql_server_entra-admin_list](#test-345) +- [Test 346: azmcp_sql_server_firewall-rule_create](#test-346) +- [Test 347: azmcp_sql_server_firewall-rule_create](#test-347) +- [Test 348: azmcp_sql_server_firewall-rule_create](#test-348) +- [Test 349: azmcp_sql_server_firewall-rule_delete](#test-349) +- [Test 350: azmcp_sql_server_firewall-rule_delete](#test-350) +- [Test 351: azmcp_sql_server_firewall-rule_delete](#test-351) +- [Test 352: azmcp_sql_server_firewall-rule_list](#test-352) +- [Test 353: azmcp_sql_server_firewall-rule_list](#test-353) +- [Test 354: azmcp_sql_server_firewall-rule_list](#test-354) +- [Test 355: azmcp_sql_server_list](#test-355) +- [Test 356: azmcp_sql_server_list](#test-356) +- [Test 357: azmcp_sql_server_show](#test-357) +- [Test 358: azmcp_sql_server_show](#test-358) +- [Test 359: azmcp_sql_server_show](#test-359) +- [Test 360: azmcp_storage_account_create](#test-360) +- [Test 361: azmcp_storage_account_create](#test-361) +- [Test 362: azmcp_storage_account_create](#test-362) - [Test 363: azmcp_storage_account_get](#test-363) -- [Test 364: azmcp_storage_blob_container_create](#test-364) -- [Test 365: azmcp_storage_blob_container_create](#test-365) -- [Test 366: azmcp_storage_blob_container_create](#test-366) -- [Test 367: azmcp_storage_blob_container_get](#test-367) -- [Test 368: azmcp_storage_blob_container_get](#test-368) -- [Test 369: azmcp_storage_blob_container_get](#test-369) -- [Test 370: azmcp_storage_blob_get](#test-370) -- [Test 371: azmcp_storage_blob_get](#test-371) -- [Test 372: azmcp_storage_blob_get](#test-372) -- [Test 373: azmcp_storage_blob_get](#test-373) -- [Test 374: azmcp_storage_blob_upload](#test-374) -- [Test 375: azmcp_subscription_list](#test-375) -- [Test 376: azmcp_subscription_list](#test-376) -- [Test 377: azmcp_subscription_list](#test-377) -- [Test 378: azmcp_subscription_list](#test-378) -- [Test 379: azmcp_azureterraformbestpractices_get](#test-379) -- [Test 380: azmcp_azureterraformbestpractices_get](#test-380) -- [Test 381: azmcp_virtualdesktop_hostpool_list](#test-381) -- [Test 382: azmcp_virtualdesktop_hostpool_sessionhost_list](#test-382) -- [Test 383: azmcp_virtualdesktop_hostpool_sessionhost_usersession-list](#test-383) -- [Test 384: azmcp_workbooks_create](#test-384) -- [Test 385: azmcp_workbooks_delete](#test-385) -- [Test 386: azmcp_workbooks_list](#test-386) -- [Test 387: azmcp_workbooks_list](#test-387) -- [Test 388: azmcp_workbooks_show](#test-388) -- [Test 389: azmcp_workbooks_show](#test-389) -- [Test 390: azmcp_workbooks_update](#test-390) -- [Test 391: azmcp_bicepschema_get](#test-391) -- [Test 392: azmcp_cloudarchitect_design](#test-392) -- [Test 393: azmcp_cloudarchitect_design](#test-393) -- [Test 394: azmcp_cloudarchitect_design](#test-394) -- [Test 395: azmcp_cloudarchitect_design](#test-395) +- [Test 364: azmcp_storage_account_get](#test-364) +- [Test 365: azmcp_storage_account_get](#test-365) +- [Test 366: azmcp_storage_account_get](#test-366) +- [Test 367: azmcp_storage_account_get](#test-367) +- [Test 368: azmcp_storage_blob_container_create](#test-368) +- [Test 369: azmcp_storage_blob_container_create](#test-369) +- [Test 370: azmcp_storage_blob_container_create](#test-370) +- [Test 371: azmcp_storage_blob_container_get](#test-371) +- [Test 372: azmcp_storage_blob_container_get](#test-372) +- [Test 373: azmcp_storage_blob_container_get](#test-373) +- [Test 374: azmcp_storage_blob_get](#test-374) +- [Test 375: azmcp_storage_blob_get](#test-375) +- [Test 376: azmcp_storage_blob_get](#test-376) +- [Test 377: azmcp_storage_blob_get](#test-377) +- [Test 378: azmcp_storage_blob_upload](#test-378) +- [Test 379: azmcp_subscription_list](#test-379) +- [Test 380: azmcp_subscription_list](#test-380) +- [Test 381: azmcp_subscription_list](#test-381) +- [Test 382: azmcp_subscription_list](#test-382) +- [Test 383: azmcp_tables_list](#test-383) +- [Test 384: azmcp_tables_list](#test-384) +- [Test 385: azmcp_tables_list](#test-385) +- [Test 386: azmcp_tables_list](#test-386) +- [Test 387: azmcp_azureterraformbestpractices_get](#test-387) +- [Test 388: azmcp_azureterraformbestpractices_get](#test-388) +- [Test 389: azmcp_virtualdesktop_hostpool_list](#test-389) +- [Test 390: azmcp_virtualdesktop_hostpool_sessionhost_list](#test-390) +- [Test 391: azmcp_virtualdesktop_hostpool_sessionhost_usersession-list](#test-391) +- [Test 392: azmcp_workbooks_create](#test-392) +- [Test 393: azmcp_workbooks_delete](#test-393) +- [Test 394: azmcp_workbooks_list](#test-394) +- [Test 395: azmcp_workbooks_list](#test-395) +- [Test 396: azmcp_workbooks_show](#test-396) +- [Test 397: azmcp_workbooks_show](#test-397) +- [Test 398: azmcp_workbooks_update](#test-398) +- [Test 399: azmcp_bicepschema_get](#test-399) +- [Test 400: azmcp_cloudarchitect_design](#test-400) +- [Test 401: azmcp_cloudarchitect_design](#test-401) +- [Test 402: azmcp_cloudarchitect_design](#test-402) +- [Test 403: azmcp_cloudarchitect_design](#test-403) --- @@ -421,9 +429,9 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.622854 | `azmcp_foundry_agents_connect` | ✅ **EXPECTED** | -| 2 | 0.603234 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 2 | 0.602990 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | | 3 | 0.494462 | `azmcp_foundry_agents_list` | ❌ | -| 4 | 0.443011 | `azmcp_foundry_agents_evaluate` | ❌ | +| 4 | 0.443278 | `azmcp_foundry_agents_evaluate` | ❌ | | 5 | 0.379587 | `azmcp_search_index_query` | ❌ | --- @@ -437,8 +445,8 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.544092 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | -| 2 | 0.469428 | `azmcp_foundry_agents_evaluate` | ✅ **EXPECTED** | +| 1 | 0.544000 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 2 | 0.469956 | `azmcp_foundry_agents_evaluate` | ✅ **EXPECTED** | | 3 | 0.445964 | `azmcp_foundry_agents_connect` | ❌ | | 4 | 0.250023 | `azmcp_monitor_workspace_log_query` | ❌ | | 5 | 0.235412 | `azmcp_foundry_agents_list` | ❌ | @@ -454,11 +462,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.580607 | `azmcp_foundry_agents_query-and-evaluate` | ✅ **EXPECTED** | +| 1 | 0.580526 | `azmcp_foundry_agents_query-and-evaluate` | ✅ **EXPECTED** | | 2 | 0.568662 | `azmcp_foundry_agents_connect` | ❌ | -| 3 | 0.518655 | `azmcp_foundry_agents_evaluate` | ❌ | +| 3 | 0.518751 | `azmcp_foundry_agents_evaluate` | ❌ | | 4 | 0.381887 | `azmcp_foundry_agents_list` | ❌ | -| 5 | 0.326026 | `azmcp_foundry_models_deploy` | ❌ | +| 5 | 0.326004 | `azmcp_foundry_models_deploy` | ❌ | --- @@ -471,11 +479,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.695128 | `azmcp_foundry_knowledge_index_list` | ✅ **EXPECTED** | -| 2 | 0.532972 | `azmcp_foundry_agents_list` | ❌ | -| 3 | 0.526548 | `azmcp_foundry_knowledge_index_schema` | ❌ | -| 4 | 0.433171 | `azmcp_foundry_models_list` | ❌ | -| 5 | 0.422769 | `azmcp_search_index_get` | ❌ | +| 1 | 0.695202 | `azmcp_foundry_knowledge_index_list` | ✅ **EXPECTED** | +| 2 | 0.532985 | `azmcp_foundry_agents_list` | ❌ | +| 3 | 0.526528 | `azmcp_foundry_knowledge_index_schema` | ❌ | +| 4 | 0.433117 | `azmcp_foundry_models_list` | ❌ | +| 5 | 0.422779 | `azmcp_search_index_get` | ❌ | --- @@ -488,11 +496,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.603327 | `azmcp_foundry_knowledge_index_list` | ✅ **EXPECTED** | -| 2 | 0.489311 | `azmcp_foundry_knowledge_index_schema` | ❌ | -| 3 | 0.473949 | `azmcp_foundry_agents_list` | ❌ | -| 4 | 0.396819 | `azmcp_foundry_models_list` | ❌ | -| 5 | 0.374704 | `azmcp_search_index_get` | ❌ | +| 1 | 0.603333 | `azmcp_foundry_knowledge_index_list` | ✅ **EXPECTED** | +| 2 | 0.489237 | `azmcp_foundry_knowledge_index_schema` | ❌ | +| 3 | 0.473863 | `azmcp_foundry_agents_list` | ❌ | +| 4 | 0.396792 | `azmcp_foundry_models_list` | ❌ | +| 5 | 0.374557 | `azmcp_search_index_get` | ❌ | --- @@ -506,7 +514,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.672577 | `azmcp_foundry_knowledge_index_schema` | ✅ **EXPECTED** | -| 2 | 0.564759 | `azmcp_foundry_knowledge_index_list` | ❌ | +| 2 | 0.564860 | `azmcp_foundry_knowledge_index_list` | ❌ | | 3 | 0.424581 | `azmcp_search_index_get` | ❌ | | 4 | 0.401718 | `azmcp_kusto_table_schema` | ❌ | | 5 | 0.397225 | `azmcp_foundry_agents_list` | ❌ | @@ -525,8 +533,8 @@ | 1 | 0.650269 | `azmcp_foundry_knowledge_index_schema` | ✅ **EXPECTED** | | 2 | 0.432758 | `azmcp_postgres_table_schema_get` | ❌ | | 3 | 0.417421 | `azmcp_kusto_table_schema` | ❌ | -| 4 | 0.415965 | `azmcp_foundry_knowledge_index_list` | ❌ | -| 5 | 0.398287 | `azmcp_mysql_table_schema_get` | ❌ | +| 4 | 0.415963 | `azmcp_foundry_knowledge_index_list` | ❌ | +| 5 | 0.398186 | `azmcp_mysql_table_schema_get` | ❌ | --- @@ -539,8 +547,8 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.562920 | `azmcp_foundry_models_deploy` | ✅ **EXPECTED** | -| 2 | 0.335116 | `azmcp_foundry_openai_models-list` | ❌ | +| 1 | 0.563027 | `azmcp_foundry_models_deploy` | ✅ **EXPECTED** | +| 2 | 0.335139 | `azmcp_foundry_openai_models-list` | ❌ | | 3 | 0.298490 | `azmcp_loadtesting_testrun_create` | ❌ | | 4 | 0.293050 | `azmcp_loadtesting_testresource_create` | ❌ | | 5 | 0.282464 | `azmcp_mysql_server_list` | ❌ | @@ -557,10 +565,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.663532 | `azmcp_foundry_models_deployments_list` | ✅ **EXPECTED** | -| 2 | 0.583429 | `azmcp_foundry_openai_models-list` | ❌ | +| 2 | 0.583463 | `azmcp_foundry_openai_models-list` | ❌ | | 3 | 0.549636 | `azmcp_foundry_models_list` | ❌ | | 4 | 0.539695 | `azmcp_foundry_agents_list` | ❌ | -| 5 | 0.536115 | `azmcp_foundry_models_deploy` | ❌ | +| 5 | 0.536114 | `azmcp_foundry_models_deploy` | ❌ | --- @@ -574,9 +582,9 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.606645 | `azmcp_foundry_models_deployments_list` | ✅ **EXPECTED** | -| 2 | 0.521475 | `azmcp_foundry_models_deploy` | ❌ | +| 2 | 0.521458 | `azmcp_foundry_models_deploy` | ❌ | | 3 | 0.518221 | `azmcp_foundry_models_list` | ❌ | -| 4 | 0.507301 | `azmcp_foundry_openai_models-list` | ❌ | +| 4 | 0.507329 | `azmcp_foundry_openai_models-list` | ❌ | | 5 | 0.486395 | `azmcp_foundry_agents_list` | ❌ | --- @@ -593,8 +601,8 @@ | 1 | 0.560022 | `azmcp_foundry_models_list` | ✅ **EXPECTED** | | 2 | 0.506770 | `azmcp_foundry_models_deployments_list` | ❌ | | 3 | 0.491952 | `azmcp_foundry_agents_list` | ❌ | -| 4 | 0.475204 | `azmcp_foundry_openai_models-list` | ❌ | -| 5 | 0.415089 | `azmcp_foundry_models_deploy` | ❌ | +| 4 | 0.475192 | `azmcp_foundry_openai_models-list` | ❌ | +| 5 | 0.415083 | `azmcp_foundry_models_deploy` | ❌ | --- @@ -610,8 +618,8 @@ | 1 | 0.574818 | `azmcp_foundry_models_list` | ✅ **EXPECTED** | | 2 | 0.497284 | `azmcp_foundry_models_deployments_list` | ❌ | | 3 | 0.475138 | `azmcp_foundry_agents_list` | ❌ | -| 4 | 0.467671 | `azmcp_foundry_models_deploy` | ❌ | -| 5 | 0.463399 | `azmcp_foundry_openai_models-list` | ❌ | +| 4 | 0.467631 | `azmcp_foundry_models_deploy` | ❌ | +| 5 | 0.463356 | `azmcp_foundry_openai_models-list` | ❌ | --- @@ -624,11 +632,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.417680 | `azmcp_foundry_openai_chat-completions-create` | ✅ **EXPECTED** | -| 2 | 0.332570 | `azmcp_foundry_openai_create-completion` | ❌ | -| 3 | 0.211819 | `azmcp_foundry_agents_connect` | ❌ | -| 4 | 0.203124 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | -| 5 | 0.188180 | `azmcp_communication_sms_send` | ❌ | +| 1 | 0.417723 | `azmcp_foundry_openai_chat-completions-create` | ✅ **EXPECTED** | +| 2 | 0.332543 | `azmcp_foundry_openai_create-completion` | ❌ | +| 3 | 0.211879 | `azmcp_foundry_agents_connect` | ❌ | +| 4 | 0.203523 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 5 | 0.188268 | `azmcp_communication_sms_send` | ❌ | --- @@ -641,11 +649,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.553675 | `azmcp_foundry_openai_create-completion` | ✅ **EXPECTED** | -| 2 | 0.447828 | `azmcp_foundry_openai_chat-completions-create` | ❌ | -| 3 | 0.403431 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 4 | 0.394144 | `azmcp_deploy_pipeline_guidance_get` | ❌ | -| 5 | 0.386531 | `azmcp_get_bestpractices_get` | ❌ | +| 1 | 0.553773 | `azmcp_foundry_openai_create-completion` | ✅ **EXPECTED** | +| 2 | 0.447907 | `azmcp_foundry_openai_chat-completions-create` | ❌ | +| 3 | 0.403454 | `azmcp_azureterraformbestpractices_get` | ❌ | +| 4 | 0.394225 | `azmcp_deploy_pipeline_guidance_get` | ❌ | +| 5 | 0.386592 | `azmcp_get_bestpractices_get` | ❌ | --- @@ -658,10 +666,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.656236 | `azmcp_foundry_openai_embeddings-create` | ✅ **EXPECTED** | -| 2 | 0.443490 | `azmcp_foundry_openai_create-completion` | ❌ | -| 3 | 0.408903 | `azmcp_foundry_openai_models-list` | ❌ | -| 4 | 0.403980 | `azmcp_foundry_models_deploy` | ❌ | +| 1 | 0.656252 | `azmcp_foundry_openai_embeddings-create` | ✅ **EXPECTED** | +| 2 | 0.443462 | `azmcp_foundry_openai_create-completion` | ❌ | +| 3 | 0.408832 | `azmcp_foundry_openai_models-list` | ❌ | +| 4 | 0.403862 | `azmcp_foundry_models_deploy` | ❌ | | 5 | 0.399865 | `azmcp_foundry_openai_chat-completions-create` | ❌ | --- @@ -678,8 +686,8 @@ | 1 | 0.702776 | `azmcp_foundry_openai_embeddings-create` | ✅ **EXPECTED** | | 2 | 0.460359 | `azmcp_foundry_openai_create-completion` | ❌ | | 3 | 0.426022 | `azmcp_foundry_openai_chat-completions-create` | ❌ | -| 4 | 0.409975 | `azmcp_foundry_models_deploy` | ❌ | -| 5 | 0.408297 | `azmcp_foundry_openai_models-list` | ❌ | +| 4 | 0.409884 | `azmcp_foundry_models_deploy` | ❌ | +| 5 | 0.408248 | `azmcp_foundry_openai_models-list` | ❌ | --- @@ -692,10 +700,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.788120 | `azmcp_foundry_openai_models-list` | ✅ **EXPECTED** | +| 1 | 0.788098 | `azmcp_foundry_openai_models-list` | ✅ **EXPECTED** | | 2 | 0.655391 | `azmcp_foundry_agents_list` | ❌ | | 3 | 0.586908 | `azmcp_foundry_models_list` | ❌ | -| 4 | 0.565893 | `azmcp_search_service_list` | ❌ | +| 4 | 0.565865 | `azmcp_search_service_list` | ❌ | | 5 | 0.540987 | `azmcp_foundry_models_deployments_list` | ❌ | --- @@ -709,8 +717,8 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.575513 | `azmcp_foundry_openai_models-list` | ✅ **EXPECTED** | -| 2 | 0.512409 | `azmcp_foundry_models_deploy` | ❌ | +| 1 | 0.575565 | `azmcp_foundry_openai_models-list` | ✅ **EXPECTED** | +| 2 | 0.512352 | `azmcp_foundry_models_deploy` | ❌ | | 3 | 0.503634 | `azmcp_foundry_models_deployments_list` | ❌ | | 4 | 0.412858 | `azmcp_foundry_openai_create-completion` | ❌ | | 5 | 0.405167 | `azmcp_foundry_agents_list` | ❌ | @@ -728,8 +736,8 @@ |------|-------|------|--------| | 1 | 0.681052 | `azmcp_search_index_get` | ✅ **EXPECTED** | | 2 | 0.544557 | `azmcp_foundry_knowledge_index_schema` | ❌ | -| 3 | 0.490625 | `azmcp_search_service_list` | ❌ | -| 4 | 0.466039 | `azmcp_foundry_knowledge_index_list` | ❌ | +| 3 | 0.490649 | `azmcp_search_service_list` | ❌ | +| 4 | 0.466005 | `azmcp_foundry_knowledge_index_list` | ❌ | | 5 | 0.459609 | `azmcp_search_index_query` | ❌ | --- @@ -744,10 +752,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.640256 | `azmcp_search_index_get` | ✅ **EXPECTED** | -| 2 | 0.620140 | `azmcp_search_service_list` | ❌ | -| 3 | 0.561878 | `azmcp_foundry_knowledge_index_list` | ❌ | +| 2 | 0.620169 | `azmcp_search_service_list` | ❌ | +| 3 | 0.561856 | `azmcp_foundry_knowledge_index_list` | ❌ | | 4 | 0.480817 | `azmcp_search_index_query` | ❌ | -| 5 | 0.453047 | `azmcp_foundry_agents_list` | ❌ | +| 5 | 0.460652 | `azmcp_tables_list` | ❌ | --- @@ -761,8 +769,8 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.620759 | `azmcp_search_index_get` | ✅ **EXPECTED** | -| 2 | 0.562775 | `azmcp_search_service_list` | ❌ | -| 3 | 0.561207 | `azmcp_foundry_knowledge_index_list` | ❌ | +| 2 | 0.562777 | `azmcp_search_service_list` | ❌ | +| 3 | 0.561154 | `azmcp_foundry_knowledge_index_list` | ❌ | | 4 | 0.471415 | `azmcp_search_index_query` | ❌ | | 5 | 0.463972 | `azmcp_foundry_knowledge_index_schema` | ❌ | @@ -777,11 +785,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.522807 | `azmcp_search_index_get` | ❌ | -| 2 | 0.515909 | `azmcp_search_index_query` | ✅ **EXPECTED** | -| 3 | 0.497441 | `azmcp_search_service_list` | ❌ | -| 4 | 0.437762 | `azmcp_postgres_database_query` | ❌ | -| 5 | 0.373979 | `azmcp_foundry_knowledge_index_list` | ❌ | +| 1 | 0.522826 | `azmcp_search_index_get` | ❌ | +| 2 | 0.515870 | `azmcp_search_index_query` | ✅ **EXPECTED** | +| 3 | 0.497487 | `azmcp_search_service_list` | ❌ | +| 4 | 0.437715 | `azmcp_postgres_database_query` | ❌ | +| 5 | 0.373917 | `azmcp_foundry_knowledge_index_list` | ❌ | --- @@ -794,7 +802,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.793651 | `azmcp_search_service_list` | ✅ **EXPECTED** | +| 1 | 0.793705 | `azmcp_search_service_list` | ✅ **EXPECTED** | | 2 | 0.553012 | `azmcp_kusto_cluster_list` | ❌ | | 3 | 0.520340 | `azmcp_foundry_agents_list` | ❌ | | 4 | 0.509460 | `azmcp_subscription_list` | ❌ | @@ -811,7 +819,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.686140 | `azmcp_search_service_list` | ✅ **EXPECTED** | +| 1 | 0.686162 | `azmcp_search_service_list` | ✅ **EXPECTED** | | 2 | 0.479898 | `azmcp_search_index_get` | ❌ | | 3 | 0.467337 | `azmcp_foundry_agents_list` | ❌ | | 4 | 0.461786 | `azmcp_kusto_cluster_list` | ❌ | @@ -828,7 +836,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.553025 | `azmcp_search_service_list` | ✅ **EXPECTED** | +| 1 | 0.552992 | `azmcp_search_service_list` | ✅ **EXPECTED** | | 2 | 0.436230 | `azmcp_search_index_get` | ❌ | | 3 | 0.417096 | `azmcp_foundry_agents_list` | ❌ | | 4 | 0.404758 | `azmcp_search_index_query` | ❌ | @@ -913,11 +921,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.410516 | `azmcp_speech_stt_recognize` | ✅ **EXPECTED** | -| 2 | 0.159772 | `azmcp_foundry_openai_embeddings-create` | ❌ | -| 3 | 0.158031 | `azmcp_foundry_openai_chat-completions-create` | ❌ | -| 4 | 0.152160 | `azmcp_foundry_models_deploy` | ❌ | -| 5 | 0.151607 | `azmcp_deploy_pipeline_guidance_get` | ❌ | +| 1 | 0.410533 | `azmcp_speech_stt_recognize` | ✅ **EXPECTED** | +| 2 | 0.159775 | `azmcp_foundry_openai_embeddings-create` | ❌ | +| 3 | 0.158032 | `azmcp_foundry_openai_chat-completions-create` | ❌ | +| 4 | 0.152100 | `azmcp_foundry_models_deploy` | ❌ | +| 5 | 0.151632 | `azmcp_deploy_pipeline_guidance_get` | ❌ | --- @@ -930,11 +938,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.546125 | `azmcp_speech_stt_recognize` | ✅ **EXPECTED** | -| 2 | 0.225341 | `azmcp_foundry_openai_embeddings-create` | ❌ | -| 3 | 0.200776 | `azmcp_foundry_openai_chat-completions-create` | ❌ | -| 4 | 0.196730 | `azmcp_foundry_openai_create-completion` | ❌ | -| 5 | 0.183380 | `azmcp_extension_azqr` | ❌ | +| 1 | 0.546259 | `azmcp_speech_stt_recognize` | ✅ **EXPECTED** | +| 2 | 0.225372 | `azmcp_foundry_openai_embeddings-create` | ❌ | +| 3 | 0.200865 | `azmcp_foundry_openai_chat-completions-create` | ❌ | +| 4 | 0.196743 | `azmcp_foundry_openai_create-completion` | ❌ | +| 5 | 0.183560 | `azmcp_extension_azqr` | ❌ | --- @@ -1015,7 +1023,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.786294 | `azmcp_appconfig_account_list` | ✅ **EXPECTED** | +| 1 | 0.786360 | `azmcp_appconfig_account_list` | ✅ **EXPECTED** | | 2 | 0.530613 | `azmcp_appconfig_kv_get` | ❌ | | 3 | 0.491380 | `azmcp_postgres_server_list` | ❌ | | 4 | 0.481223 | `azmcp_kusto_cluster_list` | ❌ | @@ -1032,10 +1040,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.635058 | `azmcp_appconfig_account_list` | ✅ **EXPECTED** | +| 1 | 0.634978 | `azmcp_appconfig_account_list` | ✅ **EXPECTED** | | 2 | 0.464865 | `azmcp_appconfig_kv_get` | ❌ | | 3 | 0.398495 | `azmcp_subscription_list` | ❌ | -| 4 | 0.391717 | `azmcp_redis_cache_list` | ❌ | +| 4 | 0.391634 | `azmcp_redis_cache_list` | ❌ | | 5 | 0.372456 | `azmcp_postgres_server_list` | ❌ | --- @@ -1049,9 +1057,9 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.565369 | `azmcp_appconfig_account_list` | ✅ **EXPECTED** | +| 1 | 0.565435 | `azmcp_appconfig_account_list` | ✅ **EXPECTED** | | 2 | 0.465344 | `azmcp_appconfig_kv_get` | ❌ | -| 3 | 0.355916 | `azmcp_postgres_server_config_get` | ❌ | +| 3 | 0.355877 | `azmcp_postgres_server_config_get` | ❌ | | 4 | 0.348661 | `azmcp_appconfig_kv_delete` | ❌ | | 5 | 0.327234 | `azmcp_appconfig_kv_set` | ❌ | @@ -1070,7 +1078,7 @@ | 2 | 0.464358 | `azmcp_appconfig_kv_get` | ❌ | | 3 | 0.424344 | `azmcp_appconfig_kv_set` | ❌ | | 4 | 0.422700 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 5 | 0.392236 | `azmcp_appconfig_account_list` | ❌ | +| 5 | 0.392016 | `azmcp_appconfig_account_list` | ❌ | --- @@ -1084,7 +1092,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.632687 | `azmcp_appconfig_kv_get` | ✅ **EXPECTED** | -| 2 | 0.557978 | `azmcp_appconfig_account_list` | ❌ | +| 2 | 0.557810 | `azmcp_appconfig_account_list` | ❌ | | 3 | 0.530884 | `azmcp_appconfig_kv_set` | ❌ | | 4 | 0.464635 | `azmcp_appconfig_kv_delete` | ❌ | | 5 | 0.439089 | `azmcp_appconfig_kv_lock_set` | ❌ | @@ -1101,7 +1109,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.612555 | `azmcp_appconfig_kv_get` | ✅ **EXPECTED** | -| 2 | 0.522661 | `azmcp_appconfig_account_list` | ❌ | +| 2 | 0.522426 | `azmcp_appconfig_account_list` | ❌ | | 3 | 0.512945 | `azmcp_appconfig_kv_set` | ❌ | | 4 | 0.468503 | `azmcp_appconfig_kv_delete` | ❌ | | 5 | 0.457866 | `azmcp_appconfig_kv_lock_set` | ❌ | @@ -1118,7 +1126,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.512883 | `azmcp_appconfig_kv_get` | ✅ **EXPECTED** | -| 2 | 0.450136 | `azmcp_appconfig_account_list` | ❌ | +| 2 | 0.449905 | `azmcp_appconfig_account_list` | ❌ | | 3 | 0.398684 | `azmcp_appconfig_kv_set` | ❌ | | 4 | 0.380614 | `azmcp_appconfig_kv_delete` | ❌ | | 5 | 0.346166 | `azmcp_appconfig_kv_lock_set` | ❌ | @@ -1137,7 +1145,7 @@ | 1 | 0.552300 | `azmcp_appconfig_kv_get` | ✅ **EXPECTED** | | 2 | 0.448912 | `azmcp_appconfig_kv_set` | ❌ | | 3 | 0.441713 | `azmcp_appconfig_kv_delete` | ❌ | -| 4 | 0.437702 | `azmcp_appconfig_account_list` | ❌ | +| 4 | 0.437432 | `azmcp_appconfig_account_list` | ❌ | | 5 | 0.416264 | `azmcp_appconfig_kv_lock_set` | ❌ | --- @@ -1155,7 +1163,7 @@ | 2 | 0.487174 | `azmcp_appconfig_kv_get` | ❌ | | 3 | 0.445551 | `azmcp_appconfig_kv_set` | ❌ | | 4 | 0.431516 | `azmcp_appconfig_kv_delete` | ❌ | -| 5 | 0.373791 | `azmcp_appconfig_account_list` | ❌ | +| 5 | 0.373656 | `azmcp_appconfig_account_list` | ❌ | --- @@ -1172,7 +1180,7 @@ | 2 | 0.505681 | `azmcp_appconfig_kv_get` | ❌ | | 3 | 0.476497 | `azmcp_appconfig_kv_delete` | ❌ | | 4 | 0.425488 | `azmcp_appconfig_kv_set` | ❌ | -| 5 | 0.409619 | `azmcp_appconfig_account_list` | ❌ | +| 5 | 0.409406 | `azmcp_appconfig_account_list` | ❌ | --- @@ -1185,11 +1193,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.609786 | `azmcp_appconfig_kv_set` | ✅ **EXPECTED** | -| 2 | 0.536843 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 3 | 0.512696 | `azmcp_appconfig_kv_get` | ❌ | -| 4 | 0.505851 | `azmcp_appconfig_kv_delete` | ❌ | -| 5 | 0.378255 | `azmcp_appconfig_account_list` | ❌ | +| 1 | 0.609635 | `azmcp_appconfig_kv_set` | ✅ **EXPECTED** | +| 2 | 0.536497 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 3 | 0.512707 | `azmcp_appconfig_kv_get` | ❌ | +| 4 | 0.505571 | `azmcp_appconfig_kv_delete` | ❌ | +| 5 | 0.377919 | `azmcp_appconfig_account_list` | ❌ | --- @@ -1202,7 +1210,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.595632 | `azmcp_applens_resource_diagnose` | ✅ **EXPECTED** | +| 1 | 0.595649 | `azmcp_applens_resource_diagnose` | ✅ **EXPECTED** | | 2 | 0.336090 | `azmcp_deploy_app_logs_get` | ❌ | | 3 | 0.300786 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 4 | 0.273083 | `azmcp_cloudarchitect_design` | ❌ | @@ -1219,7 +1227,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.502361 | `azmcp_applens_resource_diagnose` | ✅ **EXPECTED** | +| 1 | 0.502282 | `azmcp_applens_resource_diagnose` | ✅ **EXPECTED** | | 2 | 0.316297 | `azmcp_deploy_app_logs_get` | ❌ | | 3 | 0.255570 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 4 | 0.249583 | `azmcp_monitor_resource_log_query` | ❌ | @@ -1236,7 +1244,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.492820 | `azmcp_applens_resource_diagnose` | ✅ **EXPECTED** | +| 1 | 0.492458 | `azmcp_applens_resource_diagnose` | ✅ **EXPECTED** | | 2 | 0.256325 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 3 | 0.242574 | `azmcp_cloudarchitect_design` | ❌ | | 4 | 0.225608 | `azmcp_resourcehealth_service-health-events_list` | ❌ | @@ -1271,10 +1279,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.612164 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | -| 2 | 0.473235 | `azmcp_sql_db_update` | ❌ | +| 2 | 0.473224 | `azmcp_sql_db_update` | ❌ | | 3 | 0.471103 | `azmcp_sql_db_create` | ❌ | | 4 | 0.454417 | `azmcp_sql_db_rename` | ❌ | -| 5 | 0.412113 | `azmcp_sql_server_delete` | ❌ | +| 5 | 0.412229 | `azmcp_sql_server_delete` | ❌ | --- @@ -1289,7 +1297,7 @@ |------|-------|------|--------| | 1 | 0.648464 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | | 2 | 0.418902 | `azmcp_sql_db_create` | ❌ | -| 3 | 0.409442 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.409699 | `azmcp_mysql_database_list` | ❌ | | 4 | 0.397907 | `azmcp_sql_db_rename` | ❌ | | 5 | 0.382602 | `azmcp_mysql_server_list` | ❌ | @@ -1305,7 +1313,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.579503 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | -| 2 | 0.449085 | `azmcp_postgres_database_list` | ❌ | +| 2 | 0.449029 | `azmcp_postgres_database_list` | ❌ | | 3 | 0.416337 | `azmcp_postgres_server_param_set` | ❌ | | 4 | 0.409515 | `azmcp_postgres_table_list` | ❌ | | 5 | 0.405431 | `azmcp_postgres_server_list` | ❌ | @@ -1322,10 +1330,10 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.643046 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | -| 2 | 0.477331 | `azmcp_cosmos_database_list` | ❌ | +| 2 | 0.477031 | `azmcp_cosmos_database_list` | ❌ | | 3 | 0.465637 | `azmcp_sql_db_create` | ❌ | | 4 | 0.431581 | `azmcp_sql_db_rename` | ❌ | -| 5 | 0.428345 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 5 | 0.428176 | `azmcp_cosmos_database_container_item_query` | ❌ | --- @@ -1338,11 +1346,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.645416 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | -| 2 | 0.489191 | `azmcp_sql_db_create` | ❌ | -| 3 | 0.439963 | `azmcp_sql_db_rename` | ❌ | -| 4 | 0.431463 | `azmcp_sql_db_delete` | ❌ | -| 5 | 0.425937 | `azmcp_sql_server_delete` | ❌ | +| 1 | 0.645533 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | +| 2 | 0.489228 | `azmcp_sql_db_create` | ❌ | +| 3 | 0.440007 | `azmcp_sql_db_rename` | ❌ | +| 4 | 0.431453 | `azmcp_sql_db_delete` | ❌ | +| 5 | 0.426091 | `azmcp_sql_server_delete` | ❌ | --- @@ -1359,7 +1367,7 @@ | 2 | 0.401714 | `azmcp_sql_db_rename` | ❌ | | 3 | 0.369071 | `azmcp_sql_db_create` | ❌ | | 4 | 0.332119 | `azmcp_appconfig_kv_set` | ❌ | -| 5 | 0.328606 | `azmcp_sql_db_update` | ❌ | +| 5 | 0.328637 | `azmcp_sql_db_update` | ❌ | --- @@ -1375,7 +1383,7 @@ | 1 | 0.536761 | `azmcp_appservice_database_add` | ✅ **EXPECTED** | | 2 | 0.408796 | `azmcp_sql_db_rename` | ❌ | | 3 | 0.394572 | `azmcp_sql_db_create` | ❌ | -| 4 | 0.355285 | `azmcp_sql_db_update` | ❌ | +| 4 | 0.355309 | `azmcp_sql_db_update` | ❌ | | 5 | 0.329110 | `azmcp_keyvault_secret_create` | ❌ | --- @@ -1393,7 +1401,7 @@ | 2 | 0.426753 | `azmcp_sql_db_create` | ❌ | | 3 | 0.392376 | `azmcp_sql_db_rename` | ❌ | | 4 | 0.371892 | `azmcp_sql_db_delete` | ❌ | -| 5 | 0.361127 | `azmcp_cosmos_database_list` | ❌ | +| 5 | 0.361028 | `azmcp_cosmos_database_list` | ❌ | --- @@ -1409,8 +1417,8 @@ | 1 | 0.572473 | `azmcp_applicationinsights_recommendation_list` | ✅ **EXPECTED** | | 2 | 0.445157 | `azmcp_get_bestpractices_get` | ❌ | | 3 | 0.390478 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 4 | 0.383948 | `azmcp_applens_resource_diagnose` | ❌ | -| 5 | 0.375112 | `azmcp_deploy_iac_rules_get` | ❌ | +| 4 | 0.383690 | `azmcp_applens_resource_diagnose` | ❌ | +| 5 | 0.375286 | `azmcp_deploy_iac_rules_get` | ❌ | --- @@ -1425,9 +1433,9 @@ |------|-------|------|--------| | 1 | 0.696531 | `azmcp_applicationinsights_recommendation_list` | ✅ **EXPECTED** | | 2 | 0.468384 | `azmcp_get_bestpractices_get` | ❌ | -| 3 | 0.452231 | `azmcp_applens_resource_diagnose` | ❌ | +| 3 | 0.451827 | `azmcp_applens_resource_diagnose` | ❌ | | 4 | 0.435241 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 5 | 0.424623 | `azmcp_search_service_list` | ❌ | +| 5 | 0.424627 | `azmcp_search_service_list` | ❌ | --- @@ -1443,8 +1451,8 @@ | 1 | 0.626722 | `azmcp_applicationinsights_recommendation_list` | ✅ **EXPECTED** | | 2 | 0.488002 | `azmcp_loadtesting_testresource_list` | ❌ | | 3 | 0.479392 | `azmcp_mysql_server_list` | ❌ | -| 4 | 0.477396 | `azmcp_applens_resource_diagnose` | ❌ | -| 5 | 0.469150 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.477493 | `azmcp_applens_resource_diagnose` | ❌ | +| 5 | 0.468847 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- @@ -1458,7 +1466,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.509502 | `azmcp_applicationinsights_recommendation_list` | ✅ **EXPECTED** | -| 2 | 0.419670 | `azmcp_applens_resource_diagnose` | ❌ | +| 2 | 0.419724 | `azmcp_applens_resource_diagnose` | ❌ | | 3 | 0.383767 | `azmcp_get_bestpractices_get` | ❌ | | 4 | 0.367278 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 5 | 0.343931 | `azmcp_cloudarchitect_design` | ❌ | @@ -1477,8 +1485,8 @@ | 1 | 0.743568 | `azmcp_acr_registry_list` | ✅ **EXPECTED** | | 2 | 0.711580 | `azmcp_acr_registry_repository_list` | ❌ | | 3 | 0.585675 | `azmcp_kusto_cluster_list` | ❌ | -| 4 | 0.541506 | `azmcp_search_service_list` | ❌ | -| 5 | 0.520682 | `azmcp_redis_cluster_list` | ❌ | +| 4 | 0.541551 | `azmcp_search_service_list` | ❌ | +| 5 | 0.520548 | `azmcp_redis_cluster_list` | ❌ | --- @@ -1493,8 +1501,8 @@ |------|-------|------|--------| | 1 | 0.586014 | `azmcp_acr_registry_list` | ✅ **EXPECTED** | | 2 | 0.563636 | `azmcp_acr_registry_repository_list` | ❌ | -| 3 | 0.450287 | `azmcp_storage_blob_container_get` | ❌ | -| 4 | 0.421782 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.450270 | `azmcp_storage_blob_container_get` | ❌ | +| 4 | 0.421808 | `azmcp_redis_cluster_list` | ❌ | | 5 | 0.415552 | `azmcp_cosmos_database_container_list` | ❌ | --- @@ -1511,8 +1519,8 @@ | 1 | 0.637130 | `azmcp_acr_registry_list` | ✅ **EXPECTED** | | 2 | 0.563476 | `azmcp_acr_registry_repository_list` | ❌ | | 3 | 0.516769 | `azmcp_kusto_cluster_list` | ❌ | -| 4 | 0.496387 | `azmcp_redis_cluster_list` | ❌ | -| 5 | 0.483966 | `azmcp_redis_cache_list` | ❌ | +| 4 | 0.496363 | `azmcp_redis_cluster_list` | ❌ | +| 5 | 0.483971 | `azmcp_redis_cache_list` | ❌ | --- @@ -1559,11 +1567,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.627474 | `azmcp_acr_registry_repository_list` | ✅ **EXPECTED** | -| 2 | 0.618588 | `azmcp_acr_registry_list` | ❌ | -| 3 | 0.544388 | `azmcp_kusto_cluster_list` | ❌ | -| 4 | 0.495624 | `azmcp_postgres_server_list` | ❌ | -| 5 | 0.487705 | `azmcp_redis_cluster_list` | ❌ | +| 1 | 0.626482 | `azmcp_acr_registry_repository_list` | ✅ **EXPECTED** | +| 2 | 0.617504 | `azmcp_acr_registry_list` | ❌ | +| 3 | 0.544172 | `azmcp_kusto_cluster_list` | ❌ | +| 4 | 0.495567 | `azmcp_postgres_server_list` | ❌ | +| 5 | 0.487468 | `azmcp_redis_cache_list` | ❌ | --- @@ -1579,8 +1587,8 @@ | 1 | 0.546334 | `azmcp_acr_registry_repository_list` | ✅ **EXPECTED** | | 2 | 0.469295 | `azmcp_acr_registry_list` | ❌ | | 3 | 0.407973 | `azmcp_cosmos_database_container_list` | ❌ | -| 4 | 0.400145 | `azmcp_storage_blob_container_get` | ❌ | -| 5 | 0.356768 | `azmcp_redis_cache_list` | ❌ | +| 4 | 0.400144 | `azmcp_storage_blob_container_get` | ❌ | +| 5 | 0.356797 | `azmcp_redis_cache_list` | ❌ | --- @@ -1596,8 +1604,8 @@ | 1 | 0.674296 | `azmcp_acr_registry_repository_list` | ✅ **EXPECTED** | | 2 | 0.541779 | `azmcp_acr_registry_list` | ❌ | | 3 | 0.433927 | `azmcp_cosmos_database_container_list` | ❌ | -| 4 | 0.388490 | `azmcp_storage_blob_container_get` | ❌ | -| 5 | 0.383183 | `azmcp_kusto_database_list` | ❌ | +| 4 | 0.388458 | `azmcp_storage_blob_container_get` | ❌ | +| 5 | 0.383472 | `azmcp_kusto_database_list` | ❌ | --- @@ -1613,8 +1621,8 @@ | 1 | 0.600780 | `azmcp_acr_registry_repository_list` | ✅ **EXPECTED** | | 2 | 0.501842 | `azmcp_acr_registry_list` | ❌ | | 3 | 0.418623 | `azmcp_cosmos_database_container_list` | ❌ | -| 4 | 0.376964 | `azmcp_redis_cluster_list` | ❌ | -| 5 | 0.376576 | `azmcp_redis_cache_list` | ❌ | +| 4 | 0.377069 | `azmcp_redis_cluster_list` | ❌ | +| 5 | 0.376570 | `azmcp_redis_cache_list` | ❌ | --- @@ -1629,7 +1637,7 @@ |------|-------|------|--------| | 1 | 0.333897 | `azmcp_communication_sms_send` | ✅ **EXPECTED** | | 2 | 0.133969 | `azmcp_foundry_openai_chat-completions-create` | ❌ | -| 3 | 0.130313 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 3 | 0.130280 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | | 4 | 0.118053 | `azmcp_foundry_agents_connect` | ❌ | | 5 | 0.107921 | `azmcp_appconfig_kv_set` | ❌ | @@ -1648,7 +1656,7 @@ | 2 | 0.160250 | `azmcp_loadtesting_testrun_create` | ❌ | | 3 | 0.124785 | `azmcp_loadtesting_testrun_update` | ❌ | | 4 | 0.122917 | `azmcp_foundry_openai_chat-completions-create` | ❌ | -| 5 | 0.113888 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 5 | 0.113887 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | --- @@ -1661,11 +1669,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.369362 | `azmcp_communication_sms_send` | ✅ **EXPECTED** | +| 1 | 0.369451 | `azmcp_communication_sms_send` | ✅ **EXPECTED** | | 2 | 0.139394 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | -| 3 | 0.114744 | `azmcp_foundry_openai_chat-completions-create` | ❌ | +| 3 | 0.114802 | `azmcp_foundry_openai_chat-completions-create` | ❌ | | 4 | 0.100174 | `azmcp_postgres_server_param_set` | ❌ | -| 5 | 0.090464 | `azmcp_redis_cluster_database_list` | ❌ | +| 5 | 0.090513 | `azmcp_foundry_agents_evaluate` | ❌ | --- @@ -1679,8 +1687,8 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.404260 | `azmcp_communication_sms_send` | ✅ **EXPECTED** | -| 2 | 0.191848 | `azmcp_extension_azqr` | ❌ | -| 3 | 0.170680 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 2 | 0.191841 | `azmcp_extension_azqr` | ❌ | +| 3 | 0.170718 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | | 4 | 0.166385 | `azmcp_foundry_openai_chat-completions-create` | ❌ | | 5 | 0.151614 | `azmcp_postgres_server_param_set` | ❌ | @@ -1713,9 +1721,9 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.323344 | `azmcp_communication_sms_send` | ✅ **EXPECTED** | -| 2 | 0.152093 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 2 | 0.152082 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | | 3 | 0.137743 | `azmcp_postgres_server_list` | ❌ | -| 4 | 0.130925 | `azmcp_foundry_agents_evaluate` | ❌ | +| 4 | 0.131475 | `azmcp_foundry_agents_evaluate` | ❌ | | 5 | 0.121663 | `azmcp_eventgrid_events_publish` | ❌ | --- @@ -1733,7 +1741,7 @@ | 2 | 0.173595 | `azmcp_foundry_openai_chat-completions-create` | ❌ | | 3 | 0.165564 | `azmcp_appservice_database_add` | ❌ | | 4 | 0.142296 | `azmcp_foundry_openai_create-completion` | ❌ | -| 5 | 0.135673 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 5 | 0.135610 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | --- @@ -1747,8 +1755,8 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.430235 | `azmcp_communication_sms_send` | ✅ **EXPECTED** | -| 2 | 0.206940 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | -| 3 | 0.187824 | `azmcp_confidentialledger_entries_append` | ❌ | +| 2 | 0.206938 | `azmcp_foundry_agents_query-and-evaluate` | ❌ | +| 3 | 0.187849 | `azmcp_confidentialledger_entries_append` | ❌ | | 4 | 0.181824 | `azmcp_foundry_openai_chat-completions-create` | ❌ | | 5 | 0.162781 | `azmcp_resourcehealth_service-health-events_list` | ❌ | @@ -1763,11 +1771,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.510650 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | -| 2 | 0.292014 | `azmcp_appconfig_kv_set` | ❌ | -| 3 | 0.258967 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 4 | 0.249908 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.240237 | `azmcp_keyvault_secret_create` | ❌ | +| 1 | 0.510952 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | +| 2 | 0.294871 | `azmcp_confidentialledger_entries_get` | ❌ | +| 3 | 0.292014 | `azmcp_appconfig_kv_set` | ❌ | +| 4 | 0.258967 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 5 | 0.249908 | `azmcp_keyvault_certificate_import` | ❌ | --- @@ -1780,11 +1788,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.602247 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | -| 2 | 0.211990 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 3 | 0.195471 | `azmcp_keyvault_secret_create` | ❌ | -| 4 | 0.184077 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.183446 | `azmcp_appconfig_kv_set` | ❌ | +| 1 | 0.602520 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | +| 2 | 0.357666 | `azmcp_confidentialledger_entries_get` | ❌ | +| 3 | 0.211990 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 4 | 0.195471 | `azmcp_keyvault_secret_create` | ❌ | +| 5 | 0.184077 | `azmcp_keyvault_certificate_import` | ❌ | --- @@ -1797,11 +1805,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.546660 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | -| 2 | 0.225141 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 3 | 0.215932 | `azmcp_appconfig_kv_set` | ❌ | -| 4 | 0.211739 | `azmcp_appservice_database_add` | ❌ | -| 5 | 0.203262 | `azmcp_keyvault_certificate_import` | ❌ | +| 1 | 0.546796 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | +| 2 | 0.452017 | `azmcp_confidentialledger_entries_get` | ❌ | +| 3 | 0.225141 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 4 | 0.215932 | `azmcp_appconfig_kv_set` | ❌ | +| 5 | 0.211739 | `azmcp_appservice_database_add` | ❌ | --- @@ -1814,11 +1822,11 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.496023 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | -| 2 | 0.204925 | `azmcp_monitor_resource_log_query` | ❌ | -| 3 | 0.198615 | `azmcp_deploy_app_logs_get` | ❌ | -| 4 | 0.195282 | `azmcp_loadtesting_testrun_create` | ❌ | -| 5 | 0.188134 | `azmcp_storage_blob_container_create` | ❌ | +| 1 | 0.496199 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | +| 2 | 0.340306 | `azmcp_confidentialledger_entries_get` | ❌ | +| 3 | 0.204925 | `azmcp_monitor_resource_log_query` | ❌ | +| 4 | 0.198615 | `azmcp_deploy_app_logs_get` | ❌ | +| 5 | 0.195282 | `azmcp_loadtesting_testrun_create` | ❌ | --- @@ -1831,16 +1839,50 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.622138 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | -| 2 | 0.252508 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 3 | 0.240252 | `azmcp_keyvault_secret_create` | ❌ | -| 4 | 0.186890 | `azmcp_appconfig_kv_set` | ❌ | -| 5 | 0.184855 | `azmcp_keyvault_certificate_import` | ❌ | +| 1 | 0.622278 | `azmcp_confidentialledger_entries_append` | ✅ **EXPECTED** | +| 2 | 0.524680 | `azmcp_confidentialledger_entries_get` | ❌ | +| 3 | 0.252508 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 4 | 0.240252 | `azmcp_keyvault_secret_create` | ❌ | +| 5 | 0.186890 | `azmcp_appconfig_kv_set` | ❌ | --- ## Test 85 +**Expected Tool:** `azmcp_confidentialledger_entries_get` +**Prompt:** Get entry from Confidential Ledger for transaction on ledger + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.707236 | `azmcp_confidentialledger_entries_get` | ✅ **EXPECTED** | +| 2 | 0.551721 | `azmcp_confidentialledger_entries_append` | ❌ | +| 3 | 0.245541 | `azmcp_keyvault_secret_get` | ❌ | +| 4 | 0.231203 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.211839 | `azmcp_loadtesting_testrun_get` | ❌ | + +--- + +## Test 86 + +**Expected Tool:** `azmcp_confidentialledger_entries_get` +**Prompt:** Get transaction from ledger + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.509649 | `azmcp_confidentialledger_entries_get` | ✅ **EXPECTED** | +| 2 | 0.416389 | `azmcp_confidentialledger_entries_append` | ❌ | +| 3 | 0.223959 | `azmcp_loadtesting_testrun_get` | ❌ | +| 4 | 0.218412 | `azmcp_monitor_resource_log_query` | ❌ | +| 5 | 0.217671 | `azmcp_loadtesting_testrun_list` | ❌ | + +--- + +## Test 87 + **Expected Tool:** `azmcp_cosmos_account_list` **Prompt:** List all cosmosdb accounts in my subscription @@ -1849,14 +1891,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.818357 | `azmcp_cosmos_account_list` | ✅ **EXPECTED** | -| 2 | 0.668839 | `azmcp_cosmos_database_list` | ❌ | -| 3 | 0.636036 | `azmcp_subscription_list` | ❌ | -| 4 | 0.615268 | `azmcp_cosmos_database_container_list` | ❌ | -| 5 | 0.601467 | `azmcp_kusto_cluster_list` | ❌ | +| 2 | 0.668480 | `azmcp_cosmos_database_list` | ❌ | +| 3 | 0.639373 | `azmcp_tables_list` | ❌ | +| 4 | 0.636036 | `azmcp_subscription_list` | ❌ | +| 5 | 0.615268 | `azmcp_cosmos_database_container_list` | ❌ | --- -## Test 86 +## Test 88 **Expected Tool:** `azmcp_cosmos_account_list` **Prompt:** Show me my cosmosdb accounts @@ -1866,14 +1908,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.665447 | `azmcp_cosmos_account_list` | ✅ **EXPECTED** | -| 2 | 0.605842 | `azmcp_cosmos_database_list` | ❌ | +| 2 | 0.605357 | `azmcp_cosmos_database_list` | ❌ | | 3 | 0.571613 | `azmcp_cosmos_database_container_list` | ❌ | -| 4 | 0.549079 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.494741 | `azmcp_subscription_list` | ❌ | +| 4 | 0.561518 | `azmcp_tables_list` | ❌ | +| 5 | 0.549693 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 87 +## Test 89 **Expected Tool:** `azmcp_cosmos_account_list` **Prompt:** Show me the cosmosdb accounts in my subscription @@ -1884,13 +1926,13 @@ |------|-------|------|--------| | 1 | 0.752494 | `azmcp_cosmos_account_list` | ✅ **EXPECTED** | | 2 | 0.607201 | `azmcp_subscription_list` | ❌ | -| 3 | 0.605588 | `azmcp_cosmos_database_list` | ❌ | -| 4 | 0.566249 | `azmcp_cosmos_database_container_list` | ❌ | -| 5 | 0.563527 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 3 | 0.605125 | `azmcp_cosmos_database_list` | ❌ | +| 4 | 0.582192 | `azmcp_tables_list` | ❌ | +| 5 | 0.566249 | `azmcp_cosmos_database_container_list` | ❌ | --- -## Test 88 +## Test 90 **Expected Tool:** `azmcp_cosmos_database_container_item_query` **Prompt:** Show me the items that contain the word in the container in the database for the cosmosdb account @@ -1899,15 +1941,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.658589 | `azmcp_cosmos_database_container_item_query` | ✅ **EXPECTED** | +| 1 | 0.658908 | `azmcp_cosmos_database_container_item_query` | ✅ **EXPECTED** | | 2 | 0.605253 | `azmcp_cosmos_database_container_list` | ❌ | -| 3 | 0.478215 | `azmcp_cosmos_database_list` | ❌ | -| 4 | 0.447757 | `azmcp_cosmos_account_list` | ❌ | -| 5 | 0.445640 | `azmcp_storage_blob_container_get` | ❌ | +| 3 | 0.481844 | `azmcp_tables_list` | ❌ | +| 4 | 0.477874 | `azmcp_cosmos_database_list` | ❌ | +| 5 | 0.447757 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 89 +## Test 91 **Expected Tool:** `azmcp_cosmos_database_container_list` **Prompt:** List all the containers in the database for the cosmosdb account @@ -1916,15 +1958,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.852812 | `azmcp_cosmos_database_container_list` | ✅ **EXPECTED** | -| 2 | 0.681380 | `azmcp_cosmos_database_list` | ❌ | -| 3 | 0.680112 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 4 | 0.630485 | `azmcp_cosmos_account_list` | ❌ | -| 5 | 0.581678 | `azmcp_storage_blob_container_get` | ❌ | +| 1 | 0.852296 | `azmcp_cosmos_database_container_list` | ✅ **EXPECTED** | +| 2 | 0.680852 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 3 | 0.680608 | `azmcp_cosmos_database_list` | ❌ | +| 4 | 0.649594 | `azmcp_tables_list` | ❌ | +| 5 | 0.630144 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 90 +## Test 92 **Expected Tool:** `azmcp_cosmos_database_container_list` **Prompt:** Show me the containers in the database for the cosmosdb account @@ -1933,15 +1975,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.789395 | `azmcp_cosmos_database_container_list` | ✅ **EXPECTED** | -| 2 | 0.647774 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 3 | 0.614882 | `azmcp_cosmos_database_list` | ❌ | -| 4 | 0.562062 | `azmcp_cosmos_account_list` | ❌ | -| 5 | 0.537286 | `azmcp_storage_blob_container_get` | ❌ | +| 1 | 0.789415 | `azmcp_cosmos_database_container_list` | ✅ **EXPECTED** | +| 2 | 0.648383 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 3 | 0.614268 | `azmcp_cosmos_database_list` | ❌ | +| 4 | 0.574272 | `azmcp_tables_list` | ❌ | +| 5 | 0.562124 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 91 +## Test 93 **Expected Tool:** `azmcp_cosmos_database_list` **Prompt:** List all the databases in the cosmosdb account @@ -1950,15 +1992,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.815935 | `azmcp_cosmos_database_list` | ✅ **EXPECTED** | -| 2 | 0.668515 | `azmcp_cosmos_account_list` | ❌ | -| 3 | 0.665298 | `azmcp_cosmos_database_container_list` | ❌ | -| 4 | 0.606198 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.583535 | `azmcp_kusto_database_list` | ❌ | +| 1 | 0.815683 | `azmcp_cosmos_database_list` | ✅ **EXPECTED** | +| 2 | 0.675181 | `azmcp_tables_list` | ❌ | +| 3 | 0.668515 | `azmcp_cosmos_account_list` | ❌ | +| 4 | 0.665298 | `azmcp_cosmos_database_container_list` | ❌ | +| 5 | 0.606849 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 92 +## Test 94 **Expected Tool:** `azmcp_cosmos_database_list` **Prompt:** Show me the databases in the cosmosdb account @@ -1967,15 +2009,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.749725 | `azmcp_cosmos_database_list` | ✅ **EXPECTED** | +| 1 | 0.749370 | `azmcp_cosmos_database_list` | ✅ **EXPECTED** | | 2 | 0.624759 | `azmcp_cosmos_database_container_list` | ❌ | -| 3 | 0.614572 | `azmcp_cosmos_account_list` | ❌ | -| 4 | 0.579676 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.537602 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.618471 | `azmcp_tables_list` | ❌ | +| 4 | 0.614572 | `azmcp_cosmos_account_list` | ❌ | +| 5 | 0.580203 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 93 +## Test 95 **Expected Tool:** `azmcp_kusto_cluster_get` **Prompt:** Show me the details of the Data Explorer cluster @@ -1985,14 +2027,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.590264 | `azmcp_kusto_cluster_get` | ✅ **EXPECTED** | -| 2 | 0.485634 | `azmcp_redis_cluster_list` | ❌ | +| 2 | 0.485309 | `azmcp_redis_cluster_list` | ❌ | | 3 | 0.463832 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.428159 | `azmcp_kusto_query` | ❌ | -| 5 | 0.425669 | `azmcp_kusto_database_list` | ❌ | +| 5 | 0.425414 | `azmcp_kusto_database_list` | ❌ | --- -## Test 94 +## Test 96 **Expected Tool:** `azmcp_kusto_cluster_list` **Prompt:** List all Data Explorer clusters in my subscription @@ -2002,14 +2044,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.793744 | `azmcp_kusto_cluster_list` | ✅ **EXPECTED** | -| 2 | 0.653953 | `azmcp_redis_cluster_list` | ❌ | -| 3 | 0.630507 | `azmcp_kusto_database_list` | ❌ | +| 2 | 0.653371 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.630496 | `azmcp_kusto_database_list` | ❌ | | 4 | 0.573395 | `azmcp_kusto_cluster_get` | ❌ | -| 5 | 0.509397 | `azmcp_grafana_list` | ❌ | +| 5 | 0.509424 | `azmcp_grafana_list` | ❌ | --- -## Test 95 +## Test 97 **Expected Tool:** `azmcp_kusto_cluster_list` **Prompt:** Show me my Data Explorer clusters @@ -2018,15 +2060,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.531307 | `azmcp_kusto_cluster_list` | ✅ **EXPECTED** | -| 2 | 0.510128 | `azmcp_redis_cluster_list` | ❌ | -| 3 | 0.465277 | `azmcp_kusto_cluster_get` | ❌ | -| 4 | 0.432288 | `azmcp_kusto_database_list` | ❌ | -| 5 | 0.391087 | `azmcp_redis_cluster_database_list` | ❌ | +| 1 | 0.531180 | `azmcp_kusto_cluster_list` | ✅ **EXPECTED** | +| 2 | 0.509946 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.465214 | `azmcp_kusto_cluster_get` | ❌ | +| 4 | 0.431950 | `azmcp_kusto_database_list` | ❌ | +| 5 | 0.391010 | `azmcp_redis_cluster_database_list` | ❌ | --- -## Test 96 +## Test 98 **Expected Tool:** `azmcp_kusto_cluster_list` **Prompt:** Show me the Data Explorer clusters in my subscription @@ -2036,14 +2078,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.701484 | `azmcp_kusto_cluster_list` | ✅ **EXPECTED** | -| 2 | 0.616729 | `azmcp_redis_cluster_list` | ❌ | +| 2 | 0.616448 | `azmcp_redis_cluster_list` | ❌ | | 3 | 0.571191 | `azmcp_kusto_cluster_get` | ❌ | -| 4 | 0.548685 | `azmcp_kusto_database_list` | ❌ | -| 5 | 0.462945 | `azmcp_grafana_list` | ❌ | +| 4 | 0.548604 | `azmcp_kusto_database_list` | ❌ | +| 5 | 0.462956 | `azmcp_grafana_list` | ❌ | --- -## Test 97 +## Test 99 **Expected Tool:** `azmcp_kusto_database_list` **Prompt:** List all databases in the Data Explorer cluster @@ -2052,15 +2094,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.677059 | `azmcp_kusto_database_list` | ✅ **EXPECTED** | +| 1 | 0.676733 | `azmcp_kusto_database_list` | ✅ **EXPECTED** | | 2 | 0.628129 | `azmcp_redis_cluster_database_list` | ❌ | | 3 | 0.560592 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.556795 | `azmcp_kusto_table_list` | ❌ | -| 5 | 0.553218 | `azmcp_postgres_database_list` | ❌ | +| 5 | 0.553191 | `azmcp_postgres_database_list` | ❌ | --- -## Test 98 +## Test 100 **Expected Tool:** `azmcp_kusto_database_list` **Prompt:** Show me the databases in the Data Explorer cluster @@ -2069,15 +2111,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.623523 | `azmcp_kusto_database_list` | ✅ **EXPECTED** | +| 1 | 0.623149 | `azmcp_kusto_database_list` | ✅ **EXPECTED** | | 2 | 0.597975 | `azmcp_redis_cluster_database_list` | ❌ | | 3 | 0.509952 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.507073 | `azmcp_kusto_table_list` | ❌ | -| 5 | 0.497363 | `azmcp_cosmos_database_list` | ❌ | +| 5 | 0.497144 | `azmcp_cosmos_database_list` | ❌ | --- -## Test 99 +## Test 101 **Expected Tool:** `azmcp_kusto_query` **Prompt:** Show me all items that contain the word in the Data Explorer table in cluster @@ -2094,7 +2136,7 @@ --- -## Test 100 +## Test 102 **Expected Tool:** `azmcp_kusto_sample` **Prompt:** Show me a data sample from the Data Explorer table in cluster @@ -2111,7 +2153,7 @@ --- -## Test 101 +## Test 103 **Expected Tool:** `azmcp_kusto_table_list` **Prompt:** List all tables in the Data Explorer database in cluster @@ -2122,13 +2164,13 @@ |------|-------|------|--------| | 1 | 0.679642 | `azmcp_kusto_table_list` | ✅ **EXPECTED** | | 2 | 0.585237 | `azmcp_postgres_table_list` | ❌ | -| 3 | 0.581207 | `azmcp_kusto_database_list` | ❌ | -| 4 | 0.556724 | `azmcp_mysql_table_list` | ❌ | -| 5 | 0.549917 | `azmcp_monitor_table_list` | ❌ | +| 3 | 0.580838 | `azmcp_kusto_database_list` | ❌ | +| 4 | 0.568527 | `azmcp_tables_list` | ❌ | +| 5 | 0.556724 | `azmcp_mysql_table_list` | ❌ | --- -## Test 102 +## Test 104 **Expected Tool:** `azmcp_kusto_table_list` **Prompt:** Show me the tables in the Data Explorer database in cluster @@ -2139,13 +2181,13 @@ |------|-------|------|--------| | 1 | 0.619252 | `azmcp_kusto_table_list` | ✅ **EXPECTED** | | 2 | 0.554332 | `azmcp_kusto_table_schema` | ❌ | -| 3 | 0.527625 | `azmcp_kusto_database_list` | ❌ | +| 3 | 0.527221 | `azmcp_kusto_database_list` | ❌ | | 4 | 0.524691 | `azmcp_mysql_table_list` | ❌ | | 5 | 0.523432 | `azmcp_postgres_table_list` | ❌ | --- -## Test 103 +## Test 105 **Expected Tool:** `azmcp_kusto_table_schema` **Prompt:** Show me the schema for table in the Data Explorer database in cluster @@ -2154,15 +2196,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.667040 | `azmcp_kusto_table_schema` | ✅ **EXPECTED** | -| 2 | 0.564459 | `azmcp_postgres_table_schema_get` | ❌ | -| 3 | 0.528398 | `azmcp_mysql_table_schema_get` | ❌ | -| 4 | 0.490723 | `azmcp_kusto_sample` | ❌ | -| 5 | 0.489704 | `azmcp_kusto_table_list` | ❌ | +| 1 | 0.667052 | `azmcp_kusto_table_schema` | ✅ **EXPECTED** | +| 2 | 0.564311 | `azmcp_postgres_table_schema_get` | ❌ | +| 3 | 0.527917 | `azmcp_mysql_table_schema_get` | ❌ | +| 4 | 0.490904 | `azmcp_kusto_sample` | ❌ | +| 5 | 0.489680 | `azmcp_kusto_table_list` | ❌ | --- -## Test 104 +## Test 106 **Expected Tool:** `azmcp_mysql_database_list` **Prompt:** List all MySQL databases in server @@ -2171,15 +2213,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.634056 | `azmcp_postgres_database_list` | ❌ | -| 2 | 0.622465 | `azmcp_mysql_database_list` | ✅ **EXPECTED** | +| 1 | 0.633968 | `azmcp_postgres_database_list` | ❌ | +| 2 | 0.623423 | `azmcp_mysql_database_list` | ✅ **EXPECTED** | | 3 | 0.534457 | `azmcp_mysql_table_list` | ❌ | | 4 | 0.498918 | `azmcp_mysql_server_list` | ❌ | | 5 | 0.490148 | `azmcp_sql_db_list` | ❌ | --- -## Test 105 +## Test 107 **Expected Tool:** `azmcp_mysql_database_list` **Prompt:** Show me the MySQL databases in server @@ -2188,15 +2230,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.587357 | `azmcp_mysql_database_list` | ✅ **EXPECTED** | -| 2 | 0.574089 | `azmcp_postgres_database_list` | ❌ | +| 1 | 0.588120 | `azmcp_mysql_database_list` | ✅ **EXPECTED** | +| 2 | 0.573961 | `azmcp_postgres_database_list` | ❌ | | 3 | 0.483855 | `azmcp_mysql_table_list` | ❌ | | 4 | 0.463244 | `azmcp_mysql_server_list` | ❌ | | 5 | 0.448169 | `azmcp_redis_cluster_database_list` | ❌ | --- -## Test 106 +## Test 108 **Expected Tool:** `azmcp_mysql_database_query` **Prompt:** Show me all items that contain the word in the MySQL database in server @@ -2205,15 +2247,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.476472 | `azmcp_mysql_table_list` | ❌ | -| 2 | 0.455003 | `azmcp_mysql_database_list` | ❌ | -| 3 | 0.433589 | `azmcp_mysql_database_query` | ✅ **EXPECTED** | -| 4 | 0.419944 | `azmcp_mysql_server_list` | ❌ | -| 5 | 0.409790 | `azmcp_mysql_table_schema_get` | ❌ | +| 1 | 0.476423 | `azmcp_mysql_table_list` | ❌ | +| 2 | 0.455790 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.432703 | `azmcp_mysql_database_query` | ✅ **EXPECTED** | +| 4 | 0.419859 | `azmcp_mysql_server_list` | ❌ | +| 5 | 0.409445 | `azmcp_mysql_table_schema_get` | ❌ | --- -## Test 107 +## Test 109 **Expected Tool:** `azmcp_mysql_server_config_get` **Prompt:** Show me the configuration of MySQL server @@ -2222,15 +2264,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.531887 | `azmcp_postgres_server_config_get` | ❌ | -| 2 | 0.516159 | `azmcp_mysql_server_param_set` | ❌ | +| 1 | 0.531929 | `azmcp_postgres_server_config_get` | ❌ | +| 2 | 0.516893 | `azmcp_mysql_server_param_set` | ❌ | | 3 | 0.489816 | `azmcp_mysql_server_config_get` | ✅ **EXPECTED** | | 4 | 0.476863 | `azmcp_mysql_server_param_get` | ❌ | -| 5 | 0.426750 | `azmcp_mysql_table_schema_get` | ❌ | +| 5 | 0.426507 | `azmcp_mysql_table_schema_get` | ❌ | --- -## Test 108 +## Test 110 **Expected Tool:** `azmcp_mysql_server_list` **Prompt:** List all MySQL servers in my subscription @@ -2240,14 +2282,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.678473 | `azmcp_postgres_server_list` | ❌ | -| 2 | 0.556900 | `azmcp_mysql_database_list` | ❌ | +| 2 | 0.558214 | `azmcp_mysql_database_list` | ❌ | | 3 | 0.554818 | `azmcp_mysql_server_list` | ✅ **EXPECTED** | | 4 | 0.513706 | `azmcp_kusto_cluster_list` | ❌ | | 5 | 0.501199 | `azmcp_mysql_table_list` | ❌ | --- -## Test 109 +## Test 111 **Expected Tool:** `azmcp_mysql_server_list` **Prompt:** Show me my MySQL servers @@ -2256,15 +2298,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.476765 | `azmcp_mysql_database_list` | ❌ | +| 1 | 0.478575 | `azmcp_mysql_database_list` | ❌ | | 2 | 0.474586 | `azmcp_mysql_server_list` | ✅ **EXPECTED** | | 3 | 0.435642 | `azmcp_postgres_server_list` | ❌ | | 4 | 0.412380 | `azmcp_mysql_table_list` | ❌ | -| 5 | 0.389993 | `azmcp_postgres_database_list` | ❌ | +| 5 | 0.389882 | `azmcp_postgres_database_list` | ❌ | --- -## Test 110 +## Test 112 **Expected Tool:** `azmcp_mysql_server_list` **Prompt:** Show me the MySQL servers in my subscription @@ -2273,15 +2315,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.636435 | `azmcp_postgres_server_list` | ❌ | -| 2 | 0.534266 | `azmcp_mysql_server_list` | ✅ **EXPECTED** | -| 3 | 0.529809 | `azmcp_mysql_database_list` | ❌ | -| 4 | 0.487878 | `azmcp_redis_cluster_list` | ❌ | -| 5 | 0.475052 | `azmcp_kusto_cluster_list` | ❌ | +| 1 | 0.636457 | `azmcp_postgres_server_list` | ❌ | +| 2 | 0.534419 | `azmcp_mysql_server_list` | ✅ **EXPECTED** | +| 3 | 0.530434 | `azmcp_mysql_database_list` | ❌ | +| 4 | 0.487906 | `azmcp_redis_cluster_list` | ❌ | +| 5 | 0.475119 | `azmcp_kusto_cluster_list` | ❌ | --- -## Test 111 +## Test 113 **Expected Tool:** `azmcp_mysql_server_param_get` **Prompt:** Show me the value of connection timeout in seconds in my MySQL server @@ -2291,14 +2333,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.495071 | `azmcp_mysql_server_param_get` | ✅ **EXPECTED** | -| 2 | 0.437567 | `azmcp_mysql_server_param_set` | ❌ | -| 3 | 0.333841 | `azmcp_mysql_database_query` | ❌ | -| 4 | 0.313364 | `azmcp_mysql_table_schema_get` | ❌ | -| 5 | 0.310782 | `azmcp_postgres_server_param_get` | ❌ | +| 2 | 0.438075 | `azmcp_mysql_server_param_set` | ❌ | +| 3 | 0.333041 | `azmcp_mysql_database_query` | ❌ | +| 4 | 0.313150 | `azmcp_mysql_table_schema_get` | ❌ | +| 5 | 0.310834 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 112 +## Test 114 **Expected Tool:** `azmcp_mysql_server_param_set` **Prompt:** Set connection timeout to 20 seconds for my MySQL server @@ -2307,15 +2349,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.448951 | `azmcp_mysql_server_param_set` | ✅ **EXPECTED** | +| 1 | 0.449419 | `azmcp_mysql_server_param_set` | ✅ **EXPECTED** | | 2 | 0.381144 | `azmcp_mysql_server_param_get` | ❌ | | 3 | 0.303499 | `azmcp_postgres_server_param_set` | ❌ | -| 4 | 0.298911 | `azmcp_mysql_database_query` | ❌ | +| 4 | 0.298661 | `azmcp_mysql_database_query` | ❌ | | 5 | 0.277569 | `azmcp_appservice_database_add` | ❌ | --- -## Test 113 +## Test 115 **Expected Tool:** `azmcp_mysql_table_list` **Prompt:** List all tables in the MySQL database in server @@ -2326,13 +2368,13 @@ |------|-------|------|--------| | 1 | 0.633448 | `azmcp_mysql_table_list` | ✅ **EXPECTED** | | 2 | 0.573844 | `azmcp_postgres_table_list` | ❌ | -| 3 | 0.550898 | `azmcp_postgres_database_list` | ❌ | -| 4 | 0.545614 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.550833 | `azmcp_postgres_database_list` | ❌ | +| 4 | 0.546957 | `azmcp_mysql_database_list` | ❌ | | 5 | 0.511847 | `azmcp_kusto_table_list` | ❌ | --- -## Test 114 +## Test 116 **Expected Tool:** `azmcp_mysql_table_list` **Prompt:** Show me the tables in the MySQL database in server @@ -2343,13 +2385,13 @@ |------|-------|------|--------| | 1 | 0.609131 | `azmcp_mysql_table_list` | ✅ **EXPECTED** | | 2 | 0.526236 | `azmcp_postgres_table_list` | ❌ | -| 3 | 0.524372 | `azmcp_mysql_database_list` | ❌ | -| 4 | 0.507532 | `azmcp_mysql_table_schema_get` | ❌ | -| 5 | 0.498050 | `azmcp_postgres_database_list` | ❌ | +| 3 | 0.525718 | `azmcp_mysql_database_list` | ❌ | +| 4 | 0.507258 | `azmcp_mysql_table_schema_get` | ❌ | +| 5 | 0.497934 | `azmcp_postgres_database_list` | ❌ | --- -## Test 115 +## Test 117 **Expected Tool:** `azmcp_mysql_table_schema_get` **Prompt:** Show me the schema of table in the MySQL database in server @@ -2358,15 +2400,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.630824 | `azmcp_mysql_table_schema_get` | ✅ **EXPECTED** | +| 1 | 0.630623 | `azmcp_mysql_table_schema_get` | ✅ **EXPECTED** | | 2 | 0.558306 | `azmcp_postgres_table_schema_get` | ❌ | | 3 | 0.545025 | `azmcp_mysql_table_list` | ❌ | | 4 | 0.517419 | `azmcp_kusto_table_schema` | ❌ | -| 5 | 0.455880 | `azmcp_mysql_database_list` | ❌ | +| 5 | 0.457794 | `azmcp_mysql_database_list` | ❌ | --- -## Test 116 +## Test 118 **Expected Tool:** `azmcp_postgres_database_list` **Prompt:** List all PostgreSQL databases in server @@ -2375,15 +2417,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.815617 | `azmcp_postgres_database_list` | ✅ **EXPECTED** | +| 1 | 0.815496 | `azmcp_postgres_database_list` | ✅ **EXPECTED** | | 2 | 0.644014 | `azmcp_postgres_table_list` | ❌ | | 3 | 0.622790 | `azmcp_postgres_server_list` | ❌ | -| 4 | 0.542685 | `azmcp_postgres_server_config_get` | ❌ | -| 5 | 0.490955 | `azmcp_postgres_server_param_get` | ❌ | +| 4 | 0.542730 | `azmcp_postgres_server_config_get` | ❌ | +| 5 | 0.490904 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 117 +## Test 119 **Expected Tool:** `azmcp_postgres_database_list` **Prompt:** Show me the PostgreSQL databases in server @@ -2392,15 +2434,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.760033 | `azmcp_postgres_database_list` | ✅ **EXPECTED** | +| 1 | 0.759870 | `azmcp_postgres_database_list` | ✅ **EXPECTED** | | 2 | 0.589784 | `azmcp_postgres_server_list` | ❌ | | 3 | 0.585891 | `azmcp_postgres_table_list` | ❌ | -| 4 | 0.552660 | `azmcp_postgres_server_config_get` | ❌ | -| 5 | 0.495683 | `azmcp_postgres_server_param_get` | ❌ | +| 4 | 0.552687 | `azmcp_postgres_server_config_get` | ❌ | +| 5 | 0.495629 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 118 +## Test 120 **Expected Tool:** `azmcp_postgres_database_query` **Prompt:** Show me all items that contain the word in the PostgreSQL database in server @@ -2409,15 +2451,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.546211 | `azmcp_postgres_database_list` | ❌ | -| 2 | 0.523142 | `azmcp_postgres_database_query` | ✅ **EXPECTED** | -| 3 | 0.503267 | `azmcp_postgres_table_list` | ❌ | -| 4 | 0.466599 | `azmcp_postgres_server_list` | ❌ | -| 5 | 0.403954 | `azmcp_postgres_server_param_get` | ❌ | +| 1 | 0.546096 | `azmcp_postgres_database_list` | ❌ | +| 2 | 0.523082 | `azmcp_postgres_database_query` | ✅ **EXPECTED** | +| 3 | 0.503246 | `azmcp_postgres_table_list` | ❌ | +| 4 | 0.466575 | `azmcp_postgres_server_list` | ❌ | +| 5 | 0.403785 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 119 +## Test 121 **Expected Tool:** `azmcp_postgres_server_config_get` **Prompt:** Show me the configuration of PostgreSQL server @@ -2426,15 +2468,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.756593 | `azmcp_postgres_server_config_get` | ✅ **EXPECTED** | +| 1 | 0.756571 | `azmcp_postgres_server_config_get` | ✅ **EXPECTED** | | 2 | 0.615429 | `azmcp_postgres_server_param_set` | ❌ | -| 3 | 0.599518 | `azmcp_postgres_server_param_get` | ❌ | -| 4 | 0.535050 | `azmcp_postgres_database_list` | ❌ | +| 3 | 0.599471 | `azmcp_postgres_server_param_get` | ❌ | +| 4 | 0.534868 | `azmcp_postgres_database_list` | ❌ | | 5 | 0.518574 | `azmcp_postgres_server_list` | ❌ | --- -## Test 120 +## Test 122 **Expected Tool:** `azmcp_postgres_server_list` **Prompt:** List all PostgreSQL servers in my subscription @@ -2444,14 +2486,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.900023 | `azmcp_postgres_server_list` | ✅ **EXPECTED** | -| 2 | 0.640733 | `azmcp_postgres_database_list` | ❌ | +| 2 | 0.640606 | `azmcp_postgres_database_list` | ❌ | | 3 | 0.565914 | `azmcp_postgres_table_list` | ❌ | -| 4 | 0.538997 | `azmcp_postgres_server_config_get` | ❌ | +| 4 | 0.539012 | `azmcp_postgres_server_config_get` | ❌ | | 5 | 0.534239 | `azmcp_kusto_cluster_list` | ❌ | --- -## Test 121 +## Test 123 **Expected Tool:** `azmcp_postgres_server_list` **Prompt:** Show me my PostgreSQL servers @@ -2461,14 +2503,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.674327 | `azmcp_postgres_server_list` | ✅ **EXPECTED** | -| 2 | 0.607062 | `azmcp_postgres_database_list` | ❌ | -| 3 | 0.576348 | `azmcp_postgres_server_config_get` | ❌ | +| 2 | 0.606903 | `azmcp_postgres_database_list` | ❌ | +| 3 | 0.576339 | `azmcp_postgres_server_config_get` | ❌ | | 4 | 0.522995 | `azmcp_postgres_table_list` | ❌ | -| 5 | 0.506262 | `azmcp_postgres_server_param_get` | ❌ | +| 5 | 0.506171 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 122 +## Test 124 **Expected Tool:** `azmcp_postgres_server_list` **Prompt:** Show me the PostgreSQL servers in my subscription @@ -2478,14 +2520,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.832155 | `azmcp_postgres_server_list` | ✅ **EXPECTED** | -| 2 | 0.579232 | `azmcp_postgres_database_list` | ❌ | -| 3 | 0.531804 | `azmcp_postgres_server_config_get` | ❌ | +| 2 | 0.579078 | `azmcp_postgres_database_list` | ❌ | +| 3 | 0.531814 | `azmcp_postgres_server_config_get` | ❌ | | 4 | 0.514445 | `azmcp_postgres_table_list` | ❌ | -| 5 | 0.505970 | `azmcp_postgres_server_param_get` | ❌ | +| 5 | 0.505869 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 123 +## Test 125 **Expected Tool:** `azmcp_postgres_server_param_get` **Prompt:** Show me if the parameter my PostgreSQL server has replication enabled @@ -2494,15 +2536,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.594733 | `azmcp_postgres_server_param_get` | ✅ **EXPECTED** | +| 1 | 0.594753 | `azmcp_postgres_server_param_get` | ✅ **EXPECTED** | | 2 | 0.552678 | `azmcp_postgres_server_param_set` | ❌ | -| 3 | 0.539671 | `azmcp_postgres_server_config_get` | ❌ | +| 3 | 0.539673 | `azmcp_postgres_server_config_get` | ❌ | | 4 | 0.489693 | `azmcp_postgres_server_list` | ❌ | -| 5 | 0.451871 | `azmcp_postgres_database_list` | ❌ | +| 5 | 0.451742 | `azmcp_postgres_database_list` | ❌ | --- -## Test 124 +## Test 126 **Expected Tool:** `azmcp_postgres_server_param_set` **Prompt:** Enable replication for my PostgreSQL server @@ -2512,14 +2554,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.579873 | `azmcp_postgres_server_param_set` | ✅ **EXPECTED** | -| 2 | 0.488474 | `azmcp_postgres_server_config_get` | ❌ | +| 2 | 0.488469 | `azmcp_postgres_server_config_get` | ❌ | | 3 | 0.469794 | `azmcp_postgres_server_list` | ❌ | -| 4 | 0.447026 | `azmcp_postgres_server_param_get` | ❌ | -| 5 | 0.440760 | `azmcp_postgres_database_list` | ❌ | +| 4 | 0.447011 | `azmcp_postgres_server_param_get` | ❌ | +| 5 | 0.440620 | `azmcp_postgres_database_list` | ❌ | --- -## Test 125 +## Test 127 **Expected Tool:** `azmcp_postgres_table_list` **Prompt:** List all tables in the PostgreSQL database in server @@ -2529,14 +2571,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.789883 | `azmcp_postgres_table_list` | ✅ **EXPECTED** | -| 2 | 0.750580 | `azmcp_postgres_database_list` | ❌ | +| 2 | 0.750489 | `azmcp_postgres_database_list` | ❌ | | 3 | 0.574931 | `azmcp_postgres_server_list` | ❌ | | 4 | 0.519820 | `azmcp_postgres_table_schema_get` | ❌ | -| 5 | 0.501400 | `azmcp_postgres_server_config_get` | ❌ | +| 5 | 0.501418 | `azmcp_postgres_server_config_get` | ❌ | --- -## Test 126 +## Test 128 **Expected Tool:** `azmcp_postgres_table_list` **Prompt:** Show me the tables in the PostgreSQL database in server @@ -2546,14 +2588,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.736083 | `azmcp_postgres_table_list` | ✅ **EXPECTED** | -| 2 | 0.690112 | `azmcp_postgres_database_list` | ❌ | +| 2 | 0.689974 | `azmcp_postgres_database_list` | ❌ | | 3 | 0.558357 | `azmcp_postgres_table_schema_get` | ❌ | | 4 | 0.543331 | `azmcp_postgres_server_list` | ❌ | -| 5 | 0.521570 | `azmcp_postgres_server_config_get` | ❌ | +| 5 | 0.521567 | `azmcp_postgres_server_config_get` | ❌ | --- -## Test 127 +## Test 129 **Expected Tool:** `azmcp_postgres_table_schema_get` **Prompt:** Show me the schema of table
in the PostgreSQL database in server @@ -2564,13 +2606,13 @@ |------|-------|------|--------| | 1 | 0.714877 | `azmcp_postgres_table_schema_get` | ✅ **EXPECTED** | | 2 | 0.597846 | `azmcp_postgres_table_list` | ❌ | -| 3 | 0.574230 | `azmcp_postgres_database_list` | ❌ | -| 4 | 0.508082 | `azmcp_postgres_server_config_get` | ❌ | +| 3 | 0.574123 | `azmcp_postgres_database_list` | ❌ | +| 4 | 0.508097 | `azmcp_postgres_server_config_get` | ❌ | | 5 | 0.502626 | `azmcp_kusto_table_schema` | ❌ | --- -## Test 128 +## Test 130 **Expected Tool:** `azmcp_deploy_app_logs_get` **Prompt:** Show me the log of the application deployed by azd @@ -2583,11 +2625,11 @@ | 2 | 0.471692 | `azmcp_deploy_plan_get` | ❌ | | 3 | 0.404891 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 4 | 0.401388 | `azmcp_monitor_resource_log_query` | ❌ | -| 5 | 0.398574 | `azmcp_applens_resource_diagnose` | ❌ | +| 5 | 0.397799 | `azmcp_applens_resource_diagnose` | ❌ | --- -## Test 129 +## Test 131 **Expected Tool:** `azmcp_deploy_architecture_diagram_generate` **Prompt:** Generate the azure architecture diagram for this application @@ -2600,11 +2642,11 @@ | 2 | 0.562521 | `azmcp_deploy_plan_get` | ❌ | | 3 | 0.497193 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 4 | 0.489344 | `azmcp_cloudarchitect_design` | ❌ | -| 5 | 0.435715 | `azmcp_deploy_iac_rules_get` | ❌ | +| 5 | 0.435921 | `azmcp_deploy_iac_rules_get` | ❌ | --- -## Test 130 +## Test 132 **Expected Tool:** `azmcp_deploy_iac_rules_get` **Prompt:** Show me the rules to generate bicep scripts @@ -2613,15 +2655,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.528844 | `azmcp_deploy_iac_rules_get` | ✅ **EXPECTED** | -| 2 | 0.479850 | `azmcp_bicepschema_get` | ❌ | +| 1 | 0.529092 | `azmcp_deploy_iac_rules_get` | ✅ **EXPECTED** | +| 2 | 0.479903 | `azmcp_bicepschema_get` | ❌ | | 3 | 0.391965 | `azmcp_get_bestpractices_get` | ❌ | | 4 | 0.383210 | `azmcp_azureterraformbestpractices_get` | ❌ | | 5 | 0.341436 | `azmcp_deploy_pipeline_guidance_get` | ❌ | --- -## Test 131 +## Test 133 **Expected Tool:** `azmcp_deploy_pipeline_guidance_get` **Prompt:** How can I create a CI/CD pipeline to deploy this app to Azure? @@ -2632,13 +2674,13 @@ |------|-------|------|--------| | 1 | 0.638841 | `azmcp_deploy_pipeline_guidance_get` | ✅ **EXPECTED** | | 2 | 0.499242 | `azmcp_deploy_plan_get` | ❌ | -| 3 | 0.448662 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.448917 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.385920 | `azmcp_deploy_app_logs_get` | ❌ | | 5 | 0.382240 | `azmcp_get_bestpractices_get` | ❌ | --- -## Test 132 +## Test 134 **Expected Tool:** `azmcp_deploy_plan_get` **Prompt:** Create a plan to deploy this application to azure @@ -2649,13 +2691,13 @@ |------|-------|------|--------| | 1 | 0.688055 | `azmcp_deploy_plan_get` | ✅ **EXPECTED** | | 2 | 0.587903 | `azmcp_deploy_pipeline_guidance_get` | ❌ | -| 3 | 0.499180 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.499385 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.498575 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 5 | 0.448692 | `azmcp_loadtesting_test_create` | ❌ | --- -## Test 133 +## Test 135 **Expected Tool:** `azmcp_eventgrid_events_publish` **Prompt:** Publish an event to Event Grid topic using with the following data @@ -2664,15 +2706,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.755573 | `azmcp_eventgrid_events_publish` | ✅ **EXPECTED** | -| 2 | 0.483159 | `azmcp_eventgrid_subscription_list` | ❌ | -| 3 | 0.466209 | `azmcp_eventgrid_topic_list` | ❌ | -| 4 | 0.355568 | `azmcp_servicebus_topic_details` | ❌ | -| 5 | 0.327986 | `azmcp_eventhubs_namespace_get` | ❌ | +| 1 | 0.755381 | `azmcp_eventgrid_events_publish` | ✅ **EXPECTED** | +| 2 | 0.482943 | `azmcp_eventgrid_subscription_list` | ❌ | +| 3 | 0.465935 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.355577 | `azmcp_servicebus_topic_details` | ❌ | +| 5 | 0.327836 | `azmcp_eventhubs_namespace_get` | ❌ | --- -## Test 134 +## Test 136 **Expected Tool:** `azmcp_eventgrid_events_publish` **Prompt:** Publish event to my Event Grid topic with the following events @@ -2681,15 +2723,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.654648 | `azmcp_eventgrid_events_publish` | ✅ **EXPECTED** | -| 2 | 0.524503 | `azmcp_eventgrid_subscription_list` | ❌ | -| 3 | 0.510124 | `azmcp_eventgrid_topic_list` | ❌ | -| 4 | 0.373718 | `azmcp_servicebus_topic_details` | ❌ | -| 5 | 0.332060 | `azmcp_eventhubs_namespace_get` | ❌ | +| 1 | 0.654608 | `azmcp_eventgrid_events_publish` | ✅ **EXPECTED** | +| 2 | 0.525199 | `azmcp_eventgrid_subscription_list` | ❌ | +| 3 | 0.510639 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.374026 | `azmcp_servicebus_topic_details` | ❌ | +| 5 | 0.332639 | `azmcp_eventhubs_namespace_get` | ❌ | --- -## Test 135 +## Test 137 **Expected Tool:** `azmcp_eventgrid_events_publish` **Prompt:** Send an event to Event Grid topic in resource group with @@ -2698,15 +2740,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.600350 | `azmcp_eventgrid_events_publish` | ✅ **EXPECTED** | -| 2 | 0.521547 | `azmcp_eventgrid_topic_list` | ❌ | -| 3 | 0.505294 | `azmcp_eventgrid_subscription_list` | ❌ | -| 4 | 0.385563 | `azmcp_eventhubs_namespace_get` | ❌ | -| 5 | 0.353655 | `azmcp_servicebus_topic_details` | ❌ | +| 1 | 0.600274 | `azmcp_eventgrid_events_publish` | ✅ **EXPECTED** | +| 2 | 0.521240 | `azmcp_eventgrid_topic_list` | ❌ | +| 3 | 0.504808 | `azmcp_eventgrid_subscription_list` | ❌ | +| 4 | 0.385359 | `azmcp_eventhubs_namespace_get` | ❌ | +| 5 | 0.353745 | `azmcp_servicebus_topic_details` | ❌ | --- -## Test 136 +## Test 138 **Expected Tool:** `azmcp_eventgrid_topic_list` **Prompt:** List all Event Grid topics in my subscription @@ -2715,15 +2757,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.770251 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | +| 1 | 0.770140 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | | 2 | 0.745471 | `azmcp_eventgrid_subscription_list` | ❌ | | 3 | 0.561862 | `azmcp_kusto_cluster_list` | ❌ | -| 4 | 0.545540 | `azmcp_search_service_list` | ❌ | +| 4 | 0.545621 | `azmcp_search_service_list` | ❌ | | 5 | 0.526138 | `azmcp_subscription_list` | ❌ | --- -## Test 137 +## Test 139 **Expected Tool:** `azmcp_eventgrid_topic_list` **Prompt:** Show me the Event Grid topics in my subscription @@ -2732,15 +2774,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.738332 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | +| 1 | 0.738258 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | | 2 | 0.737486 | `azmcp_eventgrid_subscription_list` | ❌ | | 3 | 0.492592 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.480287 | `azmcp_subscription_list` | ❌ | -| 5 | 0.475119 | `azmcp_search_service_list` | ❌ | +| 5 | 0.475185 | `azmcp_search_service_list` | ❌ | --- -## Test 138 +## Test 140 **Expected Tool:** `azmcp_eventgrid_topic_list` **Prompt:** List all Event Grid topics in subscription @@ -2749,15 +2791,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.770188 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | +| 1 | 0.770140 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | | 2 | 0.721362 | `azmcp_eventgrid_subscription_list` | ❌ | | 3 | 0.535326 | `azmcp_kusto_cluster_list` | ❌ | -| 4 | 0.514248 | `azmcp_search_service_list` | ❌ | +| 4 | 0.514376 | `azmcp_search_service_list` | ❌ | | 5 | 0.495987 | `azmcp_subscription_list` | ❌ | --- -## Test 139 +## Test 141 **Expected Tool:** `azmcp_eventgrid_topic_list` **Prompt:** List all Event Grid topics in resource group in subscription @@ -2766,7 +2808,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.758837 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | +| 1 | 0.758816 | `azmcp_eventgrid_topic_list` | ✅ **EXPECTED** | | 2 | 0.704462 | `azmcp_eventgrid_subscription_list` | ❌ | | 3 | 0.609175 | `azmcp_group_list` | ❌ | | 4 | 0.528270 | `azmcp_eventhubs_namespace_get` | ❌ | @@ -2774,7 +2816,7 @@ --- -## Test 140 +## Test 142 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** Show me all Event Grid subscriptions for topic @@ -2784,14 +2826,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.769097 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.720738 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.720606 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.498615 | `azmcp_servicebus_topic_details` | ❌ | | 4 | 0.486216 | `azmcp_servicebus_topic_subscription_details` | ❌ | | 5 | 0.486162 | `azmcp_eventgrid_events_publish` | ❌ | --- -## Test 141 +## Test 143 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** List Event Grid subscriptions for topic in subscription @@ -2801,14 +2843,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.718109 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.709893 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.709806 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.539977 | `azmcp_servicebus_topic_subscription_details` | ❌ | | 4 | 0.529286 | `azmcp_servicebus_topic_details` | ❌ | | 5 | 0.477876 | `azmcp_eventgrid_events_publish` | ❌ | --- -## Test 142 +## Test 144 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** List Event Grid subscriptions for topic in resource group @@ -2818,14 +2860,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.746815 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.746239 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.746174 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.524919 | `azmcp_group_list` | ❌ | | 4 | 0.503158 | `azmcp_servicebus_topic_details` | ❌ | | 5 | 0.490915 | `azmcp_eventhubs_namespace_get` | ❌ | --- -## Test 143 +## Test 145 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** Show all Event Grid subscriptions in my subscription @@ -2835,14 +2877,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.736436 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.659915 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.659728 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.569254 | `azmcp_subscription_list` | ❌ | | 4 | 0.537922 | `azmcp_kusto_cluster_list` | ❌ | -| 5 | 0.518858 | `azmcp_search_service_list` | ❌ | +| 5 | 0.518954 | `azmcp_search_service_list` | ❌ | --- -## Test 144 +## Test 146 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** List all Event Grid subscriptions in subscription @@ -2852,14 +2894,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.684543 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.656388 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.656277 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.542388 | `azmcp_subscription_list` | ❌ | | 4 | 0.521053 | `azmcp_kusto_cluster_list` | ❌ | | 5 | 0.510115 | `azmcp_group_list` | ❌ | --- -## Test 145 +## Test 147 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** Show Event Grid subscriptions in resource group in subscription @@ -2869,14 +2911,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.696101 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.691809 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.691739 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.557573 | `azmcp_group_list` | ❌ | -| 4 | 0.505497 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.504984 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 5 | 0.502308 | `azmcp_datadog_monitoredresources_list` | ❌ | --- -## Test 146 +## Test 148 **Expected Tool:** `azmcp_eventgrid_subscription_list` **Prompt:** List Event Grid subscriptions for subscription in location @@ -2886,14 +2928,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.709801 | `azmcp_eventgrid_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.642214 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.642095 | `azmcp_eventgrid_topic_list` | ❌ | | 3 | 0.506697 | `azmcp_subscription_list` | ❌ | -| 4 | 0.476763 | `azmcp_search_service_list` | ❌ | +| 4 | 0.476869 | `azmcp_search_service_list` | ❌ | | 5 | 0.475782 | `azmcp_kusto_cluster_list` | ❌ | --- -## Test 147 +## Test 149 **Expected Tool:** `azmcp_eventhubs_namespace_get` **Prompt:** List all Event Hubs namespaces in my subscription @@ -2904,13 +2946,13 @@ |------|-------|------|--------| | 1 | 0.653507 | `azmcp_eventhubs_namespace_get` | ✅ **EXPECTED** | | 2 | 0.607372 | `azmcp_kusto_cluster_list` | ❌ | -| 3 | 0.557272 | `azmcp_eventgrid_topic_list` | ❌ | +| 3 | 0.557200 | `azmcp_eventgrid_topic_list` | ❌ | | 4 | 0.556126 | `azmcp_eventgrid_subscription_list` | ❌ | -| 5 | 0.535097 | `azmcp_search_service_list` | ❌ | +| 5 | 0.535178 | `azmcp_search_service_list` | ❌ | --- -## Test 148 +## Test 150 **Expected Tool:** `azmcp_eventhubs_namespace_get` **Prompt:** Get the details of my namespace in my resource group @@ -2927,7 +2969,7 @@ --- -## Test 149 +## Test 151 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Describe the function app in resource group @@ -2936,15 +2978,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.660149 | `azmcp_functionapp_get` | ✅ **EXPECTED** | -| 2 | 0.451669 | `azmcp_deploy_app_logs_get` | ❌ | -| 3 | 0.450480 | `azmcp_applens_resource_diagnose` | ❌ | -| 4 | 0.390061 | `azmcp_mysql_server_list` | ❌ | -| 5 | 0.380312 | `azmcp_get_bestpractices_get` | ❌ | +| 1 | 0.660116 | `azmcp_functionapp_get` | ✅ **EXPECTED** | +| 2 | 0.451613 | `azmcp_deploy_app_logs_get` | ❌ | +| 3 | 0.449805 | `azmcp_applens_resource_diagnose` | ❌ | +| 4 | 0.390048 | `azmcp_mysql_server_list` | ❌ | +| 5 | 0.380314 | `azmcp_get_bestpractices_get` | ❌ | --- -## Test 150 +## Test 152 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Get configuration for function app @@ -2955,13 +2997,13 @@ |------|-------|------|--------| | 1 | 0.607276 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.447400 | `azmcp_mysql_server_config_get` | ❌ | -| 3 | 0.424613 | `azmcp_appconfig_account_list` | ❌ | +| 3 | 0.424693 | `azmcp_appconfig_account_list` | ❌ | | 4 | 0.411267 | `azmcp_appconfig_kv_get` | ❌ | | 5 | 0.400402 | `azmcp_deploy_app_logs_get` | ❌ | --- -## Test 151 +## Test 153 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Get function app status for @@ -2972,13 +3014,13 @@ |------|-------|------|--------| | 1 | 0.622384 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.411650 | `azmcp_resourcehealth_availability-status_get` | ❌ | -| 3 | 0.390766 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.390708 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 4 | 0.383533 | `azmcp_deploy_app_logs_get` | ❌ | -| 5 | 0.347396 | `azmcp_applens_resource_diagnose` | ❌ | +| 5 | 0.347201 | `azmcp_applens_resource_diagnose` | ❌ | --- -## Test 152 +## Test 154 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Get information about my function app in @@ -2988,14 +3030,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.690933 | `azmcp_functionapp_get` | ✅ **EXPECTED** | -| 2 | 0.432458 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 3 | 0.431821 | `azmcp_applens_resource_diagnose` | ❌ | +| 2 | 0.432317 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.431842 | `azmcp_applens_resource_diagnose` | ❌ | | 4 | 0.424646 | `azmcp_quota_usage_check` | ❌ | -| 5 | 0.417493 | `azmcp_signalr_runtime_get` | ❌ | +| 5 | 0.417281 | `azmcp_signalr_runtime_get` | ❌ | --- -## Test 153 +## Test 155 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Retrieve host name and status of function app @@ -3007,12 +3049,12 @@ | 1 | 0.592791 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.417641 | `azmcp_resourcehealth_availability-status_get` | ❌ | | 3 | 0.409712 | `azmcp_deploy_app_logs_get` | ❌ | -| 4 | 0.392237 | `azmcp_applens_resource_diagnose` | ❌ | +| 4 | 0.391971 | `azmcp_applens_resource_diagnose` | ❌ | | 5 | 0.391480 | `azmcp_sql_server_show` | ❌ | --- -## Test 154 +## Test 156 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Show function app details for in @@ -3023,13 +3065,13 @@ |------|-------|------|--------| | 1 | 0.687356 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.449589 | `azmcp_deploy_app_logs_get` | ❌ | -| 3 | 0.428689 | `azmcp_applens_resource_diagnose` | ❌ | -| 4 | 0.373660 | `azmcp_signalr_runtime_get` | ❌ | -| 5 | 0.368288 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.428298 | `azmcp_applens_resource_diagnose` | ❌ | +| 4 | 0.372466 | `azmcp_signalr_runtime_get` | ❌ | +| 5 | 0.368188 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 155 +## Test 157 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Show me the details for the function app @@ -3040,13 +3082,13 @@ |------|-------|------|--------| | 1 | 0.644882 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.430189 | `azmcp_deploy_app_logs_get` | ❌ | -| 3 | 0.404580 | `azmcp_signalr_runtime_get` | ❌ | +| 3 | 0.403311 | `azmcp_signalr_runtime_get` | ❌ | | 4 | 0.388678 | `azmcp_storage_account_get` | ❌ | | 5 | 0.370793 | `azmcp_storage_blob_container_get` | ❌ | --- -## Test 156 +## Test 158 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Show plan and region for function app @@ -3063,7 +3105,7 @@ --- -## Test 157 +## Test 159 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** What is the status of function app ? @@ -3074,13 +3116,13 @@ |------|-------|------|--------| | 1 | 0.565797 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.403665 | `azmcp_deploy_app_logs_get` | ❌ | -| 3 | 0.384186 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 4 | 0.369868 | `azmcp_applens_resource_diagnose` | ❌ | +| 3 | 0.384159 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.369350 | `azmcp_applens_resource_diagnose` | ❌ | | 5 | 0.353063 | `azmcp_resourcehealth_availability-status_get` | ❌ | --- -## Test 158 +## Test 160 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** List all function apps in my subscription @@ -3090,14 +3132,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.646561 | `azmcp_functionapp_get` | ✅ **EXPECTED** | -| 2 | 0.559382 | `azmcp_search_service_list` | ❌ | +| 2 | 0.559425 | `azmcp_search_service_list` | ❌ | | 3 | 0.534930 | `azmcp_subscription_list` | ❌ | | 4 | 0.529031 | `azmcp_kusto_cluster_list` | ❌ | | 5 | 0.516618 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 159 +## Test 161 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** Show me my Azure function apps @@ -3109,12 +3151,12 @@ | 1 | 0.560249 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.464985 | `azmcp_deploy_app_logs_get` | ❌ | | 3 | 0.436167 | `azmcp_foundry_agents_list` | ❌ | -| 4 | 0.412646 | `azmcp_search_service_list` | ❌ | +| 4 | 0.412605 | `azmcp_search_service_list` | ❌ | | 5 | 0.411323 | `azmcp_get_bestpractices_get` | ❌ | --- -## Test 160 +## Test 162 **Expected Tool:** `azmcp_functionapp_get` **Prompt:** What function apps do I have? @@ -3125,13 +3167,13 @@ |------|-------|------|--------| | 1 | 0.433675 | `azmcp_functionapp_get` | ✅ **EXPECTED** | | 2 | 0.346619 | `azmcp_deploy_app_logs_get` | ❌ | -| 3 | 0.337966 | `azmcp_applens_resource_diagnose` | ❌ | +| 3 | 0.336914 | `azmcp_applens_resource_diagnose` | ❌ | | 4 | 0.284362 | `azmcp_get_bestpractices_get` | ❌ | | 5 | 0.250920 | `azmcp_cloudarchitect_design` | ❌ | --- -## Test 161 +## Test 163 **Expected Tool:** `azmcp_keyvault_admin_settings_get` **Prompt:** Get the account settings for my key vault @@ -3142,13 +3184,13 @@ |------|-------|------|--------| | 1 | 0.604780 | `azmcp_keyvault_admin_settings_get` | ✅ **EXPECTED** | | 2 | 0.520401 | `azmcp_storage_account_get` | ❌ | -| 3 | 0.496629 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.496096 | `azmcp_keyvault_key_get` | ❌ | | 4 | 0.452367 | `azmcp_appconfig_kv_set` | ❌ | -| 5 | 0.448366 | `azmcp_keyvault_secret_get` | ❌ | +| 5 | 0.448039 | `azmcp_keyvault_secret_get` | ❌ | --- -## Test 162 +## Test 164 **Expected Tool:** `azmcp_keyvault_admin_settings_get` **Prompt:** Show me the account settings for managed HSM keyvault @@ -3159,13 +3201,13 @@ |------|-------|------|--------| | 1 | 0.671370 | `azmcp_keyvault_admin_settings_get` | ✅ **EXPECTED** | | 2 | 0.453590 | `azmcp_storage_account_get` | ❌ | -| 3 | 0.441224 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.441069 | `azmcp_keyvault_key_get` | ❌ | | 4 | 0.404666 | `azmcp_appconfig_kv_set` | ❌ | -| 5 | 0.395379 | `azmcp_keyvault_secret_get` | ❌ | +| 5 | 0.395274 | `azmcp_keyvault_secret_get` | ❌ | --- -## Test 163 +## Test 165 **Expected Tool:** `azmcp_keyvault_admin_settings_get` **Prompt:** What's the value of the setting in my key vault with name @@ -3174,15 +3216,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.505750 | `azmcp_keyvault_admin_settings_get` | ✅ **EXPECTED** | -| 2 | 0.496540 | `azmcp_appconfig_kv_set` | ❌ | -| 3 | 0.420145 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 4 | 0.419126 | `azmcp_keyvault_key_get` | ❌ | -| 5 | 0.410516 | `azmcp_keyvault_secret_get` | ❌ | +| 1 | 0.505916 | `azmcp_keyvault_admin_settings_get` | ✅ **EXPECTED** | +| 2 | 0.496493 | `azmcp_appconfig_kv_set` | ❌ | +| 3 | 0.420156 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 4 | 0.419987 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.410434 | `azmcp_keyvault_secret_get` | ❌ | --- -## Test 164 +## Test 166 **Expected Tool:** `azmcp_keyvault_certificate_create` **Prompt:** Create a new certificate called in the key vault @@ -3191,15 +3233,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.628173 | `azmcp_keyvault_certificate_create` | ✅ **EXPECTED** | -| 2 | 0.570852 | `azmcp_keyvault_certificate_import` | ❌ | -| 3 | 0.540422 | `azmcp_keyvault_key_create` | ❌ | -| 4 | 0.516532 | `azmcp_keyvault_certificate_get` | ❌ | -| 5 | 0.500146 | `azmcp_keyvault_certificate_list` | ❌ | +| 1 | 0.627727 | `azmcp_keyvault_certificate_create` | ✅ **EXPECTED** | +| 2 | 0.570319 | `azmcp_keyvault_certificate_import` | ❌ | +| 3 | 0.540199 | `azmcp_keyvault_key_create` | ❌ | +| 4 | 0.519218 | `azmcp_keyvault_certificate_get` | ❌ | +| 5 | 0.500027 | `azmcp_keyvault_certificate_list` | ❌ | --- -## Test 165 +## Test 167 **Expected Tool:** `azmcp_keyvault_certificate_create` **Prompt:** Generate a certificate named in key vault @@ -3210,13 +3252,13 @@ |------|-------|------|--------| | 1 | 0.599990 | `azmcp_keyvault_certificate_create` | ✅ **EXPECTED** | | 2 | 0.561445 | `azmcp_keyvault_certificate_import` | ❌ | -| 3 | 0.519562 | `azmcp_keyvault_certificate_get` | ❌ | -| 4 | 0.502133 | `azmcp_keyvault_key_create` | ❌ | +| 3 | 0.522706 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.502128 | `azmcp_keyvault_key_create` | ❌ | | 5 | 0.497145 | `azmcp_keyvault_certificate_list` | ❌ | --- -## Test 166 +## Test 168 **Expected Tool:** `azmcp_keyvault_certificate_create` **Prompt:** Request creation of certificate in the key vault @@ -3227,13 +3269,13 @@ |------|-------|------|--------| | 1 | 0.573998 | `azmcp_keyvault_certificate_create` | ✅ **EXPECTED** | | 2 | 0.527759 | `azmcp_keyvault_certificate_import` | ❌ | -| 3 | 0.495249 | `azmcp_keyvault_certificate_get` | ❌ | -| 4 | 0.481532 | `azmcp_keyvault_key_create` | ❌ | +| 3 | 0.498278 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.481548 | `azmcp_keyvault_key_create` | ❌ | | 5 | 0.469601 | `azmcp_keyvault_certificate_list` | ❌ | --- -## Test 167 +## Test 169 **Expected Tool:** `azmcp_keyvault_certificate_create` **Prompt:** Provision a new key vault certificate in vault @@ -3244,13 +3286,13 @@ |------|-------|------|--------| | 1 | 0.591697 | `azmcp_keyvault_certificate_create` | ✅ **EXPECTED** | | 2 | 0.562265 | `azmcp_keyvault_certificate_import` | ❌ | -| 3 | 0.518739 | `azmcp_keyvault_certificate_get` | ❌ | -| 4 | 0.502517 | `azmcp_keyvault_key_create` | ❌ | +| 3 | 0.522147 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.502529 | `azmcp_keyvault_key_create` | ❌ | | 5 | 0.479992 | `azmcp_keyvault_certificate_list` | ❌ | --- -## Test 168 +## Test 170 **Expected Tool:** `azmcp_keyvault_certificate_create` **Prompt:** Issue a certificate in key vault @@ -3261,13 +3303,13 @@ |------|-------|------|--------| | 1 | 0.622788 | `azmcp_keyvault_certificate_create` | ✅ **EXPECTED** | | 2 | 0.558532 | `azmcp_keyvault_certificate_import` | ❌ | -| 3 | 0.531287 | `azmcp_keyvault_certificate_get` | ❌ | +| 3 | 0.534503 | `azmcp_keyvault_certificate_get` | ❌ | | 4 | 0.521316 | `azmcp_keyvault_certificate_list` | ❌ | -| 5 | 0.465055 | `azmcp_keyvault_key_create` | ❌ | +| 5 | 0.465056 | `azmcp_keyvault_key_create` | ❌ | --- -## Test 169 +## Test 171 **Expected Tool:** `azmcp_keyvault_certificate_get` **Prompt:** Show me the certificate in the key vault @@ -3276,15 +3318,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.603235 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | +| 1 | 0.600625 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | | 2 | 0.528405 | `azmcp_keyvault_certificate_list` | ❌ | | 3 | 0.519037 | `azmcp_keyvault_certificate_import` | ❌ | | 4 | 0.499293 | `azmcp_keyvault_certificate_create` | ❌ | -| 5 | 0.486608 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.487801 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 170 +## Test 172 **Expected Tool:** `azmcp_keyvault_certificate_get` **Prompt:** Show me the details of the certificate in the key vault @@ -3293,15 +3335,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.649471 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | -| 2 | 0.563238 | `azmcp_keyvault_key_get` | ❌ | -| 3 | 0.514578 | `azmcp_keyvault_secret_get` | ❌ | -| 4 | 0.509828 | `azmcp_keyvault_certificate_list` | ❌ | -| 5 | 0.507966 | `azmcp_keyvault_certificate_import` | ❌ | +| 1 | 0.646098 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | +| 2 | 0.563377 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.514170 | `azmcp_keyvault_secret_get` | ❌ | +| 4 | 0.509446 | `azmcp_keyvault_certificate_list` | ❌ | +| 5 | 0.507738 | `azmcp_keyvault_certificate_import` | ❌ | --- -## Test 171 +## Test 173 **Expected Tool:** `azmcp_keyvault_certificate_get` **Prompt:** Get the certificate from vault @@ -3310,15 +3352,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.606958 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | +| 1 | 0.609523 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | | 2 | 0.515570 | `azmcp_keyvault_certificate_list` | ❌ | | 3 | 0.511197 | `azmcp_keyvault_certificate_create` | ❌ | | 4 | 0.507768 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.474394 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.475730 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 172 +## Test 174 **Expected Tool:** `azmcp_keyvault_certificate_get` **Prompt:** Display the certificate details for in vault @@ -3327,15 +3369,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.649758 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | -| 2 | 0.527400 | `azmcp_keyvault_key_get` | ❌ | +| 1 | 0.647669 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | +| 2 | 0.528353 | `azmcp_keyvault_key_get` | ❌ | | 3 | 0.521556 | `azmcp_keyvault_certificate_list` | ❌ | | 4 | 0.509796 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.502367 | `azmcp_keyvault_secret_get` | ❌ | +| 5 | 0.501988 | `azmcp_keyvault_secret_get` | ❌ | --- -## Test 173 +## Test 175 **Expected Tool:** `azmcp_keyvault_certificate_get` **Prompt:** Retrieve certificate metadata for in vault @@ -3344,15 +3386,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.594012 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | +| 1 | 0.595959 | `azmcp_keyvault_certificate_get` | ✅ **EXPECTED** | | 2 | 0.527404 | `azmcp_keyvault_certificate_list` | ❌ | | 3 | 0.519059 | `azmcp_keyvault_certificate_import` | ❌ | | 4 | 0.501138 | `azmcp_keyvault_certificate_create` | ❌ | -| 5 | 0.465174 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.465540 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 174 +## Test 176 **Expected Tool:** `azmcp_keyvault_certificate_import` **Prompt:** Import the certificate in file into the key vault @@ -3361,15 +3403,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.585470 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | -| 2 | 0.419992 | `azmcp_keyvault_certificate_get` | ❌ | -| 3 | 0.402560 | `azmcp_keyvault_certificate_create` | ❌ | -| 4 | 0.399274 | `azmcp_keyvault_certificate_list` | ❌ | -| 5 | 0.352870 | `azmcp_keyvault_key_create` | ❌ | +| 1 | 0.585481 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | +| 2 | 0.420747 | `azmcp_keyvault_certificate_get` | ❌ | +| 3 | 0.402595 | `azmcp_keyvault_certificate_create` | ❌ | +| 4 | 0.399342 | `azmcp_keyvault_certificate_list` | ❌ | +| 5 | 0.352905 | `azmcp_keyvault_key_create` | ❌ | --- -## Test 175 +## Test 177 **Expected Tool:** `azmcp_keyvault_certificate_import` **Prompt:** Import a certificate into the key vault using the name @@ -3378,15 +3420,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.622125 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | -| 2 | 0.501864 | `azmcp_keyvault_certificate_get` | ❌ | -| 3 | 0.498847 | `azmcp_keyvault_certificate_create` | ❌ | -| 4 | 0.448105 | `azmcp_keyvault_certificate_list` | ❌ | -| 5 | 0.419818 | `azmcp_keyvault_key_create` | ❌ | +| 1 | 0.622359 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | +| 2 | 0.503913 | `azmcp_keyvault_certificate_get` | ❌ | +| 3 | 0.499042 | `azmcp_keyvault_certificate_create` | ❌ | +| 4 | 0.448130 | `azmcp_keyvault_certificate_list` | ❌ | +| 5 | 0.420139 | `azmcp_keyvault_key_create` | ❌ | --- -## Test 176 +## Test 178 **Expected Tool:** `azmcp_keyvault_certificate_import` **Prompt:** Upload certificate file to key vault @@ -3397,13 +3439,13 @@ |------|-------|------|--------| | 1 | 0.595707 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | | 2 | 0.453929 | `azmcp_keyvault_certificate_create` | ❌ | -| 3 | 0.451713 | `azmcp_keyvault_certificate_get` | ❌ | +| 3 | 0.452551 | `azmcp_keyvault_certificate_get` | ❌ | | 4 | 0.418203 | `azmcp_keyvault_certificate_list` | ❌ | -| 5 | 0.413395 | `azmcp_keyvault_key_create` | ❌ | +| 5 | 0.413377 | `azmcp_keyvault_key_create` | ❌ | --- -## Test 177 +## Test 179 **Expected Tool:** `azmcp_keyvault_certificate_import` **Prompt:** Load certificate from file into vault @@ -3413,14 +3455,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.619480 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | -| 2 | 0.515610 | `azmcp_keyvault_certificate_get` | ❌ | +| 2 | 0.517804 | `azmcp_keyvault_certificate_get` | ❌ | | 3 | 0.480815 | `azmcp_keyvault_certificate_create` | ❌ | | 4 | 0.444386 | `azmcp_keyvault_certificate_list` | ❌ | -| 5 | 0.381868 | `azmcp_keyvault_key_create` | ❌ | +| 5 | 0.381873 | `azmcp_keyvault_key_create` | ❌ | --- -## Test 178 +## Test 180 **Expected Tool:** `azmcp_keyvault_certificate_import` **Prompt:** Add existing certificate file to the key vault with name @@ -3431,13 +3473,13 @@ |------|-------|------|--------| | 1 | 0.595418 | `azmcp_keyvault_certificate_import` | ✅ **EXPECTED** | | 2 | 0.452490 | `azmcp_keyvault_certificate_create` | ❌ | -| 3 | 0.440366 | `azmcp_keyvault_certificate_get` | ❌ | -| 4 | 0.408040 | `azmcp_keyvault_key_create` | ❌ | +| 3 | 0.441616 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.408018 | `azmcp_keyvault_key_create` | ❌ | | 5 | 0.392244 | `azmcp_keyvault_secret_create` | ❌ | --- -## Test 179 +## Test 181 **Expected Tool:** `azmcp_keyvault_certificate_list` **Prompt:** List all certificates in the key vault @@ -3447,14 +3489,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.726124 | `azmcp_keyvault_certificate_list` | ✅ **EXPECTED** | -| 2 | 0.583110 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.582901 | `azmcp_keyvault_key_list` | ❌ | | 3 | 0.531988 | `azmcp_keyvault_secret_list` | ❌ | -| 4 | 0.514152 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.515236 | `azmcp_keyvault_certificate_get` | ❌ | | 5 | 0.485792 | `azmcp_keyvault_certificate_create` | ❌ | --- -## Test 180 +## Test 182 **Expected Tool:** `azmcp_keyvault_certificate_list` **Prompt:** Show me the certificates in the key vault @@ -3464,14 +3506,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.615541 | `azmcp_keyvault_certificate_list` | ✅ **EXPECTED** | -| 2 | 0.525122 | `azmcp_keyvault_certificate_get` | ❌ | -| 3 | 0.475156 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.522453 | `azmcp_keyvault_certificate_get` | ❌ | +| 3 | 0.474977 | `azmcp_keyvault_key_list` | ❌ | | 4 | 0.460973 | `azmcp_keyvault_certificate_create` | ❌ | -| 5 | 0.448139 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.449477 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 181 +## Test 183 **Expected Tool:** `azmcp_keyvault_certificate_list` **Prompt:** What certificates are in the key vault ? @@ -3481,14 +3523,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.624710 | `azmcp_keyvault_certificate_list` | ✅ **EXPECTED** | -| 2 | 0.518577 | `azmcp_keyvault_certificate_get` | ❌ | +| 2 | 0.519739 | `azmcp_keyvault_certificate_get` | ❌ | | 3 | 0.510048 | `azmcp_keyvault_certificate_create` | ❌ | | 4 | 0.505534 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.497356 | `azmcp_keyvault_key_list` | ❌ | +| 5 | 0.497123 | `azmcp_keyvault_key_list` | ❌ | --- -## Test 182 +## Test 184 **Expected Tool:** `azmcp_keyvault_certificate_list` **Prompt:** List certificate names in vault @@ -3498,14 +3540,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.672622 | `azmcp_keyvault_certificate_list` | ✅ **EXPECTED** | -| 2 | 0.553990 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.553731 | `azmcp_keyvault_key_list` | ❌ | | 3 | 0.511905 | `azmcp_keyvault_secret_list` | ❌ | -| 4 | 0.505198 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.507062 | `azmcp_keyvault_certificate_get` | ❌ | | 5 | 0.492357 | `azmcp_keyvault_certificate_create` | ❌ | --- -## Test 183 +## Test 185 **Expected Tool:** `azmcp_keyvault_certificate_list` **Prompt:** Enumerate certificates in key vault @@ -3515,14 +3557,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.747408 | `azmcp_keyvault_certificate_list` | ✅ **EXPECTED** | -| 2 | 0.594216 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.593976 | `azmcp_keyvault_key_list` | ❌ | | 3 | 0.558771 | `azmcp_keyvault_secret_list` | ❌ | -| 4 | 0.513381 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.515568 | `azmcp_keyvault_certificate_get` | ❌ | | 5 | 0.490876 | `azmcp_keyvault_certificate_create` | ❌ | --- -## Test 184 +## Test 186 **Expected Tool:** `azmcp_keyvault_certificate_list` **Prompt:** Show certificate names in the key vault @@ -3532,14 +3574,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.639711 | `azmcp_keyvault_certificate_list` | ✅ **EXPECTED** | -| 2 | 0.512269 | `azmcp_keyvault_certificate_get` | ❌ | -| 3 | 0.507572 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.512475 | `azmcp_keyvault_certificate_get` | ❌ | +| 3 | 0.507568 | `azmcp_keyvault_key_list` | ❌ | | 4 | 0.482583 | `azmcp_keyvault_certificate_create` | ❌ | | 5 | 0.464725 | `azmcp_keyvault_secret_list` | ❌ | --- -## Test 185 +## Test 187 **Expected Tool:** `azmcp_keyvault_key_create` **Prompt:** Create a new key called with the RSA type in the key vault @@ -3548,15 +3590,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.661150 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | -| 2 | 0.456207 | `azmcp_keyvault_secret_create` | ❌ | -| 3 | 0.451476 | `azmcp_keyvault_certificate_create` | ❌ | -| 4 | 0.429355 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.399042 | `azmcp_keyvault_key_get` | ❌ | +| 1 | 0.661528 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | +| 2 | 0.456656 | `azmcp_keyvault_secret_create` | ❌ | +| 3 | 0.451796 | `azmcp_keyvault_certificate_create` | ❌ | +| 4 | 0.429566 | `azmcp_keyvault_certificate_import` | ❌ | +| 5 | 0.399542 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 186 +## Test 188 **Expected Tool:** `azmcp_keyvault_key_create` **Prompt:** Generate a key with type in vault @@ -3565,15 +3607,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.641187 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | -| 2 | 0.428603 | `azmcp_keyvault_key_get` | ❌ | -| 3 | 0.423053 | `azmcp_keyvault_certificate_create` | ❌ | -| 4 | 0.420480 | `azmcp_keyvault_secret_create` | ❌ | -| 5 | 0.405812 | `azmcp_appconfig_kv_set` | ❌ | +| 1 | 0.641563 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | +| 2 | 0.429083 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.422998 | `azmcp_keyvault_certificate_create` | ❌ | +| 4 | 0.420271 | `azmcp_keyvault_secret_create` | ❌ | +| 5 | 0.405771 | `azmcp_appconfig_kv_set` | ❌ | --- -## Test 187 +## Test 189 **Expected Tool:** `azmcp_keyvault_key_create` **Prompt:** Create an oct key in the vault @@ -3582,15 +3624,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.547507 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | +| 1 | 0.547493 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | | 2 | 0.463557 | `azmcp_keyvault_secret_create` | ❌ | | 3 | 0.447410 | `azmcp_keyvault_certificate_create` | ❌ | -| 4 | 0.420366 | `azmcp_keyvault_key_get` | ❌ | +| 4 | 0.420792 | `azmcp_keyvault_key_get` | ❌ | | 5 | 0.404350 | `azmcp_keyvault_certificate_import` | ❌ | --- -## Test 188 +## Test 190 **Expected Tool:** `azmcp_keyvault_key_create` **Prompt:** Create an RSA key in the vault with name @@ -3599,15 +3641,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.641361 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | +| 1 | 0.641369 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | | 2 | 0.501636 | `azmcp_keyvault_secret_create` | ❌ | | 3 | 0.491735 | `azmcp_keyvault_certificate_create` | ❌ | | 4 | 0.464557 | `azmcp_keyvault_certificate_import` | ❌ | -| 5 | 0.451016 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.451544 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 189 +## Test 191 **Expected Tool:** `azmcp_keyvault_key_create` **Prompt:** Create an EC key with name in the vault @@ -3616,15 +3658,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.571742 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | -| 2 | 0.443375 | `azmcp_keyvault_certificate_create` | ❌ | -| 3 | 0.434664 | `azmcp_keyvault_secret_create` | ❌ | -| 4 | 0.421763 | `azmcp_keyvault_key_get` | ❌ | -| 5 | 0.400499 | `azmcp_keyvault_certificate_import` | ❌ | +| 1 | 0.571774 | `azmcp_keyvault_key_create` | ✅ **EXPECTED** | +| 2 | 0.443455 | `azmcp_keyvault_certificate_create` | ❌ | +| 3 | 0.434745 | `azmcp_keyvault_secret_create` | ❌ | +| 4 | 0.422649 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.400595 | `azmcp_keyvault_certificate_import` | ❌ | --- -## Test 190 +## Test 192 **Expected Tool:** `azmcp_keyvault_key_get` **Prompt:** Show me the key in the key vault @@ -3633,15 +3675,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.549488 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | -| 2 | 0.468382 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.452835 | `azmcp_keyvault_key_create` | ❌ | -| 4 | 0.439969 | `azmcp_keyvault_key_list` | ❌ | -| 5 | 0.430038 | `azmcp_keyvault_certificate_get` | ❌ | +| 1 | 0.550329 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | +| 2 | 0.468165 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.452816 | `azmcp_keyvault_key_create` | ❌ | +| 4 | 0.439577 | `azmcp_keyvault_key_list` | ❌ | +| 5 | 0.426545 | `azmcp_keyvault_certificate_get` | ❌ | --- -## Test 191 +## Test 193 **Expected Tool:** `azmcp_keyvault_key_get` **Prompt:** Show me the details of the key in the key vault @@ -3650,15 +3692,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.629717 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | -| 2 | 0.533128 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.499822 | `azmcp_keyvault_certificate_get` | ❌ | -| 4 | 0.475155 | `azmcp_storage_account_get` | ❌ | -| 5 | 0.457066 | `azmcp_keyvault_key_create` | ❌ | +| 1 | 0.629464 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | +| 2 | 0.532649 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.495951 | `azmcp_keyvault_certificate_get` | ❌ | +| 4 | 0.475218 | `azmcp_storage_account_get` | ❌ | +| 5 | 0.456999 | `azmcp_keyvault_key_create` | ❌ | --- -## Test 192 +## Test 194 **Expected Tool:** `azmcp_keyvault_key_get` **Prompt:** Get the key from vault @@ -3667,15 +3709,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.484645 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | -| 2 | 0.443231 | `azmcp_keyvault_key_create` | ❌ | -| 3 | 0.409719 | `azmcp_keyvault_secret_get` | ❌ | +| 1 | 0.485536 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | +| 2 | 0.443182 | `azmcp_keyvault_key_create` | ❌ | +| 3 | 0.409388 | `azmcp_keyvault_secret_get` | ❌ | | 4 | 0.395491 | `azmcp_keyvault_admin_settings_get` | ❌ | | 5 | 0.383519 | `azmcp_appconfig_kv_lock_set` | ❌ | --- -## Test 193 +## Test 195 **Expected Tool:** `azmcp_keyvault_key_get` **Prompt:** Display the key details for in vault @@ -3684,15 +3726,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.590303 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | -| 2 | 0.488704 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.464283 | `azmcp_keyvault_certificate_get` | ❌ | +| 1 | 0.590387 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | +| 2 | 0.488213 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.460796 | `azmcp_keyvault_certificate_get` | ❌ | | 4 | 0.440938 | `azmcp_storage_account_get` | ❌ | | 5 | 0.436511 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 194 +## Test 196 **Expected Tool:** `azmcp_keyvault_key_get` **Prompt:** Retrieve key metadata for in vault @@ -3701,15 +3743,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.518886 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | +| 1 | 0.518442 | `azmcp_keyvault_key_get` | ✅ **EXPECTED** | | 2 | 0.432742 | `azmcp_keyvault_admin_settings_get` | ❌ | -| 3 | 0.429175 | `azmcp_keyvault_key_create` | ❌ | -| 4 | 0.423022 | `azmcp_keyvault_secret_get` | ❌ | -| 5 | 0.395959 | `azmcp_keyvault_key_list` | ❌ | +| 3 | 0.429131 | `azmcp_keyvault_key_create` | ❌ | +| 4 | 0.422536 | `azmcp_keyvault_secret_get` | ❌ | +| 5 | 0.395632 | `azmcp_keyvault_key_list` | ❌ | --- -## Test 195 +## Test 197 **Expected Tool:** `azmcp_keyvault_key_list` **Prompt:** List all keys in the key vault @@ -3718,15 +3760,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.701448 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | +| 1 | 0.701326 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | | 2 | 0.601513 | `azmcp_keyvault_certificate_list` | ❌ | | 3 | 0.587427 | `azmcp_keyvault_secret_list` | ❌ | | 4 | 0.498767 | `azmcp_cosmos_account_list` | ❌ | -| 5 | 0.480129 | `azmcp_keyvault_admin_settings_get` | ❌ | +| 5 | 0.483589 | `azmcp_tables_list` | ❌ | --- -## Test 196 +## Test 198 **Expected Tool:** `azmcp_keyvault_key_list` **Prompt:** Show me the keys in the key vault @@ -3735,15 +3777,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.550644 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | -| 2 | 0.507585 | `azmcp_keyvault_key_get` | ❌ | -| 3 | 0.476253 | `azmcp_keyvault_certificate_list` | ❌ | -| 4 | 0.472288 | `azmcp_keyvault_admin_settings_get` | ❌ | -| 5 | 0.456484 | `azmcp_keyvault_secret_get` | ❌ | +| 1 | 0.549299 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | +| 2 | 0.507960 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.475507 | `azmcp_keyvault_certificate_list` | ❌ | +| 4 | 0.472465 | `azmcp_keyvault_admin_settings_get` | ❌ | +| 5 | 0.455683 | `azmcp_keyvault_secret_get` | ❌ | --- -## Test 197 +## Test 199 **Expected Tool:** `azmcp_keyvault_key_list` **Prompt:** What keys are in the key vault ? @@ -3752,15 +3794,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.581970 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | +| 1 | 0.581728 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | | 2 | 0.502245 | `azmcp_keyvault_admin_settings_get` | ❌ | | 3 | 0.501481 | `azmcp_keyvault_certificate_list` | ❌ | -| 4 | 0.476470 | `azmcp_keyvault_key_get` | ❌ | +| 4 | 0.477538 | `azmcp_keyvault_key_get` | ❌ | | 5 | 0.472414 | `azmcp_keyvault_secret_list` | ❌ | --- -## Test 198 +## Test 200 **Expected Tool:** `azmcp_keyvault_key_list` **Prompt:** List key names in vault @@ -3769,15 +3811,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.641314 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | +| 1 | 0.640978 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | | 2 | 0.559550 | `azmcp_keyvault_certificate_list` | ❌ | | 3 | 0.553553 | `azmcp_keyvault_secret_list` | ❌ | | 4 | 0.486377 | `azmcp_keyvault_admin_settings_get` | ❌ | -| 5 | 0.475992 | `azmcp_cosmos_account_list` | ❌ | +| 5 | 0.485937 | `azmcp_tables_list` | ❌ | --- -## Test 199 +## Test 201 **Expected Tool:** `azmcp_keyvault_key_list` **Prompt:** Enumerate keys in key vault @@ -3786,15 +3828,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.723266 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | +| 1 | 0.722960 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | | 2 | 0.611366 | `azmcp_keyvault_certificate_list` | ❌ | | 3 | 0.611185 | `azmcp_keyvault_secret_list` | ❌ | | 4 | 0.473886 | `azmcp_keyvault_admin_settings_get` | ❌ | -| 5 | 0.441881 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.443394 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 200 +## Test 202 **Expected Tool:** `azmcp_keyvault_key_list` **Prompt:** Show key names in the key vault @@ -3803,15 +3845,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.570444 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | -| 2 | 0.501073 | `azmcp_keyvault_key_get` | ❌ | +| 1 | 0.570441 | `azmcp_keyvault_key_list` | ✅ **EXPECTED** | +| 2 | 0.502044 | `azmcp_keyvault_key_get` | ❌ | | 3 | 0.500103 | `azmcp_keyvault_certificate_list` | ❌ | | 4 | 0.490367 | `azmcp_keyvault_secret_list` | ❌ | | 5 | 0.489635 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 201 +## Test 203 **Expected Tool:** `azmcp_keyvault_secret_create` **Prompt:** Create a new secret called with value in the key vault @@ -3821,14 +3863,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.678482 | `azmcp_keyvault_secret_create` | ✅ **EXPECTED** | -| 2 | 0.553016 | `azmcp_keyvault_key_create` | ❌ | -| 3 | 0.513120 | `azmcp_keyvault_secret_get` | ❌ | +| 2 | 0.553018 | `azmcp_keyvault_key_create` | ❌ | +| 3 | 0.512856 | `azmcp_keyvault_secret_get` | ❌ | | 4 | 0.475097 | `azmcp_keyvault_certificate_create` | ❌ | | 5 | 0.461437 | `azmcp_appconfig_kv_set` | ❌ | --- -## Test 202 +## Test 204 **Expected Tool:** `azmcp_keyvault_secret_create` **Prompt:** Set a secret named with value in key vault @@ -3838,14 +3880,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.663094 | `azmcp_keyvault_secret_create` | ✅ **EXPECTED** | -| 2 | 0.519612 | `azmcp_keyvault_secret_get` | ❌ | +| 2 | 0.519601 | `azmcp_keyvault_secret_get` | ❌ | | 3 | 0.512233 | `azmcp_appconfig_kv_set` | ❌ | -| 4 | 0.458505 | `azmcp_keyvault_key_create` | ❌ | +| 4 | 0.458502 | `azmcp_keyvault_key_create` | ❌ | | 5 | 0.429785 | `azmcp_appconfig_kv_lock_set` | ❌ | --- -## Test 203 +## Test 205 **Expected Tool:** `azmcp_keyvault_secret_create` **Prompt:** Store secret value in the key vault @@ -3854,15 +3896,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.639730 | `azmcp_keyvault_secret_create` | ✅ **EXPECTED** | -| 2 | 0.509363 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.486526 | `azmcp_appconfig_kv_set` | ❌ | -| 4 | 0.484369 | `azmcp_keyvault_key_create` | ❌ | -| 5 | 0.450469 | `azmcp_appconfig_kv_lock_set` | ❌ | +| 1 | 0.639943 | `azmcp_keyvault_secret_create` | ✅ **EXPECTED** | +| 2 | 0.509789 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.485253 | `azmcp_appconfig_kv_set` | ❌ | +| 4 | 0.484591 | `azmcp_keyvault_key_create` | ❌ | +| 5 | 0.448903 | `azmcp_appconfig_kv_lock_set` | ❌ | --- -## Test 204 +## Test 206 **Expected Tool:** `azmcp_keyvault_secret_create` **Prompt:** Add a new version of secret with value in vault @@ -3872,14 +3914,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.675145 | `azmcp_keyvault_secret_create` | ✅ **EXPECTED** | -| 2 | 0.499840 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.498300 | `azmcp_keyvault_key_create` | ❌ | +| 2 | 0.499612 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.498228 | `azmcp_keyvault_key_create` | ❌ | | 4 | 0.479174 | `azmcp_keyvault_certificate_import` | ❌ | | 5 | 0.458574 | `azmcp_appconfig_kv_set` | ❌ | --- -## Test 205 +## Test 207 **Expected Tool:** `azmcp_keyvault_secret_create` **Prompt:** Update secret to value in the key vault @@ -3889,14 +3931,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.571612 | `azmcp_keyvault_secret_create` | ✅ **EXPECTED** | -| 2 | 0.514035 | `azmcp_keyvault_secret_get` | ❌ | +| 2 | 0.513767 | `azmcp_keyvault_secret_get` | ❌ | | 3 | 0.441223 | `azmcp_appconfig_kv_set` | ❌ | | 4 | 0.417943 | `azmcp_appconfig_kv_lock_set` | ❌ | -| 5 | 0.408242 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.408840 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 206 +## Test 208 **Expected Tool:** `azmcp_keyvault_secret_get` **Prompt:** Show me the secret in the key vault @@ -3905,15 +3947,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.603172 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | -| 2 | 0.504212 | `azmcp_keyvault_key_get` | ❌ | -| 3 | 0.501397 | `azmcp_keyvault_secret_create` | ❌ | -| 4 | 0.478769 | `azmcp_keyvault_secret_list` | ❌ | -| 5 | 0.442183 | `azmcp_keyvault_certificate_get` | ❌ | +| 1 | 0.605040 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | +| 2 | 0.505534 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.502826 | `azmcp_keyvault_secret_create` | ❌ | +| 4 | 0.479766 | `azmcp_keyvault_secret_list` | ❌ | +| 5 | 0.440063 | `azmcp_keyvault_certificate_get` | ❌ | --- -## Test 207 +## Test 209 **Expected Tool:** `azmcp_keyvault_secret_get` **Prompt:** Show me the details of the secret in the key vault @@ -3922,15 +3964,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.654467 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | -| 2 | 0.566786 | `azmcp_keyvault_key_get` | ❌ | -| 3 | 0.499014 | `azmcp_keyvault_certificate_get` | ❌ | +| 1 | 0.653871 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | +| 2 | 0.567132 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.496050 | `azmcp_keyvault_certificate_get` | ❌ | | 4 | 0.485249 | `azmcp_keyvault_secret_list` | ❌ | | 5 | 0.483567 | `azmcp_storage_account_get` | ❌ | --- -## Test 208 +## Test 210 **Expected Tool:** `azmcp_keyvault_secret_get` **Prompt:** Get the secret from vault @@ -3939,15 +3981,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.578946 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | -| 2 | 0.492213 | `azmcp_keyvault_key_get` | ❌ | +| 1 | 0.578479 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | +| 2 | 0.493594 | `azmcp_keyvault_key_get` | ❌ | | 3 | 0.488705 | `azmcp_keyvault_secret_create` | ❌ | | 4 | 0.443676 | `azmcp_keyvault_secret_list` | ❌ | | 5 | 0.424167 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 209 +## Test 211 **Expected Tool:** `azmcp_keyvault_secret_get` **Prompt:** Display the secret details for in vault @@ -3956,15 +3998,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.649927 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | -| 2 | 0.546992 | `azmcp_keyvault_key_get` | ❌ | -| 3 | 0.494759 | `azmcp_keyvault_certificate_get` | ❌ | +| 1 | 0.649267 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | +| 2 | 0.548180 | `azmcp_keyvault_key_get` | ❌ | +| 3 | 0.492583 | `azmcp_keyvault_certificate_get` | ❌ | | 4 | 0.491597 | `azmcp_keyvault_secret_list` | ❌ | | 5 | 0.480355 | `azmcp_keyvault_secret_create` | ❌ | --- -## Test 210 +## Test 212 **Expected Tool:** `azmcp_keyvault_secret_get` **Prompt:** Retrieve secret metadata for in vault @@ -3973,15 +4015,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.578015 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | -| 2 | 0.475443 | `azmcp_keyvault_key_get` | ❌ | +| 1 | 0.577477 | `azmcp_keyvault_secret_get` | ✅ **EXPECTED** | +| 2 | 0.475586 | `azmcp_keyvault_key_get` | ❌ | | 3 | 0.466890 | `azmcp_keyvault_secret_create` | ❌ | | 4 | 0.447602 | `azmcp_keyvault_secret_list` | ❌ | | 5 | 0.421359 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 211 +## Test 213 **Expected Tool:** `azmcp_keyvault_secret_list` **Prompt:** List all secrets in the key vault @@ -3991,14 +4033,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.701227 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | -| 2 | 0.563736 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.563677 | `azmcp_keyvault_key_list` | ❌ | | 3 | 0.538337 | `azmcp_keyvault_certificate_list` | ❌ | -| 4 | 0.500117 | `azmcp_keyvault_secret_get` | ❌ | +| 4 | 0.499642 | `azmcp_keyvault_secret_get` | ❌ | | 5 | 0.455500 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 212 +## Test 214 **Expected Tool:** `azmcp_keyvault_secret_list` **Prompt:** Show me the secrets in the key vault @@ -4008,14 +4050,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.555681 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | -| 2 | 0.544421 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.497525 | `azmcp_keyvault_key_get` | ❌ | -| 4 | 0.464661 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.543861 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.498791 | `azmcp_keyvault_key_get` | ❌ | +| 4 | 0.464790 | `azmcp_keyvault_key_list` | ❌ | | 5 | 0.453130 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 213 +## Test 215 **Expected Tool:** `azmcp_keyvault_secret_list` **Prompt:** What secrets are in the key vault ? @@ -4024,15 +4066,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.572540 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | -| 2 | 0.529889 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.493761 | `azmcp_keyvault_key_list` | ❌ | -| 4 | 0.487620 | `azmcp_keyvault_admin_settings_get` | ❌ | -| 5 | 0.475273 | `azmcp_keyvault_key_get` | ❌ | +| 1 | 0.572510 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | +| 2 | 0.529207 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.493717 | `azmcp_keyvault_key_list` | ❌ | +| 4 | 0.487532 | `azmcp_keyvault_admin_settings_get` | ❌ | +| 5 | 0.476124 | `azmcp_keyvault_key_get` | ❌ | --- -## Test 214 +## Test 216 **Expected Tool:** `azmcp_keyvault_secret_list` **Prompt:** List secrets names in vault @@ -4042,14 +4084,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.624290 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | -| 2 | 0.559681 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.559695 | `azmcp_keyvault_key_list` | ❌ | | 3 | 0.517516 | `azmcp_keyvault_certificate_list` | ❌ | -| 4 | 0.480071 | `azmcp_keyvault_secret_get` | ❌ | +| 4 | 0.479547 | `azmcp_keyvault_secret_get` | ❌ | | 5 | 0.442945 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 215 +## Test 217 **Expected Tool:** `azmcp_keyvault_secret_list` **Prompt:** Enumerate secrets in key vault @@ -4059,14 +4101,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.742358 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | -| 2 | 0.601183 | `azmcp_keyvault_key_list` | ❌ | +| 2 | 0.601155 | `azmcp_keyvault_key_list` | ❌ | | 3 | 0.567827 | `azmcp_keyvault_certificate_list` | ❌ | -| 4 | 0.496555 | `azmcp_keyvault_secret_get` | ❌ | +| 4 | 0.496127 | `azmcp_keyvault_secret_get` | ❌ | | 5 | 0.437560 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 216 +## Test 218 **Expected Tool:** `azmcp_keyvault_secret_list` **Prompt:** Show secrets names in the key vault @@ -4076,14 +4118,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.567110 | `azmcp_keyvault_secret_list` | ✅ **EXPECTED** | -| 2 | 0.522939 | `azmcp_keyvault_secret_get` | ❌ | -| 3 | 0.476309 | `azmcp_keyvault_key_list` | ❌ | -| 4 | 0.462677 | `azmcp_keyvault_secret_create` | ❌ | -| 5 | 0.461326 | `azmcp_keyvault_key_get` | ❌ | +| 2 | 0.522399 | `azmcp_keyvault_secret_get` | ❌ | +| 3 | 0.476478 | `azmcp_keyvault_key_list` | ❌ | +| 4 | 0.462779 | `azmcp_keyvault_key_get` | ❌ | +| 5 | 0.462677 | `azmcp_keyvault_secret_create` | ❌ | --- -## Test 217 +## Test 219 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** Get the configuration of AKS cluster @@ -4096,11 +4138,11 @@ | 2 | 0.558530 | `azmcp_aks_nodepool_get` | ❌ | | 3 | 0.517279 | `azmcp_kusto_cluster_get` | ❌ | | 4 | 0.481416 | `azmcp_mysql_server_config_get` | ❌ | -| 5 | 0.430976 | `azmcp_postgres_server_config_get` | ❌ | +| 5 | 0.430993 | `azmcp_postgres_server_config_get` | ❌ | --- -## Test 218 +## Test 220 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** Show me the details of AKS cluster in resource group @@ -4109,15 +4151,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.595132 | `azmcp_aks_cluster_get` | ✅ **EXPECTED** | -| 2 | 0.567968 | `azmcp_kusto_cluster_get` | ❌ | -| 3 | 0.475365 | `azmcp_redis_cluster_list` | ❌ | -| 4 | 0.471720 | `azmcp_aks_nodepool_get` | ❌ | -| 5 | 0.461480 | `azmcp_sql_db_show` | ❌ | +| 1 | 0.595077 | `azmcp_aks_cluster_get` | ✅ **EXPECTED** | +| 2 | 0.567870 | `azmcp_kusto_cluster_get` | ❌ | +| 3 | 0.475341 | `azmcp_redis_cluster_list` | ❌ | +| 4 | 0.471692 | `azmcp_aks_nodepool_get` | ❌ | +| 5 | 0.461466 | `azmcp_sql_db_show` | ❌ | --- -## Test 219 +## Test 221 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** Show me the network configuration for AKS cluster @@ -4129,12 +4171,12 @@ | 1 | 0.542755 | `azmcp_aks_cluster_get` | ✅ **EXPECTED** | | 2 | 0.464247 | `azmcp_aks_nodepool_get` | ❌ | | 3 | 0.434684 | `azmcp_kusto_cluster_get` | ❌ | -| 4 | 0.398711 | `azmcp_redis_cluster_list` | ❌ | +| 4 | 0.399164 | `azmcp_redis_cluster_list` | ❌ | | 5 | 0.380301 | `azmcp_mysql_server_config_get` | ❌ | --- -## Test 220 +## Test 222 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** What are the details of my AKS cluster in ? @@ -4147,11 +4189,11 @@ | 2 | 0.527511 | `azmcp_kusto_cluster_get` | ❌ | | 3 | 0.482616 | `azmcp_aks_nodepool_get` | ❌ | | 4 | 0.434587 | `azmcp_functionapp_get` | ❌ | -| 5 | 0.433913 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | +| 5 | 0.433913 | `azmcp_managedlustre_filesystem_list` | ❌ | --- -## Test 221 +## Test 223 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** List all AKS clusters in my subscription @@ -4162,13 +4204,13 @@ |------|-------|------|--------| | 1 | 0.749416 | `azmcp_kusto_cluster_list` | ❌ | | 2 | 0.723178 | `azmcp_aks_cluster_get` | ✅ **EXPECTED** | -| 3 | 0.634734 | `azmcp_redis_cluster_list` | ❌ | -| 4 | 0.568403 | `azmcp_kusto_database_list` | ❌ | -| 5 | 0.562043 | `azmcp_search_service_list` | ❌ | +| 3 | 0.634645 | `azmcp_redis_cluster_list` | ❌ | +| 4 | 0.568503 | `azmcp_kusto_database_list` | ❌ | +| 5 | 0.562059 | `azmcp_search_service_list` | ❌ | --- -## Test 222 +## Test 224 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** Show me my Azure Kubernetes Service clusters @@ -4179,13 +4221,13 @@ |------|-------|------|--------| | 1 | 0.594886 | `azmcp_aks_cluster_get` | ✅ **EXPECTED** | | 2 | 0.586661 | `azmcp_kusto_cluster_list` | ❌ | -| 3 | 0.545090 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.545007 | `azmcp_redis_cluster_list` | ❌ | | 4 | 0.489724 | `azmcp_kusto_cluster_get` | ❌ | | 5 | 0.466970 | `azmcp_aks_nodepool_get` | ❌ | --- -## Test 223 +## Test 225 **Expected Tool:** `azmcp_aks_cluster_get` **Prompt:** What AKS clusters do I have? @@ -4197,12 +4239,12 @@ | 1 | 0.593985 | `azmcp_aks_cluster_get` | ✅ **EXPECTED** | | 2 | 0.526756 | `azmcp_kusto_cluster_list` | ❌ | | 3 | 0.500397 | `azmcp_aks_nodepool_get` | ❌ | -| 4 | 0.477504 | `azmcp_redis_cluster_list` | ❌ | +| 4 | 0.478155 | `azmcp_redis_cluster_list` | ❌ | | 5 | 0.426157 | `azmcp_kusto_cluster_get` | ❌ | --- -## Test 224 +## Test 226 **Expected Tool:** `azmcp_aks_nodepool_get` **Prompt:** Get details for nodepool in AKS cluster in @@ -4211,15 +4253,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.680959 | `azmcp_aks_nodepool_get` | ✅ **EXPECTED** | -| 2 | 0.521908 | `azmcp_aks_cluster_get` | ❌ | -| 3 | 0.517171 | `azmcp_kusto_cluster_get` | ❌ | -| 4 | 0.468490 | `azmcp_virtualdesktop_hostpool_list` | ❌ | -| 5 | 0.463269 | `azmcp_sql_elastic-pool_list` | ❌ | +| 1 | 0.681183 | `azmcp_aks_nodepool_get` | ✅ **EXPECTED** | +| 2 | 0.521738 | `azmcp_aks_cluster_get` | ❌ | +| 3 | 0.516670 | `azmcp_kusto_cluster_get` | ❌ | +| 4 | 0.468656 | `azmcp_virtualdesktop_hostpool_list` | ❌ | +| 5 | 0.463411 | `azmcp_sql_elastic-pool_list` | ❌ | --- -## Test 225 +## Test 227 **Expected Tool:** `azmcp_aks_nodepool_get` **Prompt:** Show me the configuration for nodepool in AKS cluster in resource group @@ -4236,7 +4278,7 @@ --- -## Test 226 +## Test 228 **Expected Tool:** `azmcp_aks_nodepool_get` **Prompt:** What is the setup of nodepool for AKS cluster in ? @@ -4245,15 +4287,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.586185 | `azmcp_aks_nodepool_get` | ✅ **EXPECTED** | -| 2 | 0.411337 | `azmcp_aks_cluster_get` | ❌ | -| 3 | 0.385106 | `azmcp_virtualdesktop_hostpool_list` | ❌ | -| 4 | 0.383014 | `azmcp_sql_elastic-pool_list` | ❌ | -| 5 | 0.355113 | `azmcp_kusto_cluster_get` | ❌ | +| 1 | 0.586702 | `azmcp_aks_nodepool_get` | ✅ **EXPECTED** | +| 2 | 0.411483 | `azmcp_aks_cluster_get` | ❌ | +| 3 | 0.385866 | `azmcp_virtualdesktop_hostpool_list` | ❌ | +| 4 | 0.383428 | `azmcp_sql_elastic-pool_list` | ❌ | +| 5 | 0.355532 | `azmcp_kusto_cluster_get` | ❌ | --- -## Test 227 +## Test 229 **Expected Tool:** `azmcp_aks_nodepool_get` **Prompt:** List nodepools for AKS cluster in @@ -4270,7 +4312,7 @@ --- -## Test 228 +## Test 230 **Expected Tool:** `azmcp_aks_nodepool_get` **Prompt:** Show me the nodepool list for AKS cluster in @@ -4287,7 +4329,7 @@ --- -## Test 229 +## Test 231 **Expected Tool:** `azmcp_aks_nodepool_get` **Prompt:** What nodepools do I have for AKS cluster in @@ -4304,7 +4346,7 @@ --- -## Test 230 +## Test 232 **Expected Tool:** `azmcp_loadtesting_test_create` **Prompt:** Create a basic URL test using the following endpoint URL that runs for 30 minutes with 45 virtual users. The test name is with the test id and the load testing resource is in the resource group in my subscription @@ -4321,7 +4363,7 @@ --- -## Test 231 +## Test 233 **Expected Tool:** `azmcp_loadtesting_test_get` **Prompt:** Get the load test with id in the load test resource in resource group @@ -4330,15 +4372,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.626226 | `azmcp_loadtesting_testresource_list` | ❌ | -| 2 | 0.619944 | `azmcp_loadtesting_test_get` | ✅ **EXPECTED** | -| 3 | 0.594666 | `azmcp_loadtesting_testresource_create` | ❌ | -| 4 | 0.520800 | `azmcp_loadtesting_testrun_list` | ❌ | -| 5 | 0.476666 | `azmcp_loadtesting_testrun_create` | ❌ | +| 1 | 0.626234 | `azmcp_loadtesting_testresource_list` | ❌ | +| 2 | 0.619755 | `azmcp_loadtesting_test_get` | ✅ **EXPECTED** | +| 3 | 0.594611 | `azmcp_loadtesting_testresource_create` | ❌ | +| 4 | 0.520630 | `azmcp_loadtesting_testrun_list` | ❌ | +| 5 | 0.476620 | `azmcp_loadtesting_testrun_create` | ❌ | --- -## Test 232 +## Test 234 **Expected Tool:** `azmcp_loadtesting_testresource_create` **Prompt:** Create a load test resource in the resource group in my subscription @@ -4347,15 +4389,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.645747 | `azmcp_loadtesting_testresource_create` | ✅ **EXPECTED** | -| 2 | 0.618893 | `azmcp_loadtesting_testresource_list` | ❌ | -| 3 | 0.541970 | `azmcp_loadtesting_test_create` | ❌ | -| 4 | 0.540032 | `azmcp_loadtesting_testrun_create` | ❌ | -| 5 | 0.442162 | `azmcp_workbooks_create` | ❌ | +| 1 | 0.645543 | `azmcp_loadtesting_testresource_create` | ✅ **EXPECTED** | +| 2 | 0.618792 | `azmcp_loadtesting_testresource_list` | ❌ | +| 3 | 0.541733 | `azmcp_loadtesting_test_create` | ❌ | +| 4 | 0.539761 | `azmcp_loadtesting_testrun_create` | ❌ | +| 5 | 0.442259 | `azmcp_workbooks_create` | ❌ | --- -## Test 233 +## Test 235 **Expected Tool:** `azmcp_loadtesting_testresource_list` **Prompt:** List all load testing resources in the resource group in my subscription @@ -4368,11 +4410,11 @@ | 2 | 0.577408 | `azmcp_group_list` | ❌ | | 3 | 0.575172 | `azmcp_loadtesting_testresource_create` | ❌ | | 4 | 0.565565 | `azmcp_datadog_monitoredresources_list` | ❌ | -| 5 | 0.561822 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 5 | 0.561516 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 234 +## Test 236 **Expected Tool:** `azmcp_loadtesting_testrun_create` **Prompt:** Create a test run using the id for test in the load testing resource in resource group . Use the name of test run and description as @@ -4389,7 +4431,7 @@ --- -## Test 235 +## Test 237 **Expected Tool:** `azmcp_loadtesting_testrun_get` **Prompt:** Get the load test run with id in the load test resource in resource group @@ -4398,15 +4440,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.619146 | `azmcp_loadtesting_testresource_list` | ❌ | -| 2 | 0.601927 | `azmcp_loadtesting_test_get` | ❌ | -| 3 | 0.597430 | `azmcp_loadtesting_testresource_create` | ❌ | -| 4 | 0.565996 | `azmcp_loadtesting_testrun_list` | ❌ | -| 5 | 0.549898 | `azmcp_loadtesting_testrun_create` | ❌ | +| 1 | 0.619176 | `azmcp_loadtesting_testresource_list` | ❌ | +| 2 | 0.601929 | `azmcp_loadtesting_test_get` | ❌ | +| 3 | 0.597480 | `azmcp_loadtesting_testresource_create` | ❌ | +| 4 | 0.565970 | `azmcp_loadtesting_testrun_list` | ❌ | +| 5 | 0.549869 | `azmcp_loadtesting_testrun_create` | ❌ | --- -## Test 236 +## Test 238 **Expected Tool:** `azmcp_loadtesting_testrun_list` **Prompt:** Get all the load test runs for the test with id in the load test resource in resource group @@ -4415,15 +4457,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.669180 | `azmcp_loadtesting_testresource_list` | ❌ | -| 2 | 0.640360 | `azmcp_loadtesting_testrun_list` | ✅ **EXPECTED** | -| 3 | 0.601075 | `azmcp_loadtesting_test_get` | ❌ | -| 4 | 0.577461 | `azmcp_loadtesting_testresource_create` | ❌ | -| 5 | 0.516544 | `azmcp_loadtesting_testrun_get` | ❌ | +| 1 | 0.669134 | `azmcp_loadtesting_testresource_list` | ❌ | +| 2 | 0.640416 | `azmcp_loadtesting_testrun_list` | ✅ **EXPECTED** | +| 3 | 0.601071 | `azmcp_loadtesting_test_get` | ❌ | +| 4 | 0.577513 | `azmcp_loadtesting_testresource_create` | ❌ | +| 5 | 0.516536 | `azmcp_loadtesting_testrun_get` | ❌ | --- -## Test 237 +## Test 239 **Expected Tool:** `azmcp_loadtesting_testrun_update` **Prompt:** Update a test run display name as for the id for test in the load testing resource in resource group . @@ -4440,7 +4482,7 @@ --- -## Test 238 +## Test 240 **Expected Tool:** `azmcp_grafana_list` **Prompt:** List all Azure Managed Grafana in one subscription @@ -4450,99 +4492,133 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.599427 | `azmcp_kusto_cluster_list` | ❌ | -| 2 | 0.578892 | `azmcp_grafana_list` | ✅ **EXPECTED** | -| 3 | 0.551851 | `azmcp_search_service_list` | ❌ | +| 2 | 0.578984 | `azmcp_grafana_list` | ✅ **EXPECTED** | +| 3 | 0.551963 | `azmcp_search_service_list` | ❌ | | 4 | 0.550372 | `azmcp_subscription_list` | ❌ | -| 5 | 0.523050 | `azmcp_redis_cluster_list` | ❌ | +| 5 | 0.522930 | `azmcp_redis_cluster_list` | ❌ | --- -## Test 239 +## Test 241 + +**Expected Tool:** `azmcp_managedlustre_filesystem_create` +**Prompt:** Create an Azure Managed Lustre filesystem with name , size , SKU , and subnet for availability zone in location . Maintenance should occur on at + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.728113 | `azmcp_managedlustre_filesystem_create` | ✅ **EXPECTED** | +| 2 | 0.616164 | `azmcp_managedlustre_filesystem_list` | ❌ | +| 3 | 0.605775 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 4 | 0.598255 | `azmcp_managedlustre_filesystem_update` | ❌ | +| 5 | 0.557720 | `azmcp_managedlustre_filesystem_subnetsize_validate` | ❌ | + +--- + +## Test 242 -**Expected Tool:** `azmcp_azuremanagedlustre_filesystem_list` +**Expected Tool:** `azmcp_managedlustre_filesystem_list` **Prompt:** List the Azure Managed Lustre filesystems in my subscription ### Results | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.750607 | `azmcp_azuremanagedlustre_filesystem_list` | ✅ **EXPECTED** | -| 2 | 0.631659 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | -| 3 | 0.582709 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | -| 4 | 0.562371 | `azmcp_kusto_cluster_list` | ❌ | -| 5 | 0.513139 | `azmcp_search_service_list` | ❌ | +| 1 | 0.750675 | `azmcp_managedlustre_filesystem_list` | ✅ **EXPECTED** | +| 2 | 0.631770 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 3 | 0.582660 | `azmcp_managedlustre_filesystem_create` | ❌ | +| 4 | 0.562377 | `azmcp_kusto_cluster_list` | ❌ | +| 5 | 0.513204 | `azmcp_search_service_list` | ❌ | --- -## Test 240 +## Test 243 -**Expected Tool:** `azmcp_azuremanagedlustre_filesystem_list` +**Expected Tool:** `azmcp_managedlustre_filesystem_list` **Prompt:** List the Azure Managed Lustre filesystems in my resource group ### Results | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.743903 | `azmcp_azuremanagedlustre_filesystem_list` | ✅ **EXPECTED** | -| 2 | 0.613217 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | -| 3 | 0.565856 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | +| 1 | 0.743903 | `azmcp_managedlustre_filesystem_list` | ✅ **EXPECTED** | +| 2 | 0.613217 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 3 | 0.565856 | `azmcp_managedlustre_filesystem_create` | ❌ | | 4 | 0.519986 | `azmcp_datadog_monitoredresources_list` | ❌ | | 5 | 0.515433 | `azmcp_loadtesting_testresource_list` | ❌ | --- -## Test 241 +## Test 244 -**Expected Tool:** `azmcp_azuremanagedlustre_filesystem_sku_get` -**Prompt:** List the Azure Managed Lustre SKUs available in +**Expected Tool:** `azmcp_managedlustre_filesystem_sku_get` +**Prompt:** List the Azure Managed Lustre SKUs available in location ### Results | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.836071 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ✅ **EXPECTED** | -| 2 | 0.626238 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | -| 3 | 0.529078 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | -| 4 | 0.506309 | `azmcp_azuremanagedlustre_filesystem_subnetsize_validate` | ❌ | -| 5 | 0.473879 | `azmcp_kusto_cluster_list` | ❌ | +| 1 | 0.827381 | `azmcp_managedlustre_filesystem_sku_get` | ✅ **EXPECTED** | +| 2 | 0.613674 | `azmcp_managedlustre_filesystem_list` | ❌ | +| 3 | 0.513242 | `azmcp_managedlustre_filesystem_create` | ❌ | +| 4 | 0.496242 | `azmcp_managedlustre_filesystem_subnetsize_validate` | ❌ | +| 5 | 0.470241 | `azmcp_kusto_cluster_list` | ❌ | --- -## Test 242 +## Test 245 -**Expected Tool:** `azmcp_azuremanagedlustre_filesystem_subnetsize_ask` -**Prompt:** Tell me how many IP addresses I need for of +**Expected Tool:** `azmcp_managedlustre_filesystem_subnetsize_ask` +**Prompt:** Tell me how many IP addresses I need for an Azure Managed Lustre filesystem of size using the SKU ### Results | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.647218 | `azmcp_azuremanagedlustre_filesystem_subnetsize_ask` | ✅ **EXPECTED** | -| 2 | 0.450342 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | -| 3 | 0.449406 | `azmcp_azuremanagedlustre_filesystem_subnetsize_validate` | ❌ | -| 4 | 0.378234 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | -| 5 | 0.327359 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | +| 1 | 0.739766 | `azmcp_managedlustre_filesystem_subnetsize_ask` | ✅ **EXPECTED** | +| 2 | 0.651598 | `azmcp_managedlustre_filesystem_subnetsize_validate` | ❌ | +| 3 | 0.594585 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 4 | 0.559498 | `azmcp_managedlustre_filesystem_list` | ❌ | +| 5 | 0.533684 | `azmcp_managedlustre_filesystem_create` | ❌ | --- -## Test 243 +## Test 246 -**Expected Tool:** `azmcp_azuremanagedlustre_filesystem_subnetsize_validate` -**Prompt:** Validate if can host of +**Expected Tool:** `azmcp_managedlustre_filesystem_subnetsize_validate` +**Prompt:** Validate if the network can host Azure Managed Lustre filesystem of size using the SKU ### Results | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.737349 | `azmcp_azuremanagedlustre_filesystem_subnetsize_validate` | ✅ **EXPECTED** | -| 2 | 0.565052 | `azmcp_azuremanagedlustre_filesystem_subnetsize_ask` | ❌ | -| 3 | 0.433373 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | -| 4 | 0.400052 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | -| 5 | 0.344070 | `azmcp_azuremanagedlustre_filesystem_update` | ❌ | +| 1 | 0.879389 | `azmcp_managedlustre_filesystem_subnetsize_validate` | ✅ **EXPECTED** | +| 2 | 0.622463 | `azmcp_managedlustre_filesystem_subnetsize_ask` | ❌ | +| 3 | 0.542808 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 4 | 0.515935 | `azmcp_managedlustre_filesystem_create` | ❌ | +| 5 | 0.480855 | `azmcp_managedlustre_filesystem_list` | ❌ | --- -## Test 244 +## Test 247 + +**Expected Tool:** `azmcp_managedlustre_filesystem_update` +**Prompt:** Update the maintenance window of the Azure Managed Lustre filesystem to at + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.738977 | `azmcp_managedlustre_filesystem_update` | ✅ **EXPECTED** | +| 2 | 0.527562 | `azmcp_managedlustre_filesystem_create` | ❌ | +| 3 | 0.487137 | `azmcp_managedlustre_filesystem_list` | ❌ | +| 4 | 0.385276 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 5 | 0.344943 | `azmcp_managedlustre_filesystem_subnetsize_validate` | ❌ | + +--- + +## Test 248 **Expected Tool:** `azmcp_marketplace_product_get` **Prompt:** Get details about marketplace product @@ -4551,7 +4627,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.570145 | `azmcp_marketplace_product_get` | ✅ **EXPECTED** | +| 1 | 0.570109 | `azmcp_marketplace_product_get` | ✅ **EXPECTED** | | 2 | 0.477522 | `azmcp_marketplace_product_list` | ❌ | | 3 | 0.353256 | `azmcp_servicebus_topic_subscription_details` | ❌ | | 4 | 0.333160 | `azmcp_servicebus_topic_details` | ❌ | @@ -4559,7 +4635,7 @@ --- -## Test 245 +## Test 249 **Expected Tool:** `azmcp_marketplace_product_list` **Prompt:** Search for Microsoft products in the marketplace @@ -4569,14 +4645,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.527078 | `azmcp_marketplace_product_list` | ✅ **EXPECTED** | -| 2 | 0.443133 | `azmcp_marketplace_product_get` | ❌ | -| 3 | 0.343549 | `azmcp_search_service_list` | ❌ | +| 2 | 0.443109 | `azmcp_marketplace_product_get` | ❌ | +| 3 | 0.343533 | `azmcp_search_service_list` | ❌ | | 4 | 0.330500 | `azmcp_foundry_models_list` | ❌ | -| 5 | 0.328676 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | +| 5 | 0.328676 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | --- -## Test 246 +## Test 250 **Expected Tool:** `azmcp_marketplace_product_list` **Prompt:** Show me marketplace products from publisher @@ -4586,14 +4662,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.461616 | `azmcp_marketplace_product_list` | ✅ **EXPECTED** | -| 2 | 0.385167 | `azmcp_marketplace_product_get` | ❌ | +| 2 | 0.385111 | `azmcp_marketplace_product_get` | ❌ | | 3 | 0.308769 | `azmcp_foundry_models_list` | ❌ | -| 4 | 0.260387 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | -| 5 | 0.247936 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.260387 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | +| 5 | 0.247908 | `azmcp_eventgrid_topic_list` | ❌ | --- -## Test 247 +## Test 251 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure code generation best practices @@ -4604,13 +4680,13 @@ |------|-------|------|--------| | 1 | 0.646844 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.635406 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.586863 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.586907 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.531728 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.490235 | `azmcp_deploy_plan_get` | ❌ | --- -## Test 248 +## Test 252 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure deployment best practices @@ -4621,13 +4697,13 @@ |------|-------|------|--------| | 1 | 0.600903 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.548542 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.540998 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.541091 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.516852 | `azmcp_deploy_plan_get` | ❌ | | 5 | 0.516443 | `azmcp_deploy_pipeline_guidance_get` | ❌ | --- -## Test 249 +## Test 253 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure best practices @@ -4638,13 +4714,13 @@ |------|-------|------|--------| | 1 | 0.625259 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.594323 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.518569 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.518643 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.465573 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.450629 | `azmcp_cloudarchitect_design` | ❌ | --- -## Test 250 +## Test 254 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure Functions code generation best practices @@ -4655,13 +4731,13 @@ |------|-------|------|--------| | 1 | 0.624273 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.570488 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.522964 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.522998 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.493998 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.445382 | `azmcp_deploy_plan_get` | ❌ | --- -## Test 251 +## Test 255 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure Functions deployment best practices @@ -4672,13 +4748,13 @@ |------|-------|------|--------| | 1 | 0.581850 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.497350 | `azmcp_deploy_pipeline_guidance_get` | ❌ | -| 3 | 0.495560 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.495659 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.486886 | `azmcp_azureterraformbestpractices_get` | ❌ | | 5 | 0.474511 | `azmcp_deploy_plan_get` | ❌ | --- -## Test 252 +## Test 256 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure Functions best practices @@ -4689,13 +4765,13 @@ |------|-------|------|--------| | 1 | 0.610986 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.532790 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.487244 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.487322 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.458060 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.413150 | `azmcp_functionapp_get` | ❌ | --- -## Test 253 +## Test 257 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** Get the latest Azure Static Web Apps best practices @@ -4706,13 +4782,13 @@ |------|-------|------|--------| | 1 | 0.557862 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.513262 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.504936 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.505123 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.483705 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.421581 | `azmcp_cloudarchitect_design` | ❌ | --- -## Test 254 +## Test 258 **Expected Tool:** `azmcp_get_bestpractices_get` **Prompt:** What are azure function best practices? @@ -4723,13 +4799,13 @@ |------|-------|------|--------| | 1 | 0.582541 | `azmcp_get_bestpractices_get` | ✅ **EXPECTED** | | 2 | 0.500368 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.472066 | `azmcp_deploy_iac_rules_get` | ❌ | +| 3 | 0.472112 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.433134 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.432087 | `azmcp_cloudarchitect_design` | ❌ | --- -## Test 255 +## Test 259 **Expected Tool:** `azmcp_monitor_healthmodels_entity_gethealth` **Prompt:** Show me the health status of entity using the health model @@ -4740,13 +4816,13 @@ |------|-------|------|--------| | 1 | 0.660947 | `azmcp_monitor_healthmodels_entity_gethealth` | ✅ **EXPECTED** | | 2 | 0.603767 | `azmcp_resourcehealth_availability-status_get` | ❌ | -| 3 | 0.355116 | `azmcp_foundry_openai_models-list` | ❌ | -| 4 | 0.351518 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.355069 | `azmcp_foundry_openai_models-list` | ❌ | +| 4 | 0.351697 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 5 | 0.328321 | `azmcp_resourcehealth_service-health-events_list` | ❌ | --- -## Test 256 +## Test 260 **Expected Tool:** `azmcp_monitor_metrics_definitions` **Prompt:** Get metric definitions for from the namespace @@ -4757,13 +4833,13 @@ |------|-------|------|--------| | 1 | 0.592640 | `azmcp_monitor_metrics_definitions` | ✅ **EXPECTED** | | 2 | 0.424141 | `azmcp_monitor_metrics_query` | ❌ | -| 3 | 0.368231 | `azmcp_bicepschema_get` | ❌ | -| 4 | 0.332281 | `azmcp_monitor_table_type_list` | ❌ | +| 3 | 0.368319 | `azmcp_bicepschema_get` | ❌ | +| 4 | 0.332356 | `azmcp_monitor_table_type_list` | ❌ | | 5 | 0.322486 | `azmcp_resourcehealth_availability-status_get` | ❌ | --- -## Test 257 +## Test 261 **Expected Tool:** `azmcp_monitor_metrics_definitions` **Prompt:** Show me all available metrics and their definitions for storage account @@ -4774,13 +4850,13 @@ |------|-------|------|--------| | 1 | 0.589859 | `azmcp_storage_account_get` | ❌ | | 2 | 0.587736 | `azmcp_monitor_metrics_definitions` | ✅ **EXPECTED** | -| 3 | 0.551156 | `azmcp_storage_blob_container_get` | ❌ | -| 4 | 0.473421 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | -| 5 | 0.472677 | `azmcp_storage_blob_get` | ❌ | +| 3 | 0.551244 | `azmcp_storage_blob_container_get` | ❌ | +| 4 | 0.522369 | `azmcp_tables_list` | ❌ | +| 5 | 0.473421 | `azmcp_managedlustre_filesystem_list` | ❌ | --- -## Test 258 +## Test 262 **Expected Tool:** `azmcp_monitor_metrics_definitions` **Prompt:** What metric definitions are available for the Application Insights resource @@ -4793,11 +4869,11 @@ | 2 | 0.495513 | `azmcp_monitor_metrics_query` | ❌ | | 3 | 0.433945 | `azmcp_monitor_resource_log_query` | ❌ | | 4 | 0.392960 | `azmcp_loadtesting_testresource_list` | ❌ | -| 5 | 0.388688 | `azmcp_bicepschema_get` | ❌ | +| 5 | 0.388750 | `azmcp_bicepschema_get` | ❌ | --- -## Test 259 +## Test 263 **Expected Tool:** `azmcp_monitor_metrics_query` **Prompt:** Analyze the performance trends and response times for Application Insights resource over the last @@ -4806,15 +4882,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.555377 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | -| 2 | 0.527530 | `azmcp_monitor_resource_log_query` | ❌ | -| 3 | 0.464743 | `azmcp_applens_resource_diagnose` | ❌ | -| 4 | 0.420462 | `azmcp_resourcehealth_service-health-events_list` | ❌ | -| 5 | 0.413282 | `azmcp_applicationinsights_recommendation_list` | ❌ | +| 1 | 0.555331 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | +| 2 | 0.527489 | `azmcp_monitor_resource_log_query` | ❌ | +| 3 | 0.464978 | `azmcp_applens_resource_diagnose` | ❌ | +| 4 | 0.420349 | `azmcp_resourcehealth_service-health-events_list` | ❌ | +| 5 | 0.413281 | `azmcp_applicationinsights_recommendation_list` | ❌ | --- -## Test 260 +## Test 264 **Expected Tool:** `azmcp_monitor_metrics_query` **Prompt:** Check the availability metrics for my Application Insights resource for the last @@ -4825,13 +4901,13 @@ |------|-------|------|--------| | 1 | 0.557830 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | | 2 | 0.476671 | `azmcp_monitor_resource_log_query` | ❌ | -| 3 | 0.460351 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.460611 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 4 | 0.455904 | `azmcp_quota_usage_check` | ❌ | | 5 | 0.438233 | `azmcp_monitor_metrics_definitions` | ❌ | --- -## Test 261 +## Test 265 **Expected Tool:** `azmcp_monitor_metrics_query` **Prompt:** Get the metric for over the last with intervals @@ -4840,15 +4916,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.461249 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | -| 2 | 0.390029 | `azmcp_monitor_metrics_definitions` | ❌ | -| 3 | 0.338557 | `azmcp_monitor_resource_log_query` | ❌ | -| 4 | 0.329996 | `azmcp_resourcehealth_availability-status_get` | ❌ | -| 5 | 0.306382 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 1 | 0.461223 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | +| 2 | 0.390023 | `azmcp_monitor_metrics_definitions` | ❌ | +| 3 | 0.338499 | `azmcp_monitor_resource_log_query` | ❌ | +| 4 | 0.329877 | `azmcp_resourcehealth_availability-status_get` | ❌ | +| 5 | 0.306274 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 262 +## Test 266 **Expected Tool:** `azmcp_monitor_metrics_query` **Prompt:** Investigate error rates and failed requests for Application Insights resource for the last @@ -4859,13 +4935,13 @@ |------|-------|------|--------| | 1 | 0.496878 | `azmcp_monitor_resource_log_query` | ❌ | | 2 | 0.492138 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | -| 3 | 0.448148 | `azmcp_applens_resource_diagnose` | ❌ | +| 3 | 0.448962 | `azmcp_applens_resource_diagnose` | ❌ | | 4 | 0.412184 | `azmcp_resourcehealth_service-health-events_list` | ❌ | | 5 | 0.397335 | `azmcp_quota_usage_check` | ❌ | --- -## Test 263 +## Test 267 **Expected Tool:** `azmcp_monitor_metrics_query` **Prompt:** Query the metric for for the last @@ -4882,7 +4958,7 @@ --- -## Test 264 +## Test 268 **Expected Tool:** `azmcp_monitor_metrics_query` **Prompt:** What's the request per second rate for my Application Insights resource over the last @@ -4891,15 +4967,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.480094 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | -| 2 | 0.444765 | `azmcp_monitor_resource_log_query` | ❌ | -| 3 | 0.388415 | `azmcp_applens_resource_diagnose` | ❌ | -| 4 | 0.363471 | `azmcp_quota_usage_check` | ❌ | -| 5 | 0.350037 | `azmcp_resourcehealth_service-health-events_list` | ❌ | +| 1 | 0.480140 | `azmcp_monitor_metrics_query` | ✅ **EXPECTED** | +| 2 | 0.444779 | `azmcp_monitor_resource_log_query` | ❌ | +| 3 | 0.388737 | `azmcp_applens_resource_diagnose` | ❌ | +| 4 | 0.363411 | `azmcp_quota_usage_check` | ❌ | +| 5 | 0.350076 | `azmcp_resourcehealth_service-health-events_list` | ❌ | --- -## Test 265 +## Test 269 **Expected Tool:** `azmcp_monitor_resource_log_query` **Prompt:** Show me the logs for the past hour for the resource in the Log Analytics workspace @@ -4908,15 +4984,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.688531 | `azmcp_monitor_resource_log_query` | ✅ **EXPECTED** | -| 2 | 0.622361 | `azmcp_monitor_workspace_log_query` | ❌ | -| 3 | 0.485907 | `azmcp_deploy_app_logs_get` | ❌ | -| 4 | 0.469654 | `azmcp_monitor_metrics_query` | ❌ | -| 5 | 0.444184 | `azmcp_monitor_workspace_list` | ❌ | +| 1 | 0.687852 | `azmcp_monitor_resource_log_query` | ✅ **EXPECTED** | +| 2 | 0.621919 | `azmcp_monitor_workspace_log_query` | ❌ | +| 3 | 0.485633 | `azmcp_deploy_app_logs_get` | ❌ | +| 4 | 0.469703 | `azmcp_monitor_metrics_query` | ❌ | +| 5 | 0.443468 | `azmcp_monitor_workspace_list` | ❌ | --- -## Test 266 +## Test 270 **Expected Tool:** `azmcp_monitor_table_list` **Prompt:** List all tables in the Log Analytics workspace @@ -4925,15 +5001,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.851012 | `azmcp_monitor_table_list` | ✅ **EXPECTED** | -| 2 | 0.725769 | `azmcp_monitor_table_type_list` | ❌ | -| 3 | 0.620440 | `azmcp_monitor_workspace_list` | ❌ | -| 4 | 0.541928 | `azmcp_kusto_table_list` | ❌ | -| 5 | 0.539481 | `azmcp_monitor_workspace_log_query` | ❌ | +| 1 | 0.851075 | `azmcp_monitor_table_list` | ✅ **EXPECTED** | +| 2 | 0.725738 | `azmcp_monitor_table_type_list` | ❌ | +| 3 | 0.648484 | `azmcp_tables_list` | ❌ | +| 4 | 0.620445 | `azmcp_monitor_workspace_list` | ❌ | +| 5 | 0.541928 | `azmcp_kusto_table_list` | ❌ | --- -## Test 267 +## Test 271 **Expected Tool:** `azmcp_monitor_table_list` **Prompt:** Show me the tables in the Log Analytics workspace @@ -4942,15 +5018,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.798554 | `azmcp_monitor_table_list` | ✅ **EXPECTED** | -| 2 | 0.701174 | `azmcp_monitor_table_type_list` | ❌ | -| 3 | 0.599911 | `azmcp_monitor_workspace_list` | ❌ | -| 4 | 0.542820 | `azmcp_monitor_workspace_log_query` | ❌ | -| 5 | 0.502882 | `azmcp_monitor_resource_log_query` | ❌ | +| 1 | 0.798459 | `azmcp_monitor_table_list` | ✅ **EXPECTED** | +| 2 | 0.701122 | `azmcp_monitor_table_type_list` | ❌ | +| 3 | 0.599916 | `azmcp_monitor_workspace_list` | ❌ | +| 4 | 0.583651 | `azmcp_tables_list` | ❌ | +| 5 | 0.542820 | `azmcp_monitor_workspace_log_query` | ❌ | --- -## Test 268 +## Test 272 **Expected Tool:** `azmcp_monitor_table_type_list` **Prompt:** List all available table types in the Log Analytics workspace @@ -4959,15 +5035,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.881513 | `azmcp_monitor_table_type_list` | ✅ **EXPECTED** | -| 2 | 0.765606 | `azmcp_monitor_table_list` | ❌ | -| 3 | 0.569960 | `azmcp_monitor_workspace_list` | ❌ | -| 4 | 0.504683 | `azmcp_mysql_table_list` | ❌ | -| 5 | 0.497622 | `azmcp_monitor_workspace_log_query` | ❌ | +| 1 | 0.881524 | `azmcp_monitor_table_type_list` | ✅ **EXPECTED** | +| 2 | 0.765702 | `azmcp_monitor_table_list` | ❌ | +| 3 | 0.572097 | `azmcp_tables_list` | ❌ | +| 4 | 0.569921 | `azmcp_monitor_workspace_list` | ❌ | +| 5 | 0.504683 | `azmcp_mysql_table_list` | ❌ | --- -## Test 269 +## Test 273 **Expected Tool:** `azmcp_monitor_table_type_list` **Prompt:** Show me the available table types in the Log Analytics workspace @@ -4976,15 +5052,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.843155 | `azmcp_monitor_table_type_list` | ✅ **EXPECTED** | -| 2 | 0.736856 | `azmcp_monitor_table_list` | ❌ | -| 3 | 0.576762 | `azmcp_monitor_workspace_list` | ❌ | -| 4 | 0.509598 | `azmcp_monitor_workspace_log_query` | ❌ | -| 5 | 0.481189 | `azmcp_mysql_table_list` | ❌ | +| 1 | 0.843139 | `azmcp_monitor_table_type_list` | ✅ **EXPECTED** | +| 2 | 0.736837 | `azmcp_monitor_table_list` | ❌ | +| 3 | 0.576731 | `azmcp_monitor_workspace_list` | ❌ | +| 4 | 0.533863 | `azmcp_tables_list` | ❌ | +| 5 | 0.509598 | `azmcp_monitor_workspace_log_query` | ❌ | --- -## Test 270 +## Test 274 **Expected Tool:** `azmcp_monitor_workspace_list` **Prompt:** List all Log Analytics workspaces in my subscription @@ -4993,15 +5069,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.813955 | `azmcp_monitor_workspace_list` | ✅ **EXPECTED** | -| 2 | 0.680201 | `azmcp_grafana_list` | ❌ | -| 3 | 0.660114 | `azmcp_monitor_table_list` | ❌ | +| 1 | 0.813902 | `azmcp_monitor_workspace_list` | ✅ **EXPECTED** | +| 2 | 0.680276 | `azmcp_grafana_list` | ❌ | +| 3 | 0.660135 | `azmcp_monitor_table_list` | ❌ | | 4 | 0.610623 | `azmcp_kusto_cluster_list` | ❌ | -| 5 | 0.600802 | `azmcp_search_service_list` | ❌ | +| 5 | 0.600860 | `azmcp_search_service_list` | ❌ | --- -## Test 271 +## Test 275 **Expected Tool:** `azmcp_monitor_workspace_list` **Prompt:** Show me my Log Analytics workspaces @@ -5010,15 +5086,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.656200 | `azmcp_monitor_workspace_list` | ✅ **EXPECTED** | -| 2 | 0.585559 | `azmcp_monitor_table_list` | ❌ | -| 3 | 0.531153 | `azmcp_monitor_table_type_list` | ❌ | -| 4 | 0.518254 | `azmcp_grafana_list` | ❌ | +| 1 | 0.656194 | `azmcp_monitor_workspace_list` | ✅ **EXPECTED** | +| 2 | 0.585436 | `azmcp_monitor_table_list` | ❌ | +| 3 | 0.531083 | `azmcp_monitor_table_type_list` | ❌ | +| 4 | 0.518340 | `azmcp_grafana_list` | ❌ | | 5 | 0.506772 | `azmcp_monitor_workspace_log_query` | ❌ | --- -## Test 272 +## Test 276 **Expected Tool:** `azmcp_monitor_workspace_list` **Prompt:** Show me the Log Analytics workspaces in my subscription @@ -5027,15 +5103,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.732999 | `azmcp_monitor_workspace_list` | ✅ **EXPECTED** | -| 2 | 0.601481 | `azmcp_grafana_list` | ❌ | -| 3 | 0.580385 | `azmcp_monitor_table_list` | ❌ | +| 1 | 0.732962 | `azmcp_monitor_workspace_list` | ✅ **EXPECTED** | +| 2 | 0.601544 | `azmcp_grafana_list` | ❌ | +| 3 | 0.580261 | `azmcp_monitor_table_list` | ❌ | | 4 | 0.523782 | `azmcp_monitor_workspace_log_query` | ❌ | | 5 | 0.522749 | `azmcp_kusto_cluster_list` | ❌ | --- -## Test 273 +## Test 277 **Expected Tool:** `azmcp_monitor_workspace_log_query` **Prompt:** Show me the logs for the past hour in the Log Analytics workspace @@ -5047,12 +5123,12 @@ | 1 | 0.610115 | `azmcp_monitor_workspace_log_query` | ✅ **EXPECTED** | | 2 | 0.587614 | `azmcp_monitor_resource_log_query` | ❌ | | 3 | 0.498269 | `azmcp_deploy_app_logs_get` | ❌ | -| 4 | 0.486223 | `azmcp_monitor_table_list` | ❌ | -| 5 | 0.483341 | `azmcp_monitor_workspace_list` | ❌ | +| 4 | 0.485984 | `azmcp_monitor_table_list` | ❌ | +| 5 | 0.483323 | `azmcp_monitor_workspace_list` | ❌ | --- -## Test 274 +## Test 278 **Expected Tool:** `azmcp_datadog_monitoredresources_list` **Prompt:** List all monitored resources in the Datadog resource @@ -5061,15 +5137,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.668828 | `azmcp_datadog_monitoredresources_list` | ✅ **EXPECTED** | -| 2 | 0.413661 | `azmcp_loadtesting_testresource_list` | ❌ | -| 3 | 0.413173 | `azmcp_monitor_metrics_query` | ❌ | -| 4 | 0.401731 | `azmcp_grafana_list` | ❌ | -| 5 | 0.393328 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 1 | 0.668785 | `azmcp_datadog_monitoredresources_list` | ✅ **EXPECTED** | +| 2 | 0.413629 | `azmcp_loadtesting_testresource_list` | ❌ | +| 3 | 0.413180 | `azmcp_monitor_metrics_query` | ❌ | +| 4 | 0.401732 | `azmcp_grafana_list` | ❌ | +| 5 | 0.393267 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 275 +## Test 279 **Expected Tool:** `azmcp_datadog_monitoredresources_list` **Prompt:** Show me the monitored resources in the Datadog resource @@ -5082,11 +5158,11 @@ | 2 | 0.443481 | `azmcp_monitor_metrics_query` | ❌ | | 3 | 0.424391 | `azmcp_monitor_resource_log_query` | ❌ | | 4 | 0.385122 | `azmcp_loadtesting_testresource_list` | ❌ | -| 5 | 0.371017 | `azmcp_grafana_list` | ❌ | +| 5 | 0.371053 | `azmcp_grafana_list` | ❌ | --- -## Test 276 +## Test 280 **Expected Tool:** `azmcp_extension_azqr` **Prompt:** Check my Azure subscription for any compliance issues or recommendations @@ -5097,13 +5173,13 @@ |------|-------|------|--------| | 1 | 0.533164 | `azmcp_quota_usage_check` | ❌ | | 2 | 0.481143 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 3 | 0.476826 | `azmcp_extension_azqr` | ✅ **EXPECTED** | +| 3 | 0.476747 | `azmcp_extension_azqr` | ✅ **EXPECTED** | | 4 | 0.471499 | `azmcp_subscription_list` | ❌ | -| 5 | 0.468404 | `azmcp_applens_resource_diagnose` | ❌ | +| 5 | 0.468026 | `azmcp_applens_resource_diagnose` | ❌ | --- -## Test 277 +## Test 281 **Expected Tool:** `azmcp_extension_azqr` **Prompt:** Provide compliance recommendations for my current Azure subscription @@ -5115,12 +5191,12 @@ | 1 | 0.532792 | `azmcp_azureterraformbestpractices_get` | ❌ | | 2 | 0.492863 | `azmcp_get_bestpractices_get` | ❌ | | 3 | 0.476164 | `azmcp_applicationinsights_recommendation_list` | ❌ | -| 4 | 0.473223 | `azmcp_deploy_iac_rules_get` | ❌ | +| 4 | 0.473365 | `azmcp_deploy_iac_rules_get` | ❌ | | 5 | 0.464604 | `azmcp_cloudarchitect_design` | ❌ | --- -## Test 278 +## Test 282 **Expected Tool:** `azmcp_extension_azqr` **Prompt:** Scan my Azure subscription for compliance recommendations @@ -5130,14 +5206,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.536934 | `azmcp_azureterraformbestpractices_get` | ❌ | -| 2 | 0.516925 | `azmcp_extension_azqr` | ✅ **EXPECTED** | +| 2 | 0.516880 | `azmcp_extension_azqr` | ✅ **EXPECTED** | | 3 | 0.514978 | `azmcp_applicationinsights_recommendation_list` | ❌ | | 4 | 0.504673 | `azmcp_quota_usage_check` | ❌ | | 5 | 0.494872 | `azmcp_deploy_plan_get` | ❌ | --- -## Test 279 +## Test 283 **Expected Tool:** `azmcp_quota_region_availability_list` **Prompt:** Show me the available regions for these resource types @@ -5148,13 +5224,13 @@ |------|-------|------|--------| | 1 | 0.590878 | `azmcp_quota_region_availability_list` | ✅ **EXPECTED** | | 2 | 0.413274 | `azmcp_quota_usage_check` | ❌ | -| 3 | 0.373069 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 4 | 0.369855 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | +| 3 | 0.372940 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.369855 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | | 5 | 0.362711 | `azmcp_loadtesting_testresource_list` | ❌ | --- -## Test 280 +## Test 284 **Expected Tool:** `azmcp_quota_usage_check` **Prompt:** Check usage information for in region @@ -5165,13 +5241,13 @@ |------|-------|------|--------| | 1 | 0.609244 | `azmcp_quota_usage_check` | ✅ **EXPECTED** | | 2 | 0.491058 | `azmcp_quota_region_availability_list` | ❌ | -| 3 | 0.384500 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.384350 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 4 | 0.373815 | `azmcp_resourcehealth_availability-status_get` | ❌ | | 5 | 0.362713 | `azmcp_monitor_resource_log_query` | ❌ | --- -## Test 281 +## Test 285 **Expected Tool:** `azmcp_role_assignment_list` **Prompt:** List all available role assignments in my subscription @@ -5183,12 +5259,12 @@ | 1 | 0.645258 | `azmcp_role_assignment_list` | ✅ **EXPECTED** | | 2 | 0.539760 | `azmcp_subscription_list` | ❌ | | 3 | 0.483988 | `azmcp_group_list` | ❌ | -| 4 | 0.478700 | `azmcp_grafana_list` | ❌ | +| 4 | 0.478817 | `azmcp_grafana_list` | ❌ | | 5 | 0.471364 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 282 +## Test 286 **Expected Tool:** `azmcp_role_assignment_list` **Prompt:** Show me the available role assignments in my subscription @@ -5199,13 +5275,13 @@ |------|-------|------|--------| | 1 | 0.609704 | `azmcp_role_assignment_list` | ✅ **EXPECTED** | | 2 | 0.514696 | `azmcp_subscription_list` | ❌ | -| 3 | 0.456956 | `azmcp_grafana_list` | ❌ | +| 3 | 0.457050 | `azmcp_grafana_list` | ❌ | | 4 | 0.449210 | `azmcp_eventgrid_subscription_list` | ❌ | -| 5 | 0.435191 | `azmcp_monitor_workspace_list` | ❌ | +| 5 | 0.435155 | `azmcp_monitor_workspace_list` | ❌ | --- -## Test 283 +## Test 287 **Expected Tool:** `azmcp_redis_cache_accesspolicy_list` **Prompt:** List all access policies in the Redis Cache @@ -5215,14 +5291,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.757057 | `azmcp_redis_cache_accesspolicy_list` | ✅ **EXPECTED** | -| 2 | 0.568469 | `azmcp_redis_cache_list` | ❌ | -| 3 | 0.448062 | `azmcp_redis_cluster_list` | ❌ | +| 2 | 0.568371 | `azmcp_redis_cache_list` | ❌ | +| 3 | 0.448142 | `azmcp_redis_cluster_list` | ❌ | | 4 | 0.377563 | `azmcp_redis_cluster_database_list` | ❌ | -| 5 | 0.322387 | `azmcp_mysql_database_list` | ❌ | +| 5 | 0.322955 | `azmcp_mysql_database_list` | ❌ | --- -## Test 284 +## Test 288 **Expected Tool:** `azmcp_redis_cache_accesspolicy_list` **Prompt:** Show me the access policies in the Redis Cache @@ -5232,14 +5308,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.713839 | `azmcp_redis_cache_accesspolicy_list` | ✅ **EXPECTED** | -| 2 | 0.564135 | `azmcp_redis_cache_list` | ❌ | -| 3 | 0.450128 | `azmcp_redis_cluster_list` | ❌ | +| 2 | 0.564092 | `azmcp_redis_cache_list` | ❌ | +| 3 | 0.450265 | `azmcp_redis_cluster_list` | ❌ | | 4 | 0.338859 | `azmcp_redis_cluster_database_list` | ❌ | | 5 | 0.293658 | `azmcp_keyvault_admin_settings_get` | ❌ | --- -## Test 285 +## Test 289 **Expected Tool:** `azmcp_redis_cache_list` **Prompt:** List all Redis Caches in my subscription @@ -5248,15 +5324,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.793711 | `azmcp_redis_cache_list` | ✅ **EXPECTED** | -| 2 | 0.660163 | `azmcp_redis_cluster_list` | ❌ | +| 1 | 0.793611 | `azmcp_redis_cache_list` | ✅ **EXPECTED** | +| 2 | 0.660260 | `azmcp_redis_cluster_list` | ❌ | | 3 | 0.509917 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.501880 | `azmcp_redis_cache_accesspolicy_list` | ❌ | | 5 | 0.495048 | `azmcp_postgres_server_list` | ❌ | --- -## Test 286 +## Test 290 **Expected Tool:** `azmcp_redis_cache_list` **Prompt:** Show me my Redis Caches @@ -5265,15 +5341,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.643453 | `azmcp_redis_cache_list` | ✅ **EXPECTED** | -| 2 | 0.523958 | `azmcp_redis_cluster_list` | ❌ | +| 1 | 0.643381 | `azmcp_redis_cache_list` | ✅ **EXPECTED** | +| 2 | 0.524278 | `azmcp_redis_cluster_list` | ❌ | | 3 | 0.450387 | `azmcp_redis_cache_accesspolicy_list` | ❌ | | 4 | 0.401235 | `azmcp_redis_cluster_database_list` | ❌ | -| 5 | 0.302524 | `azmcp_mysql_database_list` | ❌ | +| 5 | 0.302387 | `azmcp_mysql_database_list` | ❌ | --- -## Test 287 +## Test 291 **Expected Tool:** `azmcp_redis_cache_list` **Prompt:** Show me the Redis Caches in my subscription @@ -5282,15 +5358,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.751312 | `azmcp_redis_cache_list` | ✅ **EXPECTED** | -| 2 | 0.631036 | `azmcp_redis_cluster_list` | ❌ | +| 1 | 0.751239 | `azmcp_redis_cache_list` | ✅ **EXPECTED** | +| 2 | 0.631256 | `azmcp_redis_cluster_list` | ❌ | | 3 | 0.461603 | `azmcp_redis_cache_accesspolicy_list` | ❌ | | 4 | 0.434924 | `azmcp_postgres_server_list` | ❌ | -| 5 | 0.427325 | `azmcp_grafana_list` | ❌ | +| 5 | 0.427316 | `azmcp_grafana_list` | ❌ | --- -## Test 288 +## Test 292 **Expected Tool:** `azmcp_redis_cluster_database_list` **Prompt:** List all databases in the Redis Cluster @@ -5300,14 +5376,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.752920 | `azmcp_redis_cluster_database_list` | ✅ **EXPECTED** | -| 2 | 0.643523 | `azmcp_redis_cluster_list` | ❌ | -| 3 | 0.618538 | `azmcp_kusto_database_list` | ❌ | -| 4 | 0.548268 | `azmcp_postgres_database_list` | ❌ | -| 5 | 0.538341 | `azmcp_cosmos_database_list` | ❌ | +| 2 | 0.643579 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.618440 | `azmcp_kusto_database_list` | ❌ | +| 4 | 0.548251 | `azmcp_postgres_database_list` | ❌ | +| 5 | 0.538403 | `azmcp_cosmos_database_list` | ❌ | --- -## Test 289 +## Test 293 **Expected Tool:** `azmcp_redis_cluster_database_list` **Prompt:** Show me the databases in the Redis Cluster @@ -5316,15 +5392,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.721477 | `azmcp_redis_cluster_database_list` | ✅ **EXPECTED** | -| 2 | 0.624838 | `azmcp_redis_cluster_list` | ❌ | -| 3 | 0.560254 | `azmcp_kusto_database_list` | ❌ | -| 4 | 0.494310 | `azmcp_redis_cache_list` | ❌ | -| 5 | 0.489598 | `azmcp_mysql_database_list` | ❌ | +| 1 | 0.721506 | `azmcp_redis_cluster_database_list` | ✅ **EXPECTED** | +| 2 | 0.624961 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.560149 | `azmcp_kusto_database_list` | ❌ | +| 4 | 0.494208 | `azmcp_redis_cache_list` | ❌ | +| 5 | 0.490983 | `azmcp_mysql_database_list` | ❌ | --- -## Test 290 +## Test 294 **Expected Tool:** `azmcp_redis_cluster_list` **Prompt:** List all Redis Clusters in my subscription @@ -5333,15 +5409,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.844671 | `azmcp_redis_cluster_list` | ✅ **EXPECTED** | +| 1 | 0.844541 | `azmcp_redis_cluster_list` | ✅ **EXPECTED** | | 2 | 0.733512 | `azmcp_kusto_cluster_list` | ❌ | -| 3 | 0.665414 | `azmcp_redis_cache_list` | ❌ | +| 3 | 0.665372 | `azmcp_redis_cache_list` | ❌ | | 4 | 0.588847 | `azmcp_redis_cluster_database_list` | ❌ | -| 5 | 0.571644 | `azmcp_kusto_database_list` | ❌ | +| 5 | 0.571794 | `azmcp_kusto_database_list` | ❌ | --- -## Test 291 +## Test 295 **Expected Tool:** `azmcp_redis_cluster_list` **Prompt:** Show me my Redis Clusters @@ -5350,15 +5426,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.687970 | `azmcp_redis_cluster_list` | ✅ **EXPECTED** | -| 2 | 0.533499 | `azmcp_redis_cache_list` | ❌ | +| 1 | 0.688237 | `azmcp_redis_cluster_list` | ✅ **EXPECTED** | +| 2 | 0.533459 | `azmcp_redis_cache_list` | ❌ | | 3 | 0.514374 | `azmcp_redis_cluster_database_list` | ❌ | | 4 | 0.448557 | `azmcp_kusto_cluster_list` | ❌ | | 5 | 0.395942 | `azmcp_kusto_cluster_get` | ❌ | --- -## Test 292 +## Test 296 **Expected Tool:** `azmcp_redis_cluster_list` **Prompt:** Show me the Redis Clusters in my subscription @@ -5367,15 +5443,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.797182 | `azmcp_redis_cluster_list` | ✅ **EXPECTED** | -| 2 | 0.637109 | `azmcp_redis_cache_list` | ❌ | +| 1 | 0.797199 | `azmcp_redis_cluster_list` | ✅ **EXPECTED** | +| 2 | 0.637067 | `azmcp_redis_cache_list` | ❌ | | 3 | 0.633001 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.518857 | `azmcp_redis_cluster_database_list` | ❌ | | 5 | 0.515638 | `azmcp_kusto_cluster_get` | ❌ | --- -## Test 293 +## Test 297 **Expected Tool:** `azmcp_group_list` **Prompt:** List all resource groups in my subscription @@ -5388,11 +5464,11 @@ | 2 | 0.566552 | `azmcp_workbooks_list` | ❌ | | 3 | 0.564566 | `azmcp_loadtesting_testresource_list` | ❌ | | 4 | 0.552633 | `azmcp_datadog_monitoredresources_list` | ❌ | -| 5 | 0.546721 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 5 | 0.546156 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 294 +## Test 298 **Expected Tool:** `azmcp_group_list` **Prompt:** Show me my resource groups @@ -5405,11 +5481,11 @@ | 2 | 0.463685 | `azmcp_datadog_monitoredresources_list` | ❌ | | 3 | 0.462391 | `azmcp_mysql_server_list` | ❌ | | 4 | 0.460280 | `azmcp_loadtesting_testresource_list` | ❌ | -| 5 | 0.459641 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 5 | 0.459304 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 295 +## Test 299 **Expected Tool:** `azmcp_group_list` **Prompt:** Show me the resource groups in my subscription @@ -5420,13 +5496,13 @@ |------|-------|------|--------| | 1 | 0.665772 | `azmcp_group_list` | ✅ **EXPECTED** | | 2 | 0.532656 | `azmcp_datadog_monitoredresources_list` | ❌ | -| 3 | 0.532369 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 4 | 0.532147 | `azmcp_eventgrid_topic_list` | ❌ | +| 3 | 0.532054 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.531920 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 5 | 0.529702 | `azmcp_loadtesting_testresource_list` | ❌ | --- -## Test 296 +## Test 300 **Expected Tool:** `azmcp_resourcehealth_availability-status_get` **Prompt:** Get the availability status for resource @@ -5436,14 +5512,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.555166 | `azmcp_resourcehealth_availability-status_get` | ✅ **EXPECTED** | -| 2 | 0.538277 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 3 | 0.404305 | `azmcp_foundry_openai_models-list` | ❌ | +| 2 | 0.538273 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.404303 | `azmcp_foundry_openai_models-list` | ❌ | | 4 | 0.377586 | `azmcp_quota_usage_check` | ❌ | | 5 | 0.373112 | `azmcp_monitor_healthmodels_entity_gethealth` | ❌ | --- -## Test 297 +## Test 301 **Expected Tool:** `azmcp_resourcehealth_availability-status_get` **Prompt:** Show me the health status of the storage account @@ -5454,13 +5530,13 @@ |------|-------|------|--------| | 1 | 0.565992 | `azmcp_resourcehealth_availability-status_get` | ✅ **EXPECTED** | | 2 | 0.549306 | `azmcp_storage_account_get` | ❌ | -| 3 | 0.510357 | `azmcp_storage_blob_container_get` | ❌ | -| 4 | 0.466950 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 5 | 0.455902 | `azmcp_storage_account_create` | ❌ | +| 3 | 0.510541 | `azmcp_storage_blob_container_get` | ❌ | +| 4 | 0.476514 | `azmcp_tables_list` | ❌ | +| 5 | 0.466885 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 298 +## Test 302 **Expected Tool:** `azmcp_resourcehealth_availability-status_get` **Prompt:** What is the availability status of virtual machine in resource group ? @@ -5469,15 +5545,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.577529 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 1 | 0.577398 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 2 | 0.501221 | `azmcp_resourcehealth_availability-status_get` | ✅ **EXPECTED** | | 3 | 0.424939 | `azmcp_mysql_server_list` | ❌ | -| 4 | 0.413484 | `azmcp_foundry_openai_models-list` | ❌ | +| 4 | 0.413446 | `azmcp_foundry_openai_models-list` | ❌ | | 5 | 0.412025 | `azmcp_loadtesting_testresource_list` | ❌ | --- -## Test 299 +## Test 303 **Expected Tool:** `azmcp_resourcehealth_availability-status_list` **Prompt:** List availability status for all resources in my subscription @@ -5486,15 +5562,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.737550 | `azmcp_resourcehealth_availability-status_list` | ✅ **EXPECTED** | +| 1 | 0.737219 | `azmcp_resourcehealth_availability-status_list` | ✅ **EXPECTED** | | 2 | 0.549914 | `azmcp_loadtesting_testresource_list` | ❌ | -| 3 | 0.548549 | `azmcp_grafana_list` | ❌ | +| 3 | 0.548621 | `azmcp_grafana_list` | ❌ | | 4 | 0.544505 | `azmcp_subscription_list` | ❌ | | 5 | 0.540583 | `azmcp_datadog_monitoredresources_list` | ❌ | --- -## Test 300 +## Test 304 **Expected Tool:** `azmcp_resourcehealth_availability-status_list` **Prompt:** Show me the health status of all my Azure resources @@ -5503,7 +5579,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.644908 | `azmcp_resourcehealth_availability-status_list` | ✅ **EXPECTED** | +| 1 | 0.644982 | `azmcp_resourcehealth_availability-status_list` | ✅ **EXPECTED** | | 2 | 0.546808 | `azmcp_resourcehealth_availability-status_get` | ❌ | | 3 | 0.509740 | `azmcp_resourcehealth_service-health-events_list` | ❌ | | 4 | 0.508252 | `azmcp_quota_usage_check` | ❌ | @@ -5511,7 +5587,7 @@ --- -## Test 301 +## Test 305 **Expected Tool:** `azmcp_resourcehealth_availability-status_list` **Prompt:** What resources in resource group have health issues? @@ -5520,15 +5596,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.596817 | `azmcp_resourcehealth_availability-status_list` | ✅ **EXPECTED** | +| 1 | 0.596890 | `azmcp_resourcehealth_availability-status_list` | ✅ **EXPECTED** | | 2 | 0.550357 | `azmcp_resourcehealth_availability-status_get` | ❌ | | 3 | 0.496640 | `azmcp_resourcehealth_service-health-events_list` | ❌ | -| 4 | 0.441921 | `azmcp_applens_resource_diagnose` | ❌ | +| 4 | 0.442921 | `azmcp_applens_resource_diagnose` | ❌ | | 5 | 0.433614 | `azmcp_loadtesting_testresource_list` | ❌ | --- -## Test 302 +## Test 306 **Expected Tool:** `azmcp_resourcehealth_service-health-events_list` **Prompt:** List all service health events in my subscription @@ -5538,14 +5614,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.690720 | `azmcp_resourcehealth_service-health-events_list` | ✅ **EXPECTED** | -| 2 | 0.554895 | `azmcp_search_service_list` | ❌ | -| 3 | 0.534322 | `azmcp_eventgrid_topic_list` | ❌ | +| 2 | 0.555005 | `azmcp_search_service_list` | ❌ | +| 3 | 0.534251 | `azmcp_eventgrid_topic_list` | ❌ | | 4 | 0.529761 | `azmcp_eventgrid_subscription_list` | ❌ | -| 5 | 0.518595 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 5 | 0.518372 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 303 +## Test 307 **Expected Tool:** `azmcp_resourcehealth_service-health-events_list` **Prompt:** Show me Azure service health events for subscription @@ -5556,13 +5632,13 @@ |------|-------|------|--------| | 1 | 0.686448 | `azmcp_resourcehealth_service-health-events_list` | ✅ **EXPECTED** | | 2 | 0.534556 | `azmcp_eventgrid_subscription_list` | ❌ | -| 3 | 0.513815 | `azmcp_search_service_list` | ❌ | -| 4 | 0.513360 | `azmcp_eventgrid_topic_list` | ❌ | +| 3 | 0.513907 | `azmcp_search_service_list` | ❌ | +| 4 | 0.513259 | `azmcp_eventgrid_topic_list` | ❌ | | 5 | 0.501135 | `azmcp_subscription_list` | ❌ | --- -## Test 304 +## Test 308 **Expected Tool:** `azmcp_resourcehealth_service-health-events_list` **Prompt:** What service issues have occurred in the last 30 days? @@ -5572,14 +5648,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.450841 | `azmcp_resourcehealth_service-health-events_list` | ✅ **EXPECTED** | -| 2 | 0.267663 | `azmcp_applens_resource_diagnose` | ❌ | +| 2 | 0.268441 | `azmcp_applens_resource_diagnose` | ❌ | | 3 | 0.245720 | `azmcp_cloudarchitect_design` | ❌ | -| 4 | 0.216977 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 5 | 0.211842 | `azmcp_search_service_list` | ❌ | +| 4 | 0.216847 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 5 | 0.211838 | `azmcp_search_service_list` | ❌ | --- -## Test 305 +## Test 309 **Expected Tool:** `azmcp_resourcehealth_service-health-events_list` **Prompt:** List active service health events in my subscription @@ -5590,13 +5666,13 @@ |------|-------|------|--------| | 1 | 0.685391 | `azmcp_resourcehealth_service-health-events_list` | ✅ **EXPECTED** | | 2 | 0.527905 | `azmcp_eventgrid_subscription_list` | ❌ | -| 3 | 0.524110 | `azmcp_eventgrid_topic_list` | ❌ | -| 4 | 0.520197 | `azmcp_search_service_list` | ❌ | -| 5 | 0.502345 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.524063 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.520292 | `azmcp_search_service_list` | ❌ | +| 5 | 0.502064 | `azmcp_resourcehealth_availability-status_list` | ❌ | --- -## Test 306 +## Test 310 **Expected Tool:** `azmcp_resourcehealth_service-health-events_list` **Prompt:** Show me planned maintenance events for my Azure services @@ -5606,14 +5682,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.565851 | `azmcp_resourcehealth_service-health-events_list` | ✅ **EXPECTED** | -| 2 | 0.437868 | `azmcp_search_service_list` | ❌ | +| 2 | 0.437864 | `azmcp_search_service_list` | ❌ | | 3 | 0.403665 | `azmcp_eventgrid_subscription_list` | ❌ | -| 4 | 0.402532 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.402493 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 5 | 0.402232 | `azmcp_foundry_agents_list` | ❌ | --- -## Test 307 +## Test 311 **Expected Tool:** `azmcp_servicebus_queue_details` **Prompt:** Show me the details of service bus queue @@ -5625,12 +5701,12 @@ | 1 | 0.642876 | `azmcp_servicebus_queue_details` | ✅ **EXPECTED** | | 2 | 0.460932 | `azmcp_servicebus_topic_subscription_details` | ❌ | | 3 | 0.436980 | `azmcp_servicebus_topic_details` | ❌ | -| 4 | 0.360755 | `azmcp_storage_blob_container_get` | ❌ | +| 4 | 0.360780 | `azmcp_storage_blob_container_get` | ❌ | | 5 | 0.352789 | `azmcp_storage_blob_get` | ❌ | --- -## Test 308 +## Test 312 **Expected Tool:** `azmcp_servicebus_topic_details` **Prompt:** Show me the details of service bus topic @@ -5642,12 +5718,12 @@ | 1 | 0.642952 | `azmcp_servicebus_topic_details` | ✅ **EXPECTED** | | 2 | 0.571860 | `azmcp_servicebus_topic_subscription_details` | ❌ | | 3 | 0.483976 | `azmcp_servicebus_queue_details` | ❌ | -| 4 | 0.482907 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.482958 | `azmcp_eventgrid_topic_list` | ❌ | | 5 | 0.458712 | `azmcp_eventgrid_subscription_list` | ❌ | --- -## Test 309 +## Test 313 **Expected Tool:** `azmcp_servicebus_topic_subscription_details` **Prompt:** Show me the details of service bus subscription @@ -5659,12 +5735,12 @@ | 1 | 0.633187 | `azmcp_servicebus_topic_subscription_details` | ✅ **EXPECTED** | | 2 | 0.517623 | `azmcp_servicebus_topic_details` | ❌ | | 3 | 0.494515 | `azmcp_servicebus_queue_details` | ❌ | -| 4 | 0.493828 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.493853 | `azmcp_eventgrid_topic_list` | ❌ | | 5 | 0.472128 | `azmcp_eventgrid_subscription_list` | ❌ | --- -## Test 310 +## Test 314 **Expected Tool:** `azmcp_signalr_runtime_get` **Prompt:** Show me the details of SignalR @@ -5673,15 +5749,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.534580 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | -| 2 | 0.348950 | `azmcp_redis_cluster_list` | ❌ | -| 3 | 0.321769 | `azmcp_redis_cache_list` | ❌ | +| 1 | 0.532544 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | +| 2 | 0.348345 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.321694 | `azmcp_redis_cache_list` | ❌ | | 4 | 0.319981 | `azmcp_sql_server_show` | ❌ | | 5 | 0.304420 | `azmcp_servicebus_queue_details` | ❌ | --- -## Test 311 +## Test 315 **Expected Tool:** `azmcp_signalr_runtime_get` **Prompt:** Show me the network information of SignalR runtime @@ -5690,15 +5766,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.574837 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | +| 1 | 0.573446 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | | 2 | 0.337342 | `azmcp_sql_server_show` | ❌ | -| 3 | 0.305815 | `azmcp_redis_cluster_list` | ❌ | +| 3 | 0.305486 | `azmcp_redis_cluster_list` | ❌ | | 4 | 0.300956 | `azmcp_servicebus_topic_details` | ❌ | | 5 | 0.288269 | `azmcp_servicebus_topic_subscription_details` | ❌ | --- -## Test 312 +## Test 316 **Expected Tool:** `azmcp_signalr_runtime_get` **Prompt:** Describe the SignalR runtime in resource group @@ -5707,15 +5783,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.710419 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | +| 1 | 0.710353 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | | 2 | 0.411396 | `azmcp_loadtesting_testresource_list` | ❌ | -| 3 | 0.399744 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 4 | 0.382152 | `azmcp_sql_server_list` | ❌ | +| 3 | 0.399412 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.382028 | `azmcp_sql_server_list` | ❌ | | 5 | 0.365585 | `azmcp_functionapp_get` | ❌ | --- -## Test 313 +## Test 317 **Expected Tool:** `azmcp_signalr_runtime_get` **Prompt:** Get information about my SignalR runtime in @@ -5724,15 +5800,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.716718 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | -| 2 | 0.431085 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 1 | 0.715974 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | +| 2 | 0.430829 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 3 | 0.430765 | `azmcp_loadtesting_testresource_list` | ❌ | | 4 | 0.417032 | `azmcp_functionapp_get` | ❌ | | 5 | 0.402913 | `azmcp_sql_server_show` | ❌ | --- -## Test 314 +## Test 318 **Expected Tool:** `azmcp_signalr_runtime_get` **Prompt:** Show all the SignalRs information in @@ -5741,15 +5817,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.564614 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | -| 2 | 0.494767 | `azmcp_resourcehealth_availability-status_list` | ❌ | -| 3 | 0.481414 | `azmcp_loadtesting_testresource_list` | ❌ | -| 4 | 0.462063 | `azmcp_mysql_server_list` | ❌ | -| 5 | 0.460082 | `azmcp_redis_cluster_list` | ❌ | +| 1 | 0.564071 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | +| 2 | 0.494478 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 3 | 0.481428 | `azmcp_loadtesting_testresource_list` | ❌ | +| 4 | 0.462090 | `azmcp_mysql_server_list` | ❌ | +| 5 | 0.459689 | `azmcp_redis_cluster_list` | ❌ | --- -## Test 315 +## Test 319 **Expected Tool:** `azmcp_signalr_runtime_get` **Prompt:** List all SignalRs in my subscription @@ -5758,15 +5834,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.530833 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | +| 1 | 0.530646 | `azmcp_signalr_runtime_get` | ✅ **EXPECTED** | | 2 | 0.507654 | `azmcp_postgres_server_list` | ❌ | | 3 | 0.494498 | `azmcp_kusto_cluster_list` | ❌ | | 4 | 0.487856 | `azmcp_subscription_list` | ❌ | -| 5 | 0.479055 | `azmcp_redis_cluster_list` | ❌ | +| 5 | 0.478456 | `azmcp_redis_cluster_list` | ❌ | --- -## Test 316 +## Test 320 **Expected Tool:** `azmcp_sql_db_create` **Prompt:** Create a new SQL database named in server @@ -5776,14 +5852,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.516780 | `azmcp_sql_db_create` | ✅ **EXPECTED** | -| 2 | 0.470892 | `azmcp_sql_server_create` | ❌ | +| 2 | 0.470920 | `azmcp_sql_server_create` | ❌ | | 3 | 0.420504 | `azmcp_sql_db_rename` | ❌ | | 4 | 0.408515 | `azmcp_sql_db_delete` | ❌ | -| 5 | 0.404740 | `azmcp_sql_server_delete` | ❌ | +| 5 | 0.404860 | `azmcp_sql_server_delete` | ❌ | --- -## Test 317 +## Test 321 **Expected Tool:** `azmcp_sql_db_create` **Prompt:** Create a SQL database with Basic tier in server @@ -5793,14 +5869,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.571760 | `azmcp_sql_db_create` | ✅ **EXPECTED** | -| 2 | 0.459672 | `azmcp_sql_server_create` | ❌ | -| 3 | 0.437409 | `azmcp_sql_server_delete` | ❌ | +| 2 | 0.459642 | `azmcp_sql_server_create` | ❌ | +| 3 | 0.437525 | `azmcp_sql_server_delete` | ❌ | | 4 | 0.424021 | `azmcp_appservice_database_add` | ❌ | | 5 | 0.420843 | `azmcp_sql_db_show` | ❌ | --- -## Test 318 +## Test 322 **Expected Tool:** `azmcp_sql_db_create` **Prompt:** Create a new database called on SQL server in resource group @@ -5809,15 +5885,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.604456 | `azmcp_sql_db_create` | ✅ **EXPECTED** | -| 2 | 0.545827 | `azmcp_sql_server_create` | ❌ | -| 3 | 0.504053 | `azmcp_sql_db_rename` | ❌ | -| 4 | 0.494120 | `azmcp_sql_db_show` | ❌ | -| 5 | 0.473865 | `azmcp_sql_db_list` | ❌ | +| 1 | 0.604526 | `azmcp_sql_db_create` | ✅ **EXPECTED** | +| 2 | 0.545840 | `azmcp_sql_server_create` | ❌ | +| 3 | 0.504198 | `azmcp_sql_db_rename` | ❌ | +| 4 | 0.494361 | `azmcp_sql_db_show` | ❌ | +| 5 | 0.473988 | `azmcp_sql_db_list` | ❌ | --- -## Test 319 +## Test 323 **Expected Tool:** `azmcp_sql_db_delete` **Prompt:** Delete the SQL database from server @@ -5827,14 +5903,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.568196 | `azmcp_sql_db_delete` | ✅ **EXPECTED** | -| 2 | 0.567381 | `azmcp_sql_server_delete` | ❌ | +| 2 | 0.567412 | `azmcp_sql_server_delete` | ❌ | | 3 | 0.391509 | `azmcp_sql_db_rename` | ❌ | | 4 | 0.386564 | `azmcp_sql_server_firewall-rule_delete` | ❌ | | 5 | 0.364776 | `azmcp_sql_db_show` | ❌ | --- -## Test 320 +## Test 324 **Expected Tool:** `azmcp_sql_db_delete` **Prompt:** Remove database from SQL server in resource group @@ -5843,15 +5919,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.567528 | `azmcp_sql_server_delete` | ❌ | -| 2 | 0.543446 | `azmcp_sql_db_delete` | ✅ **EXPECTED** | -| 3 | 0.500745 | `azmcp_sql_db_show` | ❌ | -| 4 | 0.481071 | `azmcp_sql_db_rename` | ❌ | -| 5 | 0.478673 | `azmcp_sql_db_list` | ❌ | +| 1 | 0.567522 | `azmcp_sql_server_delete` | ❌ | +| 2 | 0.543437 | `azmcp_sql_db_delete` | ✅ **EXPECTED** | +| 3 | 0.500757 | `azmcp_sql_db_show` | ❌ | +| 4 | 0.481087 | `azmcp_sql_db_rename` | ❌ | +| 5 | 0.478712 | `azmcp_sql_db_list` | ❌ | --- -## Test 321 +## Test 325 **Expected Tool:** `azmcp_sql_db_delete` **Prompt:** Delete the database called on server @@ -5861,14 +5937,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.509916 | `azmcp_sql_db_delete` | ✅ **EXPECTED** | -| 2 | 0.490822 | `azmcp_sql_server_delete` | ❌ | -| 3 | 0.364494 | `azmcp_postgres_database_list` | ❌ | -| 4 | 0.355545 | `azmcp_mysql_database_list` | ❌ | +| 2 | 0.490893 | `azmcp_sql_server_delete` | ❌ | +| 3 | 0.364399 | `azmcp_postgres_database_list` | ❌ | +| 4 | 0.355395 | `azmcp_mysql_database_list` | ❌ | | 5 | 0.347837 | `azmcp_sql_db_rename` | ❌ | --- -## Test 322 +## Test 326 **Expected Tool:** `azmcp_sql_db_list` **Prompt:** List all databases in the Azure SQL server @@ -5878,14 +5954,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.643186 | `azmcp_sql_db_list` | ✅ **EXPECTED** | -| 2 | 0.640909 | `azmcp_mysql_database_list` | ❌ | -| 3 | 0.609178 | `azmcp_postgres_database_list` | ❌ | -| 4 | 0.602930 | `azmcp_cosmos_database_list` | ❌ | -| 5 | 0.570140 | `azmcp_kusto_database_list` | ❌ | +| 2 | 0.639604 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.609101 | `azmcp_postgres_database_list` | ❌ | +| 4 | 0.602889 | `azmcp_cosmos_database_list` | ❌ | +| 5 | 0.569665 | `azmcp_kusto_database_list` | ❌ | --- -## Test 323 +## Test 327 **Expected Tool:** `azmcp_sql_db_list` **Prompt:** Show me all the databases configuration details in the Azure SQL server @@ -5896,13 +5972,13 @@ |------|-------|------|--------| | 1 | 0.617746 | `azmcp_sql_server_show` | ❌ | | 2 | 0.609322 | `azmcp_sql_db_list` | ✅ **EXPECTED** | -| 3 | 0.558742 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.557293 | `azmcp_mysql_database_list` | ❌ | | 4 | 0.553488 | `azmcp_mysql_server_config_get` | ❌ | | 5 | 0.524274 | `azmcp_sql_db_show` | ❌ | --- -## Test 324 +## Test 328 **Expected Tool:** `azmcp_sql_db_rename` **Prompt:** Rename the SQL database on server to @@ -5912,14 +5988,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.593348 | `azmcp_sql_db_rename` | ✅ **EXPECTED** | -| 2 | 0.425192 | `azmcp_sql_server_delete` | ❌ | +| 2 | 0.425282 | `azmcp_sql_server_delete` | ❌ | | 3 | 0.416207 | `azmcp_sql_db_delete` | ❌ | | 4 | 0.396947 | `azmcp_sql_db_create` | ❌ | | 5 | 0.346018 | `azmcp_sql_db_show` | ❌ | --- -## Test 325 +## Test 329 **Expected Tool:** `azmcp_sql_db_rename` **Prompt:** Rename my Azure SQL database to on server @@ -5928,15 +6004,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.711063 | `azmcp_sql_db_rename` | ✅ **EXPECTED** | -| 2 | 0.516358 | `azmcp_sql_server_delete` | ❌ | -| 3 | 0.506499 | `azmcp_sql_db_delete` | ❌ | -| 4 | 0.501476 | `azmcp_sql_db_create` | ❌ | -| 5 | 0.433898 | `azmcp_sql_server_show` | ❌ | +| 1 | 0.710993 | `azmcp_sql_db_rename` | ✅ **EXPECTED** | +| 2 | 0.516430 | `azmcp_sql_server_delete` | ❌ | +| 3 | 0.506559 | `azmcp_sql_db_delete` | ❌ | +| 4 | 0.501458 | `azmcp_sql_db_create` | ❌ | +| 5 | 0.433728 | `azmcp_sql_server_show` | ❌ | --- -## Test 326 +## Test 330 **Expected Tool:** `azmcp_sql_db_show` **Prompt:** Get the configuration details for the SQL database on server @@ -5946,14 +6022,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.610991 | `azmcp_sql_server_show` | ❌ | -| 2 | 0.593150 | `azmcp_postgres_server_config_get` | ❌ | +| 2 | 0.593212 | `azmcp_postgres_server_config_get` | ❌ | | 3 | 0.530422 | `azmcp_mysql_server_config_get` | ❌ | | 4 | 0.528136 | `azmcp_sql_db_show` | ✅ **EXPECTED** | | 5 | 0.465693 | `azmcp_sql_db_list` | ❌ | --- -## Test 327 +## Test 331 **Expected Tool:** `azmcp_sql_db_show` **Prompt:** Show me the details of SQL database in server @@ -5965,12 +6041,12 @@ | 1 | 0.530095 | `azmcp_sql_db_show` | ✅ **EXPECTED** | | 2 | 0.503681 | `azmcp_sql_server_show` | ❌ | | 3 | 0.440073 | `azmcp_sql_db_list` | ❌ | -| 4 | 0.439076 | `azmcp_mysql_table_schema_get` | ❌ | -| 5 | 0.434183 | `azmcp_mysql_database_list` | ❌ | +| 4 | 0.438622 | `azmcp_mysql_table_schema_get` | ❌ | +| 5 | 0.432911 | `azmcp_mysql_database_list` | ❌ | --- -## Test 328 +## Test 332 **Expected Tool:** `azmcp_sql_db_update` **Prompt:** Update the performance tier of SQL database on server @@ -5979,15 +6055,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.603256 | `azmcp_sql_db_update` | ✅ **EXPECTED** | +| 1 | 0.603366 | `azmcp_sql_db_update` | ✅ **EXPECTED** | | 2 | 0.467571 | `azmcp_sql_db_create` | ❌ | | 3 | 0.440493 | `azmcp_sql_db_rename` | ❌ | | 4 | 0.427621 | `azmcp_sql_db_show` | ❌ | -| 5 | 0.413848 | `azmcp_sql_server_delete` | ❌ | +| 5 | 0.413941 | `azmcp_sql_server_delete` | ❌ | --- -## Test 329 +## Test 333 **Expected Tool:** `azmcp_sql_db_update` **Prompt:** Scale SQL database on server to use SKU @@ -5996,15 +6072,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.550482 | `azmcp_sql_db_update` | ✅ **EXPECTED** | -| 2 | 0.418302 | `azmcp_sql_server_delete` | ❌ | +| 1 | 0.550556 | `azmcp_sql_db_update` | ✅ **EXPECTED** | +| 2 | 0.418358 | `azmcp_sql_server_delete` | ❌ | | 3 | 0.401817 | `azmcp_sql_db_list` | ❌ | | 4 | 0.395518 | `azmcp_sql_db_rename` | ❌ | | 5 | 0.394770 | `azmcp_sql_db_show` | ❌ | --- -## Test 330 +## Test 334 **Expected Tool:** `azmcp_sql_elastic-pool_list` **Prompt:** List all elastic pools in SQL server @@ -6015,13 +6091,13 @@ |------|-------|------|--------| | 1 | 0.678124 | `azmcp_sql_elastic-pool_list` | ✅ **EXPECTED** | | 2 | 0.502376 | `azmcp_sql_db_list` | ❌ | -| 3 | 0.499428 | `azmcp_mysql_database_list` | ❌ | +| 3 | 0.498357 | `azmcp_mysql_database_list` | ❌ | | 4 | 0.479044 | `azmcp_sql_server_show` | ❌ | | 5 | 0.475405 | `azmcp_kusto_cluster_list` | ❌ | --- -## Test 331 +## Test 335 **Expected Tool:** `azmcp_sql_elastic-pool_list` **Prompt:** Show me the elastic pools configured for SQL server @@ -6034,11 +6110,11 @@ | 2 | 0.502877 | `azmcp_sql_server_show` | ❌ | | 3 | 0.457164 | `azmcp_sql_db_list` | ❌ | | 4 | 0.445343 | `azmcp_aks_nodepool_get` | ❌ | -| 5 | 0.434311 | `azmcp_mysql_database_list` | ❌ | +| 5 | 0.432824 | `azmcp_mysql_database_list` | ❌ | --- -## Test 332 +## Test 336 **Expected Tool:** `azmcp_sql_elastic-pool_list` **Prompt:** What elastic pools are available in my SQL server ? @@ -6048,14 +6124,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.592709 | `azmcp_sql_elastic-pool_list` | ✅ **EXPECTED** | -| 2 | 0.421960 | `azmcp_mysql_database_list` | ❌ | +| 2 | 0.420369 | `azmcp_mysql_database_list` | ❌ | | 3 | 0.402616 | `azmcp_mysql_server_list` | ❌ | | 4 | 0.397670 | `azmcp_sql_db_list` | ❌ | | 5 | 0.397640 | `azmcp_sql_server_show` | ❌ | --- -## Test 333 +## Test 337 **Expected Tool:** `azmcp_sql_server_create` **Prompt:** Create a new Azure SQL server named in resource group @@ -6065,14 +6141,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.682616 | `azmcp_sql_server_create` | ✅ **EXPECTED** | -| 2 | 0.564088 | `azmcp_sql_db_create` | ❌ | -| 3 | 0.529413 | `azmcp_sql_server_list` | ❌ | -| 4 | 0.482236 | `azmcp_storage_account_create` | ❌ | -| 5 | 0.473679 | `azmcp_sql_db_show` | ❌ | +| 2 | 0.563707 | `azmcp_sql_db_create` | ❌ | +| 3 | 0.529198 | `azmcp_sql_server_list` | ❌ | +| 4 | 0.482102 | `azmcp_storage_account_create` | ❌ | +| 5 | 0.474207 | `azmcp_sql_db_rename` | ❌ | --- -## Test 334 +## Test 338 **Expected Tool:** `azmcp_sql_server_create` **Prompt:** Create an Azure SQL server with name in location with admin user @@ -6081,15 +6157,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.618309 | `azmcp_sql_server_create` | ✅ **EXPECTED** | +| 1 | 0.618360 | `azmcp_sql_server_create` | ✅ **EXPECTED** | | 2 | 0.510169 | `azmcp_sql_db_create` | ❌ | | 3 | 0.472463 | `azmcp_sql_server_show` | ❌ | -| 4 | 0.441123 | `azmcp_sql_server_delete` | ❌ | +| 4 | 0.441174 | `azmcp_sql_server_delete` | ❌ | | 5 | 0.400939 | `azmcp_sql_db_rename` | ❌ | --- -## Test 335 +## Test 339 **Expected Tool:** `azmcp_sql_server_create` **Prompt:** Set up a new SQL server called in my resource group @@ -6098,15 +6174,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.589463 | `azmcp_sql_server_create` | ✅ **EXPECTED** | -| 2 | 0.501326 | `azmcp_sql_db_create` | ❌ | -| 3 | 0.498020 | `azmcp_sql_server_list` | ❌ | -| 4 | 0.460970 | `azmcp_sql_db_rename` | ❌ | -| 5 | 0.442885 | `azmcp_mysql_server_list` | ❌ | +| 1 | 0.589711 | `azmcp_sql_server_create` | ✅ **EXPECTED** | +| 2 | 0.501403 | `azmcp_sql_db_create` | ❌ | +| 3 | 0.497890 | `azmcp_sql_server_list` | ❌ | +| 4 | 0.461181 | `azmcp_sql_db_rename` | ❌ | +| 5 | 0.442934 | `azmcp_mysql_server_list` | ❌ | --- -## Test 336 +## Test 340 **Expected Tool:** `azmcp_sql_server_delete` **Prompt:** Delete the Azure SQL server from resource group @@ -6115,15 +6191,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.656622 | `azmcp_sql_server_delete` | ✅ **EXPECTED** | -| 2 | 0.548064 | `azmcp_sql_db_delete` | ❌ | -| 3 | 0.518201 | `azmcp_sql_server_list` | ❌ | -| 4 | 0.495550 | `azmcp_sql_server_create` | ❌ | -| 5 | 0.483132 | `azmcp_workbooks_delete` | ❌ | +| 1 | 0.656597 | `azmcp_sql_server_delete` | ✅ **EXPECTED** | +| 2 | 0.548119 | `azmcp_sql_db_delete` | ❌ | +| 3 | 0.517974 | `azmcp_sql_server_list` | ❌ | +| 4 | 0.495626 | `azmcp_sql_server_create` | ❌ | +| 5 | 0.483155 | `azmcp_workbooks_delete` | ❌ | --- -## Test 337 +## Test 341 **Expected Tool:** `azmcp_sql_server_delete` **Prompt:** Remove the SQL server from my subscription @@ -6132,15 +6208,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.614628 | `azmcp_sql_server_delete` | ✅ **EXPECTED** | -| 2 | 0.393952 | `azmcp_postgres_server_list` | ❌ | -| 3 | 0.379386 | `azmcp_sql_db_delete` | ❌ | -| 4 | 0.376347 | `azmcp_sql_server_show` | ❌ | -| 5 | 0.350033 | `azmcp_sql_server_list` | ❌ | +| 1 | 0.615073 | `azmcp_sql_server_delete` | ✅ **EXPECTED** | +| 2 | 0.393885 | `azmcp_postgres_server_list` | ❌ | +| 3 | 0.379760 | `azmcp_sql_db_delete` | ❌ | +| 4 | 0.376660 | `azmcp_sql_server_show` | ❌ | +| 5 | 0.350103 | `azmcp_sql_server_list` | ❌ | --- -## Test 338 +## Test 342 **Expected Tool:** `azmcp_sql_server_delete` **Prompt:** Delete SQL server permanently @@ -6149,7 +6225,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.624280 | `azmcp_sql_server_delete` | ✅ **EXPECTED** | +| 1 | 0.624310 | `azmcp_sql_server_delete` | ✅ **EXPECTED** | | 2 | 0.454892 | `azmcp_sql_db_delete` | ❌ | | 3 | 0.362389 | `azmcp_sql_server_firewall-rule_delete` | ❌ | | 4 | 0.341503 | `azmcp_sql_server_show` | ❌ | @@ -6157,7 +6233,7 @@ --- -## Test 339 +## Test 343 **Expected Tool:** `azmcp_sql_server_entra-admin_list` **Prompt:** List Microsoft Entra ID administrators for SQL server @@ -6168,13 +6244,13 @@ |------|-------|------|--------| | 1 | 0.783479 | `azmcp_sql_server_entra-admin_list` | ✅ **EXPECTED** | | 2 | 0.456051 | `azmcp_sql_server_show` | ❌ | -| 3 | 0.434776 | `azmcp_sql_server_list` | ❌ | +| 3 | 0.434868 | `azmcp_sql_server_list` | ❌ | | 4 | 0.401908 | `azmcp_sql_server_firewall-rule_list` | ❌ | | 5 | 0.376055 | `azmcp_sql_db_list` | ❌ | --- -## Test 340 +## Test 344 **Expected Tool:** `azmcp_sql_server_entra-admin_list` **Prompt:** Show me the Entra ID administrators configured for SQL server @@ -6185,13 +6261,13 @@ |------|-------|------|--------| | 1 | 0.713306 | `azmcp_sql_server_entra-admin_list` | ✅ **EXPECTED** | | 2 | 0.413144 | `azmcp_sql_server_show` | ❌ | -| 3 | 0.368018 | `azmcp_sql_server_list` | ❌ | +| 3 | 0.368082 | `azmcp_sql_server_list` | ❌ | | 4 | 0.315966 | `azmcp_sql_db_list` | ❌ | | 5 | 0.311085 | `azmcp_postgres_server_list` | ❌ | --- -## Test 341 +## Test 345 **Expected Tool:** `azmcp_sql_server_entra-admin_list` **Prompt:** What Microsoft Entra ID administrators are set up for my SQL server ? @@ -6202,13 +6278,13 @@ |------|-------|------|--------| | 1 | 0.646419 | `azmcp_sql_server_entra-admin_list` | ✅ **EXPECTED** | | 2 | 0.356025 | `azmcp_sql_server_show` | ❌ | -| 3 | 0.322362 | `azmcp_sql_server_list` | ❌ | -| 4 | 0.307823 | `azmcp_sql_server_create` | ❌ | -| 5 | 0.269720 | `azmcp_sql_server_delete` | ❌ | +| 3 | 0.322155 | `azmcp_sql_server_list` | ❌ | +| 4 | 0.307870 | `azmcp_sql_server_create` | ❌ | +| 5 | 0.269788 | `azmcp_sql_server_delete` | ❌ | --- -## Test 342 +## Test 346 **Expected Tool:** `azmcp_sql_server_firewall-rule_create` **Prompt:** Create a firewall rule for my Azure SQL server @@ -6217,15 +6293,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.634907 | `azmcp_sql_server_firewall-rule_create` | ✅ **EXPECTED** | +| 1 | 0.635467 | `azmcp_sql_server_firewall-rule_create` | ✅ **EXPECTED** | | 2 | 0.532712 | `azmcp_sql_server_firewall-rule_list` | ❌ | | 3 | 0.522184 | `azmcp_sql_server_firewall-rule_delete` | ❌ | -| 4 | 0.448822 | `azmcp_sql_server_create` | ❌ | -| 5 | 0.440758 | `azmcp_sql_server_delete` | ❌ | +| 4 | 0.448900 | `azmcp_sql_server_create` | ❌ | +| 5 | 0.440845 | `azmcp_sql_server_delete` | ❌ | --- -## Test 343 +## Test 347 **Expected Tool:** `azmcp_sql_server_firewall-rule_create` **Prompt:** Add a firewall rule to allow access from IP range to for SQL server @@ -6234,15 +6310,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.670530 | `azmcp_sql_server_firewall-rule_create` | ✅ **EXPECTED** | -| 2 | 0.533637 | `azmcp_sql_server_firewall-rule_list` | ❌ | -| 3 | 0.503689 | `azmcp_sql_server_firewall-rule_delete` | ❌ | -| 4 | 0.316770 | `azmcp_sql_server_list` | ❌ | -| 5 | 0.302412 | `azmcp_sql_server_delete` | ❌ | +| 1 | 0.670189 | `azmcp_sql_server_firewall-rule_create` | ✅ **EXPECTED** | +| 2 | 0.533562 | `azmcp_sql_server_firewall-rule_list` | ❌ | +| 3 | 0.503648 | `azmcp_sql_server_firewall-rule_delete` | ❌ | +| 4 | 0.316619 | `azmcp_sql_server_list` | ❌ | +| 5 | 0.302362 | `azmcp_sql_server_delete` | ❌ | --- -## Test 344 +## Test 348 **Expected Tool:** `azmcp_sql_server_firewall-rule_create` **Prompt:** Create a new firewall rule named for SQL server @@ -6251,15 +6327,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.684500 | `azmcp_sql_server_firewall-rule_create` | ✅ **EXPECTED** | +| 1 | 0.685107 | `azmcp_sql_server_firewall-rule_create` | ✅ **EXPECTED** | | 2 | 0.574336 | `azmcp_sql_server_firewall-rule_list` | ❌ | | 3 | 0.539577 | `azmcp_sql_server_firewall-rule_delete` | ❌ | -| 4 | 0.428920 | `azmcp_sql_server_create` | ❌ | +| 4 | 0.428986 | `azmcp_sql_server_create` | ❌ | | 5 | 0.395165 | `azmcp_sql_db_create` | ❌ | --- -## Test 345 +## Test 349 **Expected Tool:** `azmcp_sql_server_firewall-rule_delete` **Prompt:** Delete a firewall rule from my Azure SQL server @@ -6269,14 +6345,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.691421 | `azmcp_sql_server_firewall-rule_delete` | ✅ **EXPECTED** | -| 2 | 0.584354 | `azmcp_sql_server_delete` | ❌ | +| 2 | 0.584379 | `azmcp_sql_server_delete` | ❌ | | 3 | 0.543857 | `azmcp_sql_server_firewall-rule_list` | ❌ | -| 4 | 0.539768 | `azmcp_sql_server_firewall-rule_create` | ❌ | +| 4 | 0.540333 | `azmcp_sql_server_firewall-rule_create` | ❌ | | 5 | 0.498444 | `azmcp_sql_db_delete` | ❌ | --- -## Test 346 +## Test 350 **Expected Tool:** `azmcp_sql_server_firewall-rule_delete` **Prompt:** Remove the firewall rule from SQL server @@ -6287,13 +6363,13 @@ |------|-------|------|--------| | 1 | 0.670179 | `azmcp_sql_server_firewall-rule_delete` | ✅ **EXPECTED** | | 2 | 0.574340 | `azmcp_sql_server_firewall-rule_list` | ❌ | -| 3 | 0.529996 | `azmcp_sql_server_firewall-rule_create` | ❌ | -| 4 | 0.488412 | `azmcp_sql_server_delete` | ❌ | +| 3 | 0.530419 | `azmcp_sql_server_firewall-rule_create` | ❌ | +| 4 | 0.488418 | `azmcp_sql_server_delete` | ❌ | | 5 | 0.360381 | `azmcp_sql_db_delete` | ❌ | --- -## Test 347 +## Test 351 **Expected Tool:** `azmcp_sql_server_firewall-rule_delete` **Prompt:** Delete firewall rule for SQL server @@ -6304,13 +6380,13 @@ |------|-------|------|--------| | 1 | 0.671211 | `azmcp_sql_server_firewall-rule_delete` | ✅ **EXPECTED** | | 2 | 0.601231 | `azmcp_sql_server_firewall-rule_list` | ❌ | -| 3 | 0.576781 | `azmcp_sql_server_firewall-rule_create` | ❌ | -| 4 | 0.499237 | `azmcp_sql_server_delete` | ❌ | +| 3 | 0.577330 | `azmcp_sql_server_firewall-rule_create` | ❌ | +| 4 | 0.499272 | `azmcp_sql_server_delete` | ❌ | | 5 | 0.378586 | `azmcp_sql_db_delete` | ❌ | --- -## Test 348 +## Test 352 **Expected Tool:** `azmcp_sql_server_firewall-rule_list` **Prompt:** List all firewall rules for SQL server @@ -6320,14 +6396,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.729372 | `azmcp_sql_server_firewall-rule_list` | ✅ **EXPECTED** | -| 2 | 0.549064 | `azmcp_sql_server_firewall-rule_create` | ❌ | +| 2 | 0.549667 | `azmcp_sql_server_firewall-rule_create` | ❌ | | 3 | 0.513114 | `azmcp_sql_server_firewall-rule_delete` | ❌ | | 4 | 0.468812 | `azmcp_sql_server_show` | ❌ | -| 5 | 0.418738 | `azmcp_sql_server_list` | ❌ | +| 5 | 0.418817 | `azmcp_sql_server_list` | ❌ | --- -## Test 349 +## Test 353 **Expected Tool:** `azmcp_sql_server_firewall-rule_list` **Prompt:** Show me the firewall rules for SQL server @@ -6337,14 +6413,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.630731 | `azmcp_sql_server_firewall-rule_list` | ✅ **EXPECTED** | -| 2 | 0.523635 | `azmcp_sql_server_firewall-rule_create` | ❌ | +| 2 | 0.524126 | `azmcp_sql_server_firewall-rule_create` | ❌ | | 3 | 0.476757 | `azmcp_sql_server_firewall-rule_delete` | ❌ | | 4 | 0.410680 | `azmcp_sql_server_show` | ❌ | -| 5 | 0.348096 | `azmcp_sql_server_list` | ❌ | +| 5 | 0.348100 | `azmcp_sql_server_list` | ❌ | --- -## Test 350 +## Test 354 **Expected Tool:** `azmcp_sql_server_firewall-rule_list` **Prompt:** What firewall rules are configured for my SQL server ? @@ -6354,14 +6430,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.630546 | `azmcp_sql_server_firewall-rule_list` | ✅ **EXPECTED** | -| 2 | 0.532034 | `azmcp_sql_server_firewall-rule_create` | ❌ | +| 2 | 0.532454 | `azmcp_sql_server_firewall-rule_create` | ❌ | | 3 | 0.473501 | `azmcp_sql_server_firewall-rule_delete` | ❌ | | 4 | 0.412957 | `azmcp_sql_server_show` | ❌ | -| 5 | 0.350474 | `azmcp_sql_server_list` | ❌ | +| 5 | 0.350513 | `azmcp_sql_server_list` | ❌ | --- -## Test 351 +## Test 355 **Expected Tool:** `azmcp_sql_server_list` **Prompt:** List all Azure SQL servers in resource group @@ -6370,7 +6446,7 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.694306 | `azmcp_sql_server_list` | ✅ **EXPECTED** | +| 1 | 0.694404 | `azmcp_sql_server_list` | ✅ **EXPECTED** | | 2 | 0.596686 | `azmcp_mysql_server_list` | ❌ | | 3 | 0.578238 | `azmcp_sql_db_list` | ❌ | | 4 | 0.515851 | `azmcp_sql_elastic-pool_list` | ❌ | @@ -6378,7 +6454,7 @@ --- -## Test 352 +## Test 356 **Expected Tool:** `azmcp_sql_server_list` **Prompt:** Show me every SQL server available in resource group @@ -6387,15 +6463,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.618222 | `azmcp_sql_server_list` | ✅ **EXPECTED** | +| 1 | 0.618218 | `azmcp_sql_server_list` | ✅ **EXPECTED** | | 2 | 0.593837 | `azmcp_mysql_server_list` | ❌ | | 3 | 0.542398 | `azmcp_sql_db_list` | ❌ | -| 4 | 0.507683 | `azmcp_resourcehealth_availability-status_list` | ❌ | +| 4 | 0.507404 | `azmcp_resourcehealth_availability-status_list` | ❌ | | 5 | 0.496200 | `azmcp_group_list` | ❌ | --- -## Test 353 +## Test 357 **Expected Tool:** `azmcp_sql_server_show` **Prompt:** Show me the details of Azure SQL server in resource group @@ -6406,13 +6482,13 @@ |------|-------|------|--------| | 1 | 0.629672 | `azmcp_sql_db_show` | ❌ | | 2 | 0.595184 | `azmcp_sql_server_show` | ✅ **EXPECTED** | -| 3 | 0.587806 | `azmcp_sql_server_list` | ❌ | +| 3 | 0.587728 | `azmcp_sql_server_list` | ❌ | | 4 | 0.559893 | `azmcp_mysql_server_list` | ❌ | | 5 | 0.540218 | `azmcp_sql_db_list` | ❌ | --- -## Test 354 +## Test 358 **Expected Tool:** `azmcp_sql_server_show` **Prompt:** Get the configuration details for SQL server @@ -6422,14 +6498,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.658817 | `azmcp_sql_server_show` | ✅ **EXPECTED** | -| 2 | 0.610507 | `azmcp_postgres_server_config_get` | ❌ | +| 2 | 0.610545 | `azmcp_postgres_server_config_get` | ❌ | | 3 | 0.538034 | `azmcp_mysql_server_config_get` | ❌ | | 4 | 0.471541 | `azmcp_sql_db_show` | ❌ | -| 5 | 0.445500 | `azmcp_postgres_server_param_get` | ❌ | +| 5 | 0.445430 | `azmcp_postgres_server_param_get` | ❌ | --- -## Test 355 +## Test 359 **Expected Tool:** `azmcp_sql_server_show` **Prompt:** Display the properties of SQL server @@ -6438,15 +6514,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.563103 | `azmcp_sql_server_show` | ✅ **EXPECTED** | -| 2 | 0.392452 | `azmcp_postgres_server_config_get` | ❌ | -| 3 | 0.379972 | `azmcp_postgres_server_param_get` | ❌ | -| 4 | 0.372126 | `azmcp_sql_server_firewall-rule_list` | ❌ | -| 5 | 0.370508 | `azmcp_sql_db_show` | ❌ | +| 1 | 0.563143 | `azmcp_sql_server_show` | ✅ **EXPECTED** | +| 2 | 0.392565 | `azmcp_postgres_server_config_get` | ❌ | +| 3 | 0.380021 | `azmcp_postgres_server_param_get` | ❌ | +| 4 | 0.372194 | `azmcp_sql_server_firewall-rule_list` | ❌ | +| 5 | 0.370539 | `azmcp_sql_db_show` | ❌ | --- -## Test 356 +## Test 360 **Expected Tool:** `azmcp_storage_account_create` **Prompt:** Create a new storage account called testaccount123 in East US region @@ -6457,13 +6533,13 @@ |------|-------|------|--------| | 1 | 0.533552 | `azmcp_storage_account_create` | ✅ **EXPECTED** | | 2 | 0.418473 | `azmcp_storage_account_get` | ❌ | -| 3 | 0.394402 | `azmcp_storage_blob_container_create` | ❌ | -| 4 | 0.370957 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | +| 3 | 0.394541 | `azmcp_storage_blob_container_create` | ❌ | +| 4 | 0.370957 | `azmcp_managedlustre_filesystem_create` | ❌ | | 5 | 0.368591 | `azmcp_loadtesting_test_create` | ❌ | --- -## Test 357 +## Test 361 **Expected Tool:** `azmcp_storage_account_create` **Prompt:** Create a storage account with premium performance and LRS replication @@ -6473,14 +6549,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.500638 | `azmcp_storage_account_create` | ✅ **EXPECTED** | -| 2 | 0.483202 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | -| 3 | 0.400151 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | +| 2 | 0.483202 | `azmcp_managedlustre_filesystem_create` | ❌ | +| 3 | 0.400151 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | | 4 | 0.387071 | `azmcp_storage_account_get` | ❌ | -| 5 | 0.382836 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | +| 5 | 0.382836 | `azmcp_managedlustre_filesystem_list` | ❌ | --- -## Test 358 +## Test 362 **Expected Tool:** `azmcp_storage_account_create` **Prompt:** Create a new storage account with Data Lake Storage Gen2 enabled @@ -6490,14 +6566,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.589002 | `azmcp_storage_account_create` | ✅ **EXPECTED** | -| 2 | 0.535501 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | -| 3 | 0.464387 | `azmcp_storage_blob_container_create` | ❌ | +| 2 | 0.535501 | `azmcp_managedlustre_filesystem_create` | ❌ | +| 3 | 0.464611 | `azmcp_storage_blob_container_create` | ❌ | | 4 | 0.447156 | `azmcp_sql_db_create` | ❌ | | 5 | 0.437040 | `azmcp_storage_account_get` | ❌ | --- -## Test 359 +## Test 363 **Expected Tool:** `azmcp_storage_account_get` **Prompt:** Show me the details for my storage account @@ -6507,14 +6583,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.655152 | `azmcp_storage_account_get` | ✅ **EXPECTED** | -| 2 | 0.603853 | `azmcp_storage_blob_container_get` | ❌ | +| 2 | 0.603980 | `azmcp_storage_blob_container_get` | ❌ | | 3 | 0.507639 | `azmcp_storage_blob_get` | ❌ | | 4 | 0.483435 | `azmcp_storage_account_create` | ❌ | -| 5 | 0.439236 | `azmcp_cosmos_account_list` | ❌ | +| 5 | 0.474143 | `azmcp_tables_list` | ❌ | --- -## Test 360 +## Test 364 **Expected Tool:** `azmcp_storage_account_get` **Prompt:** Get details about the storage account @@ -6524,14 +6600,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.676876 | `azmcp_storage_account_get` | ✅ **EXPECTED** | -| 2 | 0.612889 | `azmcp_storage_blob_container_get` | ❌ | +| 2 | 0.613036 | `azmcp_storage_blob_container_get` | ❌ | | 3 | 0.518215 | `azmcp_storage_account_create` | ❌ | | 4 | 0.515153 | `azmcp_storage_blob_get` | ❌ | -| 5 | 0.427255 | `azmcp_resourcehealth_availability-status_get` | ❌ | +| 5 | 0.449151 | `azmcp_tables_list` | ❌ | --- -## Test 361 +## Test 365 **Expected Tool:** `azmcp_storage_account_get` **Prompt:** List all storage accounts in my subscription including their location and SKU @@ -6541,14 +6617,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.664087 | `azmcp_storage_account_get` | ✅ **EXPECTED** | -| 2 | 0.557015 | `azmcp_azuremanagedlustre_filesystem_sku_get` | ❌ | +| 2 | 0.557015 | `azmcp_managedlustre_filesystem_sku_get` | ❌ | | 3 | 0.547647 | `azmcp_subscription_list` | ❌ | -| 4 | 0.536909 | `azmcp_cosmos_account_list` | ❌ | -| 5 | 0.535616 | `azmcp_storage_account_create` | ❌ | +| 4 | 0.537150 | `azmcp_tables_list` | ❌ | +| 5 | 0.536909 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 362 +## Test 366 **Expected Tool:** `azmcp_storage_account_get` **Prompt:** Show me my storage accounts with whether hierarchical namespace (HNS) is enabled @@ -6558,14 +6634,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.499302 | `azmcp_storage_account_get` | ✅ **EXPECTED** | -| 2 | 0.461284 | `azmcp_azuremanagedlustre_filesystem_list` | ❌ | -| 3 | 0.455450 | `azmcp_storage_blob_container_get` | ❌ | -| 4 | 0.421642 | `azmcp_cosmos_account_list` | ❌ | -| 5 | 0.395323 | `azmcp_subscription_list` | ❌ | +| 2 | 0.461284 | `azmcp_managedlustre_filesystem_list` | ❌ | +| 3 | 0.455568 | `azmcp_storage_blob_container_get` | ❌ | +| 4 | 0.453391 | `azmcp_tables_list` | ❌ | +| 5 | 0.421642 | `azmcp_cosmos_account_list` | ❌ | --- -## Test 363 +## Test 367 **Expected Tool:** `azmcp_storage_account_get` **Prompt:** Show me the storage accounts in my subscription and include HTTPS-only and public blob access settings @@ -6576,13 +6652,13 @@ |------|-------|------|--------| | 1 | 0.557142 | `azmcp_storage_account_get` | ✅ **EXPECTED** | | 2 | 0.473598 | `azmcp_cosmos_account_list` | ❌ | -| 3 | 0.465571 | `azmcp_subscription_list` | ❌ | -| 4 | 0.461641 | `azmcp_storage_blob_container_get` | ❌ | -| 5 | 0.436170 | `azmcp_search_service_list` | ❌ | +| 3 | 0.465662 | `azmcp_tables_list` | ❌ | +| 4 | 0.465571 | `azmcp_subscription_list` | ❌ | +| 5 | 0.461748 | `azmcp_storage_blob_container_get` | ❌ | --- -## Test 364 +## Test 368 **Expected Tool:** `azmcp_storage_blob_container_create` **Prompt:** Create the storage container mycontainer in storage account @@ -6591,15 +6667,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.563270 | `azmcp_storage_blob_container_create` | ✅ **EXPECTED** | +| 1 | 0.563396 | `azmcp_storage_blob_container_create` | ✅ **EXPECTED** | | 2 | 0.524779 | `azmcp_storage_account_create` | ❌ | -| 3 | 0.508053 | `azmcp_storage_blob_container_get` | ❌ | +| 3 | 0.508111 | `azmcp_storage_blob_container_get` | ❌ | | 4 | 0.447784 | `azmcp_cosmos_database_container_list` | ❌ | | 5 | 0.403407 | `azmcp_storage_account_get` | ❌ | --- -## Test 365 +## Test 369 **Expected Tool:** `azmcp_storage_blob_container_create` **Prompt:** Create the container using blob public access in storage account @@ -6608,15 +6684,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.512478 | `azmcp_storage_blob_container_create` | ✅ **EXPECTED** | +| 1 | 0.512578 | `azmcp_storage_blob_container_create` | ✅ **EXPECTED** | | 2 | 0.500625 | `azmcp_storage_account_create` | ❌ | -| 3 | 0.470927 | `azmcp_storage_blob_container_get` | ❌ | +| 3 | 0.470989 | `azmcp_storage_blob_container_get` | ❌ | | 4 | 0.415378 | `azmcp_cosmos_database_container_list` | ❌ | | 5 | 0.414820 | `azmcp_storage_blob_get` | ❌ | --- -## Test 366 +## Test 370 **Expected Tool:** `azmcp_storage_blob_container_create` **Prompt:** Create a new blob container named documents with container public access in storage account @@ -6626,14 +6702,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.463198 | `azmcp_storage_account_create` | ❌ | -| 2 | 0.455376 | `azmcp_storage_blob_container_get` | ❌ | -| 3 | 0.451569 | `azmcp_storage_blob_container_create` | ✅ **EXPECTED** | +| 2 | 0.455398 | `azmcp_storage_blob_container_get` | ❌ | +| 3 | 0.451690 | `azmcp_storage_blob_container_create` | ✅ **EXPECTED** | | 4 | 0.435099 | `azmcp_cosmos_database_container_list` | ❌ | -| 5 | 0.407422 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 5 | 0.408052 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 367 +## Test 371 **Expected Tool:** `azmcp_storage_blob_container_get` **Prompt:** Show me the properties of the storage container in the storage account @@ -6642,15 +6718,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.665176 | `azmcp_storage_blob_container_get` | ✅ **EXPECTED** | +| 1 | 0.665263 | `azmcp_storage_blob_container_get` | ✅ **EXPECTED** | | 2 | 0.559177 | `azmcp_storage_account_get` | ❌ | | 3 | 0.523289 | `azmcp_cosmos_database_container_list` | ❌ | | 4 | 0.518764 | `azmcp_storage_blob_get` | ❌ | -| 5 | 0.496139 | `azmcp_storage_blob_container_create` | ❌ | +| 5 | 0.496184 | `azmcp_storage_blob_container_create` | ❌ | --- -## Test 368 +## Test 372 **Expected Tool:** `azmcp_storage_blob_container_get` **Prompt:** List all blob containers in the storage account @@ -6660,14 +6736,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.613933 | `azmcp_cosmos_database_container_list` | ❌ | -| 2 | 0.605437 | `azmcp_storage_blob_container_get` | ✅ **EXPECTED** | -| 3 | 0.521995 | `azmcp_storage_blob_get` | ❌ | -| 4 | 0.480809 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.479014 | `azmcp_storage_account_get` | ❌ | +| 2 | 0.605547 | `azmcp_storage_blob_container_get` | ✅ **EXPECTED** | +| 3 | 0.564017 | `azmcp_tables_list` | ❌ | +| 4 | 0.521995 | `azmcp_storage_blob_get` | ❌ | +| 5 | 0.481648 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 369 +## Test 373 **Expected Tool:** `azmcp_storage_blob_container_get` **Prompt:** Show me the containers in the storage account @@ -6676,15 +6752,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.625166 | `azmcp_storage_blob_container_get` | ✅ **EXPECTED** | +| 1 | 0.625310 | `azmcp_storage_blob_container_get` | ✅ **EXPECTED** | | 2 | 0.592373 | `azmcp_cosmos_database_container_list` | ❌ | -| 3 | 0.511261 | `azmcp_storage_account_get` | ❌ | -| 4 | 0.479216 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.439698 | `azmcp_storage_account_create` | ❌ | +| 3 | 0.545956 | `azmcp_tables_list` | ❌ | +| 4 | 0.511261 | `azmcp_storage_account_get` | ❌ | +| 5 | 0.479773 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 370 +## Test 374 **Expected Tool:** `azmcp_storage_blob_get` **Prompt:** Show me the properties for blob in container in storage account @@ -6693,15 +6769,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.613091 | `azmcp_storage_blob_get` | ✅ **EXPECTED** | -| 2 | 0.586289 | `azmcp_storage_blob_container_get` | ❌ | -| 3 | 0.483614 | `azmcp_storage_account_get` | ❌ | -| 4 | 0.477946 | `azmcp_cosmos_database_container_list` | ❌ | -| 5 | 0.442524 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 1 | 0.613016 | `azmcp_storage_blob_get` | ✅ **EXPECTED** | +| 2 | 0.586371 | `azmcp_storage_blob_container_get` | ❌ | +| 3 | 0.483766 | `azmcp_storage_account_get` | ❌ | +| 4 | 0.478035 | `azmcp_cosmos_database_container_list` | ❌ | +| 5 | 0.443149 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 371 +## Test 375 **Expected Tool:** `azmcp_storage_blob_get` **Prompt:** Get the details about blob in the container in storage account @@ -6710,15 +6786,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.662106 | `azmcp_storage_blob_container_get` | ❌ | -| 2 | 0.661919 | `azmcp_storage_blob_get` | ✅ **EXPECTED** | -| 3 | 0.537535 | `azmcp_storage_account_get` | ❌ | -| 4 | 0.460620 | `azmcp_storage_blob_container_create` | ❌ | -| 5 | 0.457038 | `azmcp_storage_account_create` | ❌ | +| 1 | 0.662138 | `azmcp_storage_blob_container_get` | ❌ | +| 2 | 0.661881 | `azmcp_storage_blob_get` | ✅ **EXPECTED** | +| 3 | 0.537573 | `azmcp_storage_account_get` | ❌ | +| 4 | 0.460616 | `azmcp_storage_blob_container_create` | ❌ | +| 5 | 0.457063 | `azmcp_storage_account_create` | ❌ | --- -## Test 372 +## Test 376 **Expected Tool:** `azmcp_storage_blob_get` **Prompt:** List all blobs in the blob container in the storage account @@ -6727,15 +6803,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.592723 | `azmcp_storage_blob_container_get` | ❌ | +| 1 | 0.592770 | `azmcp_storage_blob_container_get` | ❌ | | 2 | 0.579070 | `azmcp_cosmos_database_container_list` | ❌ | | 3 | 0.568421 | `azmcp_storage_blob_get` | ✅ **EXPECTED** | -| 4 | 0.506308 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.465942 | `azmcp_storage_account_get` | ❌ | +| 4 | 0.527309 | `azmcp_tables_list` | ❌ | +| 5 | 0.507125 | `azmcp_cosmos_database_container_item_query` | ❌ | --- -## Test 373 +## Test 377 **Expected Tool:** `azmcp_storage_blob_get` **Prompt:** Show me the blobs in the blob container in the storage account @@ -6744,15 +6820,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.570353 | `azmcp_storage_blob_container_get` | ❌ | +| 1 | 0.570409 | `azmcp_storage_blob_container_get` | ❌ | | 2 | 0.549442 | `azmcp_storage_blob_get` | ✅ **EXPECTED** | | 3 | 0.533515 | `azmcp_cosmos_database_container_list` | ❌ | -| 4 | 0.483543 | `azmcp_cosmos_database_container_item_query` | ❌ | -| 5 | 0.449128 | `azmcp_storage_account_get` | ❌ | +| 4 | 0.484301 | `azmcp_cosmos_database_container_item_query` | ❌ | +| 5 | 0.471139 | `azmcp_tables_list` | ❌ | --- -## Test 374 +## Test 378 **Expected Tool:** `azmcp_storage_blob_upload` **Prompt:** Upload file to storage blob in container in storage account @@ -6761,15 +6837,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.566218 | `azmcp_storage_blob_upload` | ✅ **EXPECTED** | -| 2 | 0.403451 | `azmcp_storage_blob_get` | ❌ | -| 3 | 0.397722 | `azmcp_storage_blob_container_get` | ❌ | -| 4 | 0.382123 | `azmcp_storage_account_create` | ❌ | -| 5 | 0.377226 | `azmcp_storage_blob_container_create` | ❌ | +| 1 | 0.566190 | `azmcp_storage_blob_upload` | ✅ **EXPECTED** | +| 2 | 0.403452 | `azmcp_storage_blob_get` | ❌ | +| 3 | 0.397754 | `azmcp_storage_blob_container_get` | ❌ | +| 4 | 0.382138 | `azmcp_storage_account_create` | ❌ | +| 5 | 0.377321 | `azmcp_storage_blob_container_create` | ❌ | --- -## Test 375 +## Test 379 **Expected Tool:** `azmcp_subscription_list` **Prompt:** List all subscriptions for my account @@ -6786,7 +6862,7 @@ --- -## Test 376 +## Test 380 **Expected Tool:** `azmcp_subscription_list` **Prompt:** Show me my subscriptions @@ -6795,15 +6871,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.458690 | `azmcp_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.407429 | `azmcp_eventgrid_subscription_list` | ❌ | -| 3 | 0.393680 | `azmcp_eventgrid_topic_list` | ❌ | -| 4 | 0.381123 | `azmcp_postgres_server_list` | ❌ | -| 5 | 0.366192 | `azmcp_redis_cache_list` | ❌ | +| 1 | 0.458821 | `azmcp_subscription_list` | ✅ **EXPECTED** | +| 2 | 0.407471 | `azmcp_eventgrid_subscription_list` | ❌ | +| 3 | 0.393695 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.381238 | `azmcp_postgres_server_list` | ❌ | +| 5 | 0.366203 | `azmcp_redis_cache_list` | ❌ | --- -## Test 377 +## Test 381 **Expected Tool:** `azmcp_subscription_list` **Prompt:** What is my current subscription? @@ -6813,14 +6889,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.433196 | `azmcp_subscription_list` | ✅ **EXPECTED** | -| 2 | 0.315547 | `azmcp_marketplace_product_get` | ❌ | +| 2 | 0.315474 | `azmcp_marketplace_product_get` | ❌ | | 3 | 0.293772 | `azmcp_eventgrid_subscription_list` | ❌ | -| 4 | 0.289370 | `azmcp_eventgrid_topic_list` | ❌ | -| 5 | 0.288464 | `azmcp_redis_cache_list` | ❌ | +| 4 | 0.289334 | `azmcp_eventgrid_topic_list` | ❌ | +| 5 | 0.288401 | `azmcp_redis_cache_list` | ❌ | --- -## Test 378 +## Test 382 **Expected Tool:** `azmcp_subscription_list` **Prompt:** What subscriptions do I have? @@ -6831,13 +6907,81 @@ |------|-------|------|--------| | 1 | 0.477591 | `azmcp_subscription_list` | ✅ **EXPECTED** | | 2 | 0.357625 | `azmcp_eventgrid_subscription_list` | ❌ | -| 3 | 0.340897 | `azmcp_eventgrid_topic_list` | ❌ | -| 4 | 0.340339 | `azmcp_grafana_list` | ❌ | +| 3 | 0.340836 | `azmcp_eventgrid_topic_list` | ❌ | +| 4 | 0.340279 | `azmcp_grafana_list` | ❌ | | 5 | 0.336798 | `azmcp_postgres_server_list` | ❌ | --- -## Test 379 +## Test 383 + +**Expected Tool:** `azmcp_tables_list` +**Prompt:** List all tables in the storage account + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.830815 | `azmcp_tables_list` | ✅ **EXPECTED** | +| 2 | 0.571500 | `azmcp_monitor_table_list` | ❌ | +| 3 | 0.548671 | `azmcp_mysql_table_list` | ❌ | +| 4 | 0.530735 | `azmcp_kusto_table_list` | ❌ | +| 5 | 0.508858 | `azmcp_storage_account_get` | ❌ | + +--- + +## Test 384 + +**Expected Tool:** `azmcp_tables_list` +**Prompt:** Show me the tables in the storage account + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.772002 | `azmcp_tables_list` | ✅ **EXPECTED** | +| 2 | 0.527015 | `azmcp_monitor_table_list` | ❌ | +| 3 | 0.521996 | `azmcp_mysql_table_list` | ❌ | +| 4 | 0.517118 | `azmcp_storage_account_get` | ❌ | +| 5 | 0.515505 | `azmcp_storage_blob_container_get` | ❌ | + +--- + +## Test 385 + +**Expected Tool:** `azmcp_tables_list` +**Prompt:** List all tables in the Cosmos DB account + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.846321 | `azmcp_tables_list` | ✅ **EXPECTED** | +| 2 | 0.670064 | `azmcp_cosmos_database_list` | ❌ | +| 3 | 0.626633 | `azmcp_cosmos_account_list` | ❌ | +| 4 | 0.609596 | `azmcp_monitor_table_list` | ❌ | +| 5 | 0.607861 | `azmcp_cosmos_database_container_list` | ❌ | + +--- + +## Test 386 + +**Expected Tool:** `azmcp_tables_list` +**Prompt:** Show me the tables in the Cosmos DB account + +### Results + +| Rank | Score | Tool | Status | +|------|-------|------|--------| +| 1 | 0.782095 | `azmcp_tables_list` | ✅ **EXPECTED** | +| 2 | 0.621398 | `azmcp_cosmos_database_list` | ❌ | +| 3 | 0.590038 | `azmcp_cosmos_account_list` | ❌ | +| 4 | 0.582191 | `azmcp_cosmos_database_container_list` | ❌ | +| 5 | 0.581941 | `azmcp_cosmos_database_container_item_query` | ❌ | + +--- + +## Test 387 **Expected Tool:** `azmcp_azureterraformbestpractices_get` **Prompt:** Fetch the Azure Terraform best practices @@ -6847,14 +6991,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.686886 | `azmcp_azureterraformbestpractices_get` | ✅ **EXPECTED** | -| 2 | 0.625074 | `azmcp_deploy_iac_rules_get` | ❌ | +| 2 | 0.625270 | `azmcp_deploy_iac_rules_get` | ❌ | | 3 | 0.605048 | `azmcp_get_bestpractices_get` | ❌ | | 4 | 0.482936 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 5 | 0.466199 | `azmcp_deploy_plan_get` | ❌ | --- -## Test 380 +## Test 388 **Expected Tool:** `azmcp_azureterraformbestpractices_get` **Prompt:** Show me the Azure Terraform best practices and generate code sample to get a secret from Azure Key Vault @@ -6863,15 +7007,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.581262 | `azmcp_azureterraformbestpractices_get` | ✅ **EXPECTED** | -| 2 | 0.512090 | `azmcp_get_bestpractices_get` | ❌ | -| 3 | 0.509906 | `azmcp_deploy_iac_rules_get` | ❌ | -| 4 | 0.474036 | `azmcp_keyvault_secret_get` | ❌ | -| 5 | 0.444237 | `azmcp_deploy_pipeline_guidance_get` | ❌ | +| 1 | 0.581316 | `azmcp_azureterraformbestpractices_get` | ✅ **EXPECTED** | +| 2 | 0.512141 | `azmcp_get_bestpractices_get` | ❌ | +| 3 | 0.510005 | `azmcp_deploy_iac_rules_get` | ❌ | +| 4 | 0.473597 | `azmcp_keyvault_secret_get` | ❌ | +| 5 | 0.444297 | `azmcp_deploy_pipeline_guidance_get` | ❌ | --- -## Test 381 +## Test 389 **Expected Tool:** `azmcp_virtualdesktop_hostpool_list` **Prompt:** List all host pools in my subscription @@ -6883,12 +7027,12 @@ | 1 | 0.711969 | `azmcp_virtualdesktop_hostpool_list` | ✅ **EXPECTED** | | 2 | 0.659763 | `azmcp_virtualdesktop_hostpool_sessionhost_list` | ❌ | | 3 | 0.620665 | `azmcp_kusto_cluster_list` | ❌ | -| 4 | 0.548888 | `azmcp_search_service_list` | ❌ | +| 4 | 0.548923 | `azmcp_search_service_list` | ❌ | | 5 | 0.535739 | `azmcp_virtualdesktop_hostpool_sessionhost_usersession-list` | ❌ | --- -## Test 382 +## Test 390 **Expected Tool:** `azmcp_virtualdesktop_hostpool_sessionhost_list` **Prompt:** List all session hosts in host pool @@ -6905,7 +7049,7 @@ --- -## Test 383 +## Test 391 **Expected Tool:** `azmcp_virtualdesktop_hostpool_sessionhost_usersession-list` **Prompt:** List all user sessions on session host in host pool @@ -6918,11 +7062,11 @@ | 2 | 0.659213 | `azmcp_virtualdesktop_hostpool_sessionhost_list` | ❌ | | 3 | 0.501168 | `azmcp_virtualdesktop_hostpool_list` | ❌ | | 4 | 0.336848 | `azmcp_aks_nodepool_get` | ❌ | -| 5 | 0.336417 | `azmcp_monitor_workspace_list` | ❌ | +| 5 | 0.336385 | `azmcp_monitor_workspace_list` | ❌ | --- -## Test 384 +## Test 392 **Expected Tool:** `azmcp_workbooks_create` **Prompt:** Create a new workbook named @@ -6939,7 +7083,7 @@ --- -## Test 385 +## Test 393 **Expected Tool:** `azmcp_workbooks_delete` **Prompt:** Delete the workbook with resource ID @@ -6956,7 +7100,7 @@ --- -## Test 386 +## Test 394 **Expected Tool:** `azmcp_workbooks_list` **Prompt:** List all workbooks in my resource group @@ -6968,12 +7112,12 @@ | 1 | 0.772430 | `azmcp_workbooks_list` | ✅ **EXPECTED** | | 2 | 0.562794 | `azmcp_workbooks_create` | ❌ | | 3 | 0.532565 | `azmcp_workbooks_show` | ❌ | -| 4 | 0.516739 | `azmcp_grafana_list` | ❌ | +| 4 | 0.516789 | `azmcp_grafana_list` | ❌ | | 5 | 0.488599 | `azmcp_group_list` | ❌ | --- -## Test 387 +## Test 395 **Expected Tool:** `azmcp_workbooks_list` **Prompt:** What workbooks do I have in resource group ? @@ -6986,11 +7130,11 @@ | 2 | 0.570521 | `azmcp_workbooks_create` | ❌ | | 3 | 0.539957 | `azmcp_workbooks_show` | ❌ | | 4 | 0.485504 | `azmcp_workbooks_delete` | ❌ | -| 5 | 0.472378 | `azmcp_grafana_list` | ❌ | +| 5 | 0.472408 | `azmcp_grafana_list` | ❌ | --- -## Test 388 +## Test 396 **Expected Tool:** `azmcp_workbooks_show` **Prompt:** Get information about the workbook with resource ID @@ -7007,7 +7151,7 @@ --- -## Test 389 +## Test 397 **Expected Tool:** `azmcp_workbooks_show` **Prompt:** Show me the workbook with display name @@ -7024,7 +7168,7 @@ --- -## Test 390 +## Test 398 **Expected Tool:** `azmcp_workbooks_update` **Prompt:** Update the workbook with a new text step @@ -7041,7 +7185,7 @@ --- -## Test 391 +## Test 399 **Expected Tool:** `azmcp_bicepschema_get` **Prompt:** How can I use Bicep to create an Azure OpenAI service? @@ -7050,15 +7194,15 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| -| 1 | 0.543335 | `azmcp_bicepschema_get` | ✅ **EXPECTED** | -| 2 | 0.485970 | `azmcp_foundry_models_deploy` | ❌ | -| 3 | 0.485726 | `azmcp_deploy_iac_rules_get` | ❌ | +| 1 | 0.543154 | `azmcp_bicepschema_get` | ✅ **EXPECTED** | +| 2 | 0.485938 | `azmcp_foundry_models_deploy` | ❌ | +| 3 | 0.485889 | `azmcp_deploy_iac_rules_get` | ❌ | | 4 | 0.462145 | `azmcp_foundry_openai_embeddings-create` | ❌ | | 5 | 0.448373 | `azmcp_get_bestpractices_get` | ❌ | --- -## Test 392 +## Test 400 **Expected Tool:** `azmcp_cloudarchitect_design` **Prompt:** Please help me design an architecture for a large-scale file upload, storage, and retrieval service @@ -7068,14 +7212,14 @@ | Rank | Score | Tool | Status | |------|-------|------|--------| | 1 | 0.502125 | `azmcp_cloudarchitect_design` | ✅ **EXPECTED** | -| 2 | 0.290896 | `azmcp_storage_blob_upload` | ❌ | -| 3 | 0.259162 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | +| 2 | 0.290902 | `azmcp_storage_blob_upload` | ❌ | +| 3 | 0.259162 | `azmcp_managedlustre_filesystem_create` | ❌ | | 4 | 0.254991 | `azmcp_deploy_architecture_diagram_generate` | ❌ | -| 5 | 0.245034 | `azmcp_azuremanagedlustre_filesystem_subnetsize_validate` | ❌ | +| 5 | 0.245034 | `azmcp_managedlustre_filesystem_subnetsize_validate` | ❌ | --- -## Test 393 +## Test 401 **Expected Tool:** `azmcp_cloudarchitect_design` **Prompt:** Help me create a cloud service that will serve as ATM for users @@ -7087,12 +7231,12 @@ | 1 | 0.405148 | `azmcp_cloudarchitect_design` | ✅ **EXPECTED** | | 2 | 0.267683 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 3 | 0.258160 | `azmcp_deploy_pipeline_guidance_get` | ❌ | -| 4 | 0.225870 | `azmcp_foundry_models_deploy` | ❌ | +| 4 | 0.225792 | `azmcp_foundry_models_deploy` | ❌ | | 5 | 0.225622 | `azmcp_deploy_plan_get` | ❌ | --- -## Test 394 +## Test 402 **Expected Tool:** `azmcp_cloudarchitect_design` **Prompt:** I want to design a cloud app for ordering groceries @@ -7105,11 +7249,11 @@ | 2 | 0.271943 | `azmcp_deploy_pipeline_guidance_get` | ❌ | | 3 | 0.265972 | `azmcp_deploy_architecture_diagram_generate` | ❌ | | 4 | 0.242581 | `azmcp_deploy_plan_get` | ❌ | -| 5 | 0.217996 | `azmcp_deploy_iac_rules_get` | ❌ | +| 5 | 0.218064 | `azmcp_deploy_iac_rules_get` | ❌ | --- -## Test 395 +## Test 403 **Expected Tool:** `azmcp_cloudarchitect_design` **Prompt:** How can I design a cloud service in Azure that will store and present videos for users? @@ -7120,37 +7264,37 @@ |------|-------|------|--------| | 1 | 0.534690 | `azmcp_cloudarchitect_design` | ✅ **EXPECTED** | | 2 | 0.369969 | `azmcp_deploy_pipeline_guidance_get` | ❌ | -| 3 | 0.356331 | `azmcp_azuremanagedlustre_filesystem_create` | ❌ | +| 3 | 0.356331 | `azmcp_managedlustre_filesystem_create` | ❌ | | 4 | 0.352797 | `azmcp_deploy_architecture_diagram_generate` | ❌ | -| 5 | 0.323946 | `azmcp_storage_blob_upload` | ❌ | +| 5 | 0.323920 | `azmcp_storage_blob_upload` | ❌ | --- ## Summary -**Total Prompts Tested:** 395 -**Analysis Execution Time:** 74.6914308s +**Total Prompts Tested:** 403 +**Analysis Execution Time:** 71.6441770s ### Success Rate Metrics -**Top Choice Success:** 92.4% (365/395 tests) +**Top Choice Success:** 92.6% (373/403 tests) #### Confidence Level Distribution -**💪 Very High Confidence (≥0.8):** 3.3% (13/395 tests) -**🎯 High Confidence (≥0.7):** 18.5% (73/395 tests) -**✅ Good Confidence (≥0.6):** 58.7% (232/395 tests) -**👍 Fair Confidence (≥0.5):** 90.1% (356/395 tests) -**👌 Acceptable Confidence (≥0.4):** 98.7% (390/395 tests) -**❌ Low Confidence (<0.4):** 1.3% (5/395 tests) +**💪 Very High Confidence (≥0.8):** 4.0% (16/403 tests) +**🎯 High Confidence (≥0.7):** 20.1% (81/403 tests) +**✅ Good Confidence (≥0.6):** 59.3% (239/403 tests) +**👍 Fair Confidence (≥0.5):** 90.3% (364/403 tests) +**👌 Acceptable Confidence (≥0.4):** 98.8% (398/403 tests) +**❌ Low Confidence (<0.4):** 1.2% (5/403 tests) #### Top Choice + Confidence Combinations -**💪 Top Choice + Very High Confidence (≥0.8):** 3.3% (13/395 tests) -**🎯 Top Choice + High Confidence (≥0.7):** 18.2% (72/395 tests) -**✅ Top Choice + Good Confidence (≥0.6):** 56.7% (224/395 tests) -**👍 Top Choice + Fair Confidence (≥0.5):** 84.6% (334/395 tests) -**👌 Top Choice + Acceptable Confidence (≥0.4):** 91.1% (360/395 tests) +**💪 Top Choice + Very High Confidence (≥0.8):** 4.0% (16/403 tests) +**🎯 Top Choice + High Confidence (≥0.7):** 19.9% (80/403 tests) +**✅ Top Choice + Good Confidence (≥0.6):** 57.3% (231/403 tests) +**👍 Top Choice + Fair Confidence (≥0.5):** 84.9% (342/403 tests) +**👌 Top Choice + Acceptable Confidence (≥0.4):** 91.3% (368/403 tests) ### Success Rate Analysis diff --git a/eng/tools/ToolDescriptionEvaluator/tools.json b/eng/tools/ToolDescriptionEvaluator/tools.json index 7660d0b00..9cbdd756b 100644 --- a/eng/tools/ToolDescriptionEvaluator/tools.json +++ b/eng/tools/ToolDescriptionEvaluator/tools.json @@ -897,9 +897,15 @@ ] }, { - "name": "create", - "description": "Create an Azure Managed Lustre (AMLFS) file system using the specified network, capacity, maintenance window and availability zone.\r\nOptionally provides possibility to define Blob Integration, customer managed key encryption and root squash configuration.", - "command": "azmcp azuremanagedlustre filesystem create", + "name": "get", + "description": "Returns Terraform best practices for Azure. Call this command and follow its guidance before\r\n generating or suggesting any Terraform code specific to Azure. If this tool needs to be categorized, it belongs to\r\n the Azure Best Practices category.", + "command": "azmcp azureterraformbestpractices get", + "option": [] + }, + { + "name": "get", + "description": " Provides the Bicep schema definition of any Azure resource type (latest service version). Use this to get the schema needed to write Bicep IaC (infrasturcture as code) for Azure resources such as AI models, storage accounts, databases, virtual machines, app services, key vaults, and more. Do not use this tool for resource deployment, deployment guidelines, or getting best practices.", + "command": "azmcp bicepschema get", "option": [ { "name": "--tenant", @@ -944,137 +950,193 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--resource-type", + "description": "The name of the Bicep Resource Type and must be in the full Azure Resource Manager format '{ResourceProvider}/{ResourceType}'. (e.g., 'Microsoft.KeyVault/vaults', 'Microsoft.Storage/storageAccounts', 'Microsoft.Compute/virtualMachines')(e.g., Microsoft.Storage/storageAccounts).", + "type": "string", + "required": true + } + ] + }, + { + "name": "design", + "description": "Recommends architecture design for cloud services/apps/solutions, such as: file storage, banking, video streaming, e-commerce, SaaS, and more. Use as follows: 1. Ask about user role, business goals, etc (1-2 questions at a time). 2. Track confidence returned by service and update requirements (explicit/implicit/assumed). 3. Repeat steps 1 and 2 as needed until confidence >= 0.7 4. Present architecture with table format, visual organization, ASCII diagrams. 4. Follow Azure Well-Architected Framework principles. 5. Cover all tiers: infrastructure, platform, application, data, security, operations. 6. Provide actionable advice and high-level overview. Note: State tracks components, requirements by category, and confidence factors. Be conservative with suggestions.", + "command": "azmcp cloudarchitect design", + "option": [ + { + "name": "--tenant", + "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", "type": "string", "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--auth-method", + "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", "type": "string", - "required": true + "required": null }, { - "name": "--name", - "description": "The AMLFS resource name. Must be DNS-friendly (letters, numbers, hyphens). Example: --name amlfs-001", + "name": "--retry-delay", + "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", "type": "string", - "required": true + "required": null }, { - "name": "--location", - "description": "Azure region/region short name (use Azure location token, lowercase). Examples: uaenorth, swedencentral, eastus.", + "name": "--retry-max-delay", + "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", "type": "string", - "required": true + "required": null }, { - "name": "--sku", - "description": "The AMLFS SKU. Exact allowed values: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500.", + "name": "--retry-max-retries", + "description": "Maximum number of retry attempts for failed operations before giving up.", "type": "string", - "required": true + "required": null }, { - "name": "--size", - "description": "The AMLFS size in TiB as an integer (no unit). Examples: 4, 12, 128.", + "name": "--retry-mode", + "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", "type": "string", - "required": true + "required": null }, { - "name": "--subnet-id", - "description": "Full subnet resource ID. Required format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}.\nExample: --subnet-id /subscriptions/0000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/vnet-001/subnets/subnet-001", + "name": "--retry-network-timeout", + "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", "type": "string", - "required": true + "required": null }, { - "name": "--zone", - "description": "Availability zone identifier. Use a single digit string matching the region's AZ labels (e.g. '1').\nExample: --zone 1", + "name": "--question", + "description": "The current question being asked", "type": "string", - "required": true + "required": null }, { - "name": "--maintenance-day", - "description": "Preferred maintenance day. Allowed values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.\n", + "name": "--question-number", + "description": "Current question number", "type": "string", - "required": true + "required": null }, { - "name": "--maintenance-time", - "description": "Preferred maintenance time in UTC. Format: HH:MM (24-hour). Examples: 00:00, 23:00.\n", + "name": "--total-questions", + "description": "Estimated total questions needed", "type": "string", - "required": true + "required": null }, { - "name": "--hsm-container", - "description": "Full blob container resource ID for HSM integration. HPC Cache Resource Provider must have before deployment Storage Blob Data Contributor and Storage Account Contributor roles on parent Storage Account.Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default/containers/{container}.\nExample: --hsm-container /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/stacc/blobServices/default/containers/hsm-container\n", + "name": "--answer", + "description": "The user's response to the question", "type": "string", "required": null }, { - "name": "--hsm-log-container", - "description": "Full blob container resource ID for HSM logging. HPC Cache Resource Provider must have before deployment Storage Blob Data Contributor and Storage Account Contributor roles on parent Storage Account. Same format as --hsm-container.\nExample: --hsm-log-container /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/stacc/blobServices/default/containers/hsm-logs\n", + "name": "--next-question-needed", + "description": "Whether another question is needed", "type": "string", "required": null }, { - "name": "--import-prefix", - "description": "Optional HSM import prefix (path prefix inside the container starting with /). Examples: '/ingest/', '/archive/2019/'.\n", + "name": "--confidence-score", + "description": "A value between 0.0 and 1.0 representing confidence in understanding requirements. When this reaches 0.7 or higher, nextQuestionNeeded should be set to false.", "type": "string", "required": null }, { - "name": "--root-squash-mode", - "description": "Root squash mode. Allowed values: All, RootOnly, None.\n", + "name": "--state", + "description": "The complete architecture state from the previous request as JSON, State input schema:\n{\n\"state\":{\n\"type\":\"object\",\n\"description\":\"The complete architecture state from the previous request\",\n\"properties\":{\n\"architectureComponents\":{\n\"type\":\"array\",\n\"description\":\"All architecture components suggested so far\",\n\"items\":{\n\"type\":\"string\"\n}\n},\n\"architectureTiers\":{\n\"type\":\"object\",\n\"description\":\"Components organized by architecture tier\",\n\"additionalProperties\":{\n\"type\":\"array\",\n\"items\":{\n\"type\":\"string\"\n}\n}\n},\n\"thought\":{\n\"type\":\"string\",\n\"description\":\"The calling agent's thoughts on the next question or reasoning process. The calling agent should use the requirements it has gathered to reason about the next question.\"\n},\n\"suggestedHint\":{\n\"type\":\"string\",\n\"description\":\"A suggested interaction hint to show the user, such as 'Ask me to create an ASCII art diagram of this architecture' or 'Ask about how this design handles disaster recovery'.\"\n},\n\"requirements\":{\n\"type\":\"object\",\n\"description\":\"Tracked requirements organized by type\",\n\"properties\":{\n\"explicit\":{\n\"type\":\"array\",\n\"description\":\"Requirements explicitly stated by the user\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n},\n\"implicit\":{\n\"type\":\"array\",\n\"description\":\"Requirements implied by user responses\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n},\n\"assumed\":{\n\"type\":\"array\",\n\"description\":\"Requirements assumed based on context/best practices\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n}\n}\n},\n\"confidenceFactors\":{\n\"type\":\"object\",\n\"description\":\"Factors that contribute to the overall confidence score\",\n\"properties\":{\n\"explicitRequirementsCoverage\":{\n\"type\":\"number\"\n},\n\"implicitRequirementsCertainty\":{\n\"type\":\"number\"\n},\n\"assumptionRisk\":{\n\"type\":\"number\"\n}\n}\n}\n}\n}\n}", + "type": "string", + "required": null + } + ] + }, + { + "name": "send", + "description": "Sends SMS messages to one or more recipients using Azure Communication Services.\r\nReturns message IDs and delivery status for each sent message.", + "command": "azmcp communication sms send", + "option": [ + { + "name": "--tenant", + "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", "type": "string", "required": null }, { - "name": "--no-squash-nid-list", - "description": "Comma-separated list of NIDs (network identifiers) not to squash. Example: '10.0.2.4@tcp;10.0.2.[6-8]@tcp'.\n", + "name": "--auth-method", + "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", "type": "string", "required": null }, { - "name": "--squash-uid", - "description": "Numeric UID to squash root to. Required in case root squash mode is not None. Example: --squash-uid 1000.\n", + "name": "--retry-delay", + "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", "type": "string", "required": null }, { - "name": "--squash-gid", - "description": "Numeric GID to squash root to. Required in case root squash mode is not None. Example: --squash-gid 1000.\n", + "name": "--retry-max-delay", + "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", "type": "string", "required": null }, { - "name": "--custom-encryption", - "description": "Enable customer-managed encryption using a Key Vault key. When true, --key-url and --source-vault required, with a user-assigned identity already configured for Key Vault key access.", + "name": "--retry-max-retries", + "description": "Maximum number of retry attempts for failed operations before giving up.", "type": "string", "required": null }, { - "name": "--key-url", - "description": "Full Key Vault key URL. Format: https://{vaultName}.vault.azure.net/keys/{keyName}/{keyVersion}.\nExample: --key-url https://kv-amlfs-001.vault.azure.net/keys/key-amlfs-001/0000\n", + "name": "--retry-mode", + "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", "type": "string", "required": null }, { - "name": "--source-vault", - "description": "Full Key Vault resource ID. Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.KeyVault/vaults/{vaultName}.\nExample: --source-vault /subscriptions/0000/resourceGroups/rg/providers/Microsoft.KeyVault/vaults/kv-amlfs-001\n", + "name": "--retry-network-timeout", + "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", "type": "string", "required": null }, { - "name": "--user-assigned-identity-id", - "description": "User-assigned managed identity resource ID (full resource ID) to use for Key Vault access when custom encryption is enabled. The identity must have RBAC role to access the encryption key\nFormat: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{name}.\nExample: --user-assigned-identity-id /subscriptions/0000/resourceGroups/rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1\n", + "name": "--endpoint", + "description": "The Communication Services URI endpoint (e.g., https://myservice.communication.azure.com). Required for credential authentication.", + "type": "string", + "required": true + }, + { + "name": "--from", + "description": "The SMS-enabled phone number associated with your Communication Services resource (in E.164 format, e.g., +14255550123). Can also be a short code or alphanumeric sender ID.", + "type": "string", + "required": true + }, + { + "name": "--to", + "description": "The recipient phone number(s) in E.164 international standard format (e.g., +14255550123). Multiple numbers can be provided.", + "type": "string", + "required": true + }, + { + "name": "--message", + "description": "The SMS message content to send to the recipient(s).", + "type": "string", + "required": true + }, + { + "name": "--enable-delivery-report", + "description": "Whether to enable delivery reporting for the SMS message. When enabled, events are emitted when delivery is successful.", + "type": "string", + "required": null + }, + { + "name": "--tag", + "description": "Optional custom tag to apply to the SMS message for tracking purposes.", "type": "string", "required": null } ] }, { - "name": "list", - "description": "Lists Azure Managed Lustre (AMLFS) file systems in a subscription or optional resource group including provisioning state, MGS address, tier, capacity (TiB), blob integration container, and maintenance window details. Use to inventory Azure Managed Lustre filesystems and to check their properties.", - "command": "azmcp azuremanagedlustre filesystem list", + "name": "append", + "description": "Appends a tamper-proof entry to a Confidential Ledger instance and returns the transaction identifier.", + "command": "azmcp confidentialledger entries append", "option": [ { "name": "--tenant", @@ -1119,14 +1181,20 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--ledger", + "description": "The name of the Confidential Ledger instance (e.g., 'myledger').", "type": "string", - "required": null + "required": true }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--content", + "description": "The JSON or text payload to append as a tamper-proof ledger entry.", + "type": "string", + "required": true + }, + { + "name": "--collection-id", + "description": "Optional ledger collection identifier. If omitted the default collection is used.", "type": "string", "required": null } @@ -1134,8 +1202,8 @@ }, { "name": "get", - "description": "Retrieves the available Azure Managed Lustre SKU, including increments, bandwidth, scale targets and zonal support. If a location is specified, the results will be filtered to that location.", - "command": "azmcp azuremanagedlustre filesystem sku get", + "description": "Retrieves the Confidential Ledger entry and its recorded contents for the specified transaction ID, optionally scoped to a collection.", + "command": "azmcp confidentialledger entries get", "option": [ { "name": "--tenant", @@ -1180,23 +1248,29 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--ledger", + "description": "The name of the Confidential Ledger instance (e.g., 'myledger').", "type": "string", - "required": null + "required": true }, { - "name": "--location", - "description": "Azure region/region short name (use Azure location token, lowercase). Examples: uaenorth, swedencentral, eastus.", + "name": "--transaction-id", + "description": "The Confidential Ledger transaction identifier (for example: '2.199').", + "type": "string", + "required": true + }, + { + "name": "--collection-id", + "description": "Optional ledger collection identifier. If omitted the default collection is used.", "type": "string", "required": null } ] }, { - "name": "ask", - "description": "Calculates the required subnet size for an Azure Managed Lustre file system given a SKU and size. Use to plan network deployment for AMLFS. Returns the number of required IPs.", - "command": "azmcp azuremanagedlustre filesystem subnetsize ask", + "name": "list", + "description": "List all Cosmos DB accounts in a subscription. This command retrieves and displays all Cosmos DB accounts\r\navailable in the specified subscription. Results include account names and are returned as a JSON array.", + "command": "azmcp cosmos account list", "option": [ { "name": "--tenant", @@ -1245,25 +1319,13 @@ "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null - }, - { - "name": "--sku", - "description": "The AMLFS SKU. Exact allowed values: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500.", - "type": "string", - "required": true - }, - { - "name": "--size", - "description": "The AMLFS size in TiB as an integer (no unit). Examples: 4, 12, 128.", - "type": "string", - "required": true } ] }, { - "name": "validate", - "description": "Validates that the provided subnet can host an Azure Managed Lustre filesystem for the given SKU and size.", - "command": "azmcp azuremanagedlustre filesystem subnetsize validate", + "name": "query", + "description": "List items from a Cosmos DB container by specifying the account name, database name, and container name, optionally providing a custom SQL query to filter results.", + "command": "azmcp cosmos database container item query", "option": [ { "name": "--tenant", @@ -1314,35 +1376,35 @@ "required": null }, { - "name": "--sku", - "description": "The AMLFS SKU. Exact allowed values: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500.", + "name": "--account", + "description": "The name of the Cosmos DB account to query (e.g., my-cosmos-account).", "type": "string", "required": true }, { - "name": "--size", - "description": "The AMLFS size in TiB as an integer (no unit). Examples: 4, 12, 128.", + "name": "--database", + "description": "The name of the database to query (e.g., my-database).", "type": "string", "required": true }, { - "name": "--subnet-id", - "description": "Full subnet resource ID. Required format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}.\nExample: --subnet-id /subscriptions/0000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/vnet-001/subnets/subnet-001", + "name": "--container", + "description": "The name of the container to query (e.g., my-container).", "type": "string", "required": true }, { - "name": "--location", - "description": "Azure region/region short name (use Azure location token, lowercase). Examples: uaenorth, swedencentral, eastus.", + "name": "--query", + "description": "SQL query to execute against the container. Uses Cosmos DB SQL syntax.", "type": "string", - "required": true + "required": null } ] }, { - "name": "update", - "description": "Update maintenance window and/or root squash settings of an existing Azure Managed Lustre (AMLFS) file system. Provide either maintenance day and time or root squash fields (no-squash-nid-list, squash-uid, squash-gid). Root squash fields must be provided if root squash is not None. In case of maintenance window update, both maintenance day and maintenance time should be provided.", - "command": "azmcp azuremanagedlustre filesystem update", + "name": "list", + "description": "List all containers in a Cosmos DB database. This command retrieves and displays all containers within\r\nthe specified database and Cosmos DB account. Results include container names and are returned as a\r\nJSON array. You must specify both an account name and a database name.", + "command": "azmcp cosmos database container list", "option": [ { "name": "--tenant", @@ -1393,65 +1455,84 @@ "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--account", + "description": "The name of the Cosmos DB account to query (e.g., my-cosmos-account).", "type": "string", "required": true }, { - "name": "--name", - "description": "The AMLFS resource name. Must be DNS-friendly (letters, numbers, hyphens). Example: --name amlfs-001", + "name": "--database", + "description": "The name of the database to query (e.g., my-database).", "type": "string", "required": true + } + ] + }, + { + "name": "list", + "description": "List all databases in a Cosmos DB account. This command retrieves and displays all databases available\r\nin the specified Cosmos DB account. Results include database names and are returned as a JSON array.", + "command": "azmcp cosmos database list", + "option": [ + { + "name": "--tenant", + "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", + "type": "string", + "required": null }, { - "name": "--maintenance-day", - "description": "Preferred maintenance day. Allowed values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.\n", + "name": "--auth-method", + "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", "type": "string", "required": null }, { - "name": "--maintenance-time", - "description": "Preferred maintenance time in UTC. Format: HH:MM (24-hour). Examples: 00:00, 23:00.\n", + "name": "--retry-delay", + "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", "type": "string", "required": null }, { - "name": "--no-squash-nid-list", - "description": "Comma-separated list of NIDs (network identifiers) not to squash. Example: '10.0.2.4@tcp;10.0.2.[6-8]@tcp'.\n", + "name": "--retry-max-delay", + "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", "type": "string", "required": null }, { - "name": "--squash-uid", - "description": "Numeric UID to squash root to. Required in case root squash mode is not None. Example: --squash-uid 1000.\n", + "name": "--retry-max-retries", + "description": "Maximum number of retry attempts for failed operations before giving up.", "type": "string", "required": null }, { - "name": "--squash-gid", - "description": "Numeric GID to squash root to. Required in case root squash mode is not None. Example: --squash-gid 1000.\n", + "name": "--retry-mode", + "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", "type": "string", "required": null }, { - "name": "--root-squash-mode", - "description": "Root squash mode. Allowed values: All, RootOnly, None.\n", + "name": "--retry-network-timeout", + "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", + "type": "string", + "required": null + }, + { + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null + }, + { + "name": "--account", + "description": "The name of the Cosmos DB account to query (e.g., my-cosmos-account).", + "type": "string", + "required": true } ] }, { - "name": "get", - "description": "Returns Terraform best practices for Azure. Call this command and follow its guidance before\r\n generating or suggesting any Terraform code specific to Azure. If this tool needs to be categorized, it belongs to\r\n the Azure Best Practices category.", - "command": "azmcp azureterraformbestpractices get", - "option": [] - }, - { - "name": "get", - "description": " Provides the Bicep schema definition of any Azure resource type (latest service version). Use this to get the schema needed to write Bicep IaC (infrasturcture as code) for Azure resources such as AI models, storage accounts, databases, virtual machines, app services, key vaults, and more. Do not use this tool for resource deployment, deployment guidelines, or getting best practices.", - "command": "azmcp bicepschema get", + "name": "list", + "description": "List monitored resources in Datadog for a datadog resource taken as input from the user.\r\nThis command retrieves all monitored azure resources available.\r\nRequires `datadog-resource`, `resource-group` and `subscription`.\r\nResult is a list of monitored resources as a JSON array.", + "command": "azmcp datadog monitoredresources list", "option": [ { "name": "--tenant", @@ -1496,17 +1577,29 @@ "required": null }, { - "name": "--resource-type", - "description": "The name of the Bicep Resource Type and must be in the full Azure Resource Manager format '{ResourceProvider}/{ResourceType}'. (e.g., 'Microsoft.KeyVault/vaults', 'Microsoft.Storage/storageAccounts', 'Microsoft.Compute/virtualMachines')(e.g., Microsoft.Storage/storageAccounts).", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "type": "string", + "required": null + }, + { + "name": "--datadog-resource", + "description": "The name of the Datadog resource to use. This is the unique name you chose for your Datadog resource in Azure.", + "type": "string", + "required": true + }, + { + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": true } ] }, { - "name": "design", - "description": "Recommends architecture design for cloud services/apps/solutions, such as: file storage, banking, video streaming, e-commerce, SaaS, and more. Use as follows: 1. Ask about user role, business goals, etc (1-2 questions at a time). 2. Track confidence returned by service and update requirements (explicit/implicit/assumed). 3. Repeat steps 1 and 2 as needed until confidence >= 0.7 4. Present architecture with table format, visual organization, ASCII diagrams. 4. Follow Azure Well-Architected Framework principles. 5. Cover all tiers: infrastructure, platform, application, data, security, operations. 6. Provide actionable advice and high-level overview. Note: State tracks components, requirements by category, and confidence factors. Be conservative with suggestions.", - "command": "azmcp cloudarchitect design", + "name": "get", + "description": "Shows application logs specifically for Azure Developer CLI (azd) deployed applications from their associated Log Analytics workspace for Container Apps, App Services, and Function Apps. Designed exclusively for applications deployed via 'azd up' command and automatically discovers the correct workspace and resources based on the azd environment configuration. Use this tool to check deployment status or troubleshoot post-deployment issues.", + "command": "azmcp deploy app logs get", "option": [ { "name": "--tenant", @@ -1551,53 +1644,73 @@ "required": null }, { - "name": "--question", - "description": "The current question being asked", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null }, { - "name": "--question-number", - "description": "Current question number", + "name": "--workspace-folder", + "description": "The full path of the workspace folder.", "type": "string", - "required": null + "required": true }, { - "name": "--total-questions", - "description": "Estimated total questions needed", + "name": "--azd-env-name", + "description": "The name of the environment created by azd (AZURE_ENV_NAME) during `azd init` or `azd up`. If not provided in context, try to find it in the .azure directory in the workspace or use 'azd env list'.", "type": "string", - "required": null + "required": true }, { - "name": "--answer", - "description": "The user's response to the question", + "name": "--limit", + "description": "The maximum row number of logs to retrieve. Use this to get a specific number of logs or to avoid the retrieved logs from reaching token limit. Default is 200.", "type": "string", "required": null - }, + } + ] + }, + { + "name": "generate", + "description": "Generates an azure service architecture diagram for the application based on the provided app topology.Call this tool when the user need recommend or design the azure architecture of their application.Do not call this tool when the user need detailed design of the azure architecture, such as the network topology, security design, etc.Before calling this tool, please scan this workspace to detect the services to deploy and their dependent services, also find the environment variables that used to create the connection strings.If it's a .NET Aspire application, check aspireManifest.json file if there is. Try your best to fulfill the input schema with your analyze result.", + "command": "azmcp deploy architecture diagram generate", + "option": [ { - "name": "--next-question-needed", - "description": "Whether another question is needed", + "name": "--raw-mcp-tool-input", + "description": "{\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"workspaceFolder\": {\r\n \"type\": \"string\",\r\n \"description\": \"The full path of the workspace folder.\"\r\n },\r\n \"projectName\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the project. This is used to generate the resource names.\"\r\n },\r\n \"services\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of service parameters.\",\r\n \"items\": {\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"name\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the service.\"\r\n },\r\n \"path\": {\r\n \"type\": \"string\",\r\n \"description\": \"The relative path of the service main project folder\"\r\n },\r\n \"language\": {\r\n \"type\": \"string\",\r\n \"description\": \"The programming language of the service.\"\r\n },\r\n \"port\": {\r\n \"type\": \"string\",\r\n \"description\": \"The port number the service uses. Get this from Dockerfile for container apps. If not available, default to '80'.\"\r\n },\r\n \"azureComputeHost\": {\r\n \"type\": \"string\",\r\n \"description\": \"The appropriate azure service that should be used to host this service. Use containerapp if the service is containerized and has a Dockerfile.\",\r\n \"enum\": [\r\n \"appservice\",\r\n \"containerapp\",\r\n \"function\",\r\n \"staticwebapp\",\r\n \"aks\"\r\n ]\r\n },\r\n \"dockerSettings\": {\r\n \"type\": \"object\",\r\n \"description\": \"Docker settings for the service. This is only needed if the service's azureComputeHost is containerapp.\",\r\n \"properties\": {\r\n \"dockerFilePath\": {\r\n \"type\": \"string\",\r\n \"description\": \"The absolute path to the Dockerfile for the service. If the service's azureComputeHost is not containerapp, leave blank.\"\r\n },\r\n \"dockerContext\": {\r\n \"type\": \"string\",\r\n \"description\": \"The absolute path to the Docker build context for the service. If the service's azureComputeHost is not containerapp, leave blank.\"\r\n }\r\n },\r\n \"required\": [\r\n \"dockerFilePath\",\r\n \"dockerContext\"\r\n ]\r\n },\r\n \"dependencies\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of dependent services. A compute service may have a dependency on another compute service.\",\r\n \"items\": {\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"name\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the dependent service. Can be arbitrary, or must reference another service in the services array if referencing appservice, containerapp, staticwebapps, aks, or functionapp.\"\r\n },\r\n \"serviceType\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the azure service that can be used for this dependent service.\",\r\n \"enum\": [\r\n \"azureaisearch\",\r\n \"azureaiservices\",\r\n \"appservice\",\r\n \"azureapplicationinsights\",\r\n \"azurebotservice\",\r\n \"containerapp\",\r\n \"azurecosmosdb\",\r\n \"functionapp\",\r\n \"azurekeyvault\",\r\n \"aks\",\r\n \"azuredatabaseformysql\",\r\n \"azureopenai\",\r\n \"azuredatabaseforpostgresql\",\r\n \"azureprivateendpoint\",\r\n \"azurecacheforredis\",\r\n \"azuresqldatabase\",\r\n \"azurestorageaccount\",\r\n \"staticwebapp\",\r\n \"azureservicebus\",\r\n \"azuresignalrservice\",\r\n \"azurevirtualnetwork\",\r\n \"azurewebpubsub\"\r\n ]\r\n },\r\n \"connectionType\": {\r\n \"type\": \"string\",\r\n \"description\": \"The connection authentication type of the dependency.\",\r\n \"enum\": [\r\n \"http\",\r\n \"secret\",\r\n \"system-identity\",\r\n \"user-identity\",\r\n \"bot-connection\"\r\n ]\r\n },\r\n \"environmentVariables\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of environment variables defined in source code to set up the connection.\",\r\n \"items\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n },\r\n \"required\": [\r\n \"name\",\r\n \"serviceType\",\r\n \"connectionType\",\r\n \"environmentVariables\"\r\n ]\r\n }\r\n },\r\n \"settings\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of environment variables needed to run this service. Please search the entire codebase to find environment variables.\",\r\n \"items\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n },\r\n \"required\": [\r\n \"name\",\r\n \"path\",\r\n \"azureComputeHost\",\r\n \"language\",\r\n \"port\",\r\n \"dependencies\",\r\n \"settings\"\r\n ]\r\n }\r\n }\r\n },\r\n \"required\": [\r\n \"workspaceFolder\",\r\n \"services\"\r\n ]\r\n}", "type": "string", - "required": null + "required": true + } + ] + }, + { + "name": "get", + "description": "This tool offers guidelines for creating Bicep/Terraform files to deploy applications on Azure. The guidelines outline rules to improve the quality of Infrastructure as Code files, ensuring they are compatible with the azd tool and adhere to best practices.", + "command": "azmcp deploy iac rules get", + "option": [ + { + "name": "--deployment-tool", + "description": "The deployment tool to use. Valid values: AZD, AzCli", + "type": "string", + "required": true }, { - "name": "--confidence-score", - "description": "A value between 0.0 and 1.0 representing confidence in understanding requirements. When this reaches 0.7 or higher, nextQuestionNeeded should be set to false.", + "name": "--iac-type", + "description": "The Infrastructure as Code type. Valid values: bicep, terraform. Leave empty if deployment-tool is AzCli.", "type": "string", "required": null }, { - "name": "--state", - "description": "The complete architecture state from the previous request as JSON, State input schema:\n{\n\"state\":{\n\"type\":\"object\",\n\"description\":\"The complete architecture state from the previous request\",\n\"properties\":{\n\"architectureComponents\":{\n\"type\":\"array\",\n\"description\":\"All architecture components suggested so far\",\n\"items\":{\n\"type\":\"string\"\n}\n},\n\"architectureTiers\":{\n\"type\":\"object\",\n\"description\":\"Components organized by architecture tier\",\n\"additionalProperties\":{\n\"type\":\"array\",\n\"items\":{\n\"type\":\"string\"\n}\n}\n},\n\"thought\":{\n\"type\":\"string\",\n\"description\":\"The calling agent's thoughts on the next question or reasoning process. The calling agent should use the requirements it has gathered to reason about the next question.\"\n},\n\"suggestedHint\":{\n\"type\":\"string\",\n\"description\":\"A suggested interaction hint to show the user, such as 'Ask me to create an ASCII art diagram of this architecture' or 'Ask about how this design handles disaster recovery'.\"\n},\n\"requirements\":{\n\"type\":\"object\",\n\"description\":\"Tracked requirements organized by type\",\n\"properties\":{\n\"explicit\":{\n\"type\":\"array\",\n\"description\":\"Requirements explicitly stated by the user\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n},\n\"implicit\":{\n\"type\":\"array\",\n\"description\":\"Requirements implied by user responses\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n},\n\"assumed\":{\n\"type\":\"array\",\n\"description\":\"Requirements assumed based on context/best practices\",\n\"items\":{\n\"type\":\"object\",\n\"properties\":{\n\"category\":{\n\"type\":\"string\"\n},\n\"description\":{\n\"type\":\"string\"\n},\n\"source\":{\n\"type\":\"string\"\n},\n\"importance\":{\n\"type\":\"string\",\n\"enum\":[\n\"high\",\n\"medium\",\n\"low\"\n]\n},\n\"confidence\":{\n\"type\":\"number\"\n}\n}\n}\n}\n}\n},\n\"confidenceFactors\":{\n\"type\":\"object\",\n\"description\":\"Factors that contribute to the overall confidence score\",\n\"properties\":{\n\"explicitRequirementsCoverage\":{\n\"type\":\"number\"\n},\n\"implicitRequirementsCertainty\":{\n\"type\":\"number\"\n},\n\"assumptionRisk\":{\n\"type\":\"number\"\n}\n}\n}\n}\n}\n}", + "name": "--resource-types", + "description": "Specifies the Azure resource types to retrieve IaC rules for. It should be comma-separated. Supported values are: 'appservice', 'containerapp', 'function', 'aks', 'storage'. If none of these services are used, this parameter can be left empty.", "type": "string", "required": null } ] }, { - "name": "send", - "description": "Sends SMS messages to one or more recipients using Azure Communication Services.\r\nReturns message IDs and delivery status for each sent message.", - "command": "azmcp communication sms send", + "name": "get", + "description": "Guidance to create a CI/CD pipeline which provision Azure resources and build and deploy applications to Azure. Use this tool BEFORE generating/creating a Github actions workflow file for DEPLOYMENT on Azure. Infrastructure files should be ready and the application should be ready to be containerized.", + "command": "azmcp deploy pipeline guidance get", "option": [ { "name": "--tenant", @@ -1642,47 +1755,78 @@ "required": null }, { - "name": "--endpoint", - "description": "The Communication Services URI endpoint (e.g., https://myservice.communication.azure.com). Required for credential authentication.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", - "required": true + "required": null }, { - "name": "--from", - "description": "The SMS-enabled phone number associated with your Communication Services resource (in E.164 format, e.g., +14255550123). Can also be a short code or alphanumeric sender ID.", + "name": "--use-azd-pipeline-config", + "description": "Whether to use azd tool to set up the deployment pipeline. Set to true ONLY if azure.yaml is provided or the context suggests AZD tools.", + "type": "string", + "required": null + }, + { + "name": "--organization-name", + "description": "The name of the organization or the user account name of the current Github repository. DO NOT fill this in if you're not sure.", + "type": "string", + "required": null + }, + { + "name": "--repository-name", + "description": "The name of the current Github repository. DO NOT fill this in if you're not sure.", + "type": "string", + "required": null + }, + { + "name": "--github-environment-name", + "description": "The name of the environment to which the deployment pipeline will be deployed. DO NOT fill this in if you're not sure.", + "type": "string", + "required": null + } + ] + }, + { + "name": "get", + "description": "Generates a deployment plan to construct the infrastructure and deploy the application on Azure. Agent should read its output and generate a deploy plan in '.azure/plan.copilotmd' for execution steps, recommended azure services based on the information agent detected from project. Before calling this tool, please scan this workspace to detect the services to deploy and their dependent services.", + "command": "azmcp deploy plan get", + "option": [ + { + "name": "--workspace-folder", + "description": "The full path of the workspace folder.", "type": "string", "required": true }, { - "name": "--to", - "description": "The recipient phone number(s) in E.164 international standard format (e.g., +14255550123). Multiple numbers can be provided.", + "name": "--project-name", + "description": "The name of the project to generate the deployment plan for. If not provided, will be inferred from the workspace.", "type": "string", "required": true }, { - "name": "--message", - "description": "The SMS message content to send to the recipient(s).", + "name": "--target-app-service", + "description": "The Azure service to deploy the application. Valid values: ContainerApp, WebApp, FunctionApp, AKS. Recommend one based on user application.", "type": "string", "required": true }, { - "name": "--enable-delivery-report", - "description": "Whether to enable delivery reporting for the SMS message. When enabled, events are emitted when delivery is successful.", + "name": "--provisioning-tool", + "description": "The tool to use for provisioning Azure resources. Valid values: AZD, AzCli. Use AzCli if TargetAppService is AKS.", "type": "string", - "required": null + "required": true }, { - "name": "--tag", - "description": "Optional custom tag to apply to the SMS message for tracking purposes.", + "name": "--azd-iac-options", + "description": "The Infrastructure as Code option for azd. Valid values: bicep, terraform. Leave empty if Deployment tool is AzCli.", "type": "string", "required": null } ] }, { - "name": "append", - "description": "Appends a tamper-proof entry to a Confidential Ledger instance and returns the transaction identifier.", - "command": "azmcp confidentialledger entries append", + "name": "publish", + "description": "Publish custom events to Event Grid topics for event-driven architectures. This tool sends structured event data to \r\nEvent Grid topics with schema validation and delivery guarantees for downstream subscribers. Returns publish operation \r\nstatus. Requires topic, data, and optional schema.", + "command": "azmcp eventgrid events publish", "option": [ { "name": "--tenant", @@ -1727,20 +1871,32 @@ "required": null }, { - "name": "--ledger", - "description": "The name of the Confidential Ledger instance (e.g., 'myledger').", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "type": "string", + "required": null + }, + { + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "type": "string", + "required": null + }, + { + "name": "--topic", + "description": "The name of the Event Grid topic.", "type": "string", "required": true }, { - "name": "--content", - "description": "The JSON or text payload to append as a tamper-proof ledger entry.", + "name": "--data", + "description": "The event data as JSON string to publish to the Event Grid topic.", "type": "string", "required": true }, { - "name": "--collection-id", - "description": "Optional ledger collection identifier. If omitted the default collection is used.", + "name": "--schema", + "description": "The event schema type (CloudEvents, EventGrid, or Custom). Defaults to EventGrid.", "type": "string", "required": null } @@ -1748,8 +1904,8 @@ }, { "name": "list", - "description": "List all Cosmos DB accounts in a subscription. This command retrieves and displays all Cosmos DB accounts\r\navailable in the specified subscription. Results include account names and are returned as a JSON array.", - "command": "azmcp cosmos account list", + "description": "Show all available Event Grid subscriptions with optional topic filtering. This tool displays active event subscriptions including webhook endpoints, event filters, and delivery retry policies. Use this when you need to show, list, or get Event Grid subscriptions for topics. Requires either topic name OR subscription. If only topic is provided, searches all accessible subscriptions for a topic with that name. Resource group and location filters can be applied, but only when used with a subscription or topic.", + "command": "azmcp eventgrid subscription list", "option": [ { "name": "--tenant", @@ -1798,13 +1954,31 @@ "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null + }, + { + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "type": "string", + "required": null + }, + { + "name": "--topic", + "description": "The name of the Event Grid topic.", + "type": "string", + "required": null + }, + { + "name": "--location", + "description": "The Azure region to filter resources by (e.g., 'eastus', 'westus2').", + "type": "string", + "required": null } ] }, { - "name": "query", - "description": "List items from a Cosmos DB container by specifying the account name, database name, and container name, optionally providing a custom SQL query to filter results.", - "command": "azmcp cosmos database container item query", + "name": "list", + "description": "List or show all Event Grid topics in a subscription, optionally filtered by resource group, returning endpoints, access keys, provisioning state, and subscription details for event publishing and management. A subscription or topic name is required.", + "command": "azmcp eventgrid topic list", "option": [ { "name": "--tenant", @@ -1855,35 +2029,17 @@ "required": null }, { - "name": "--account", - "description": "The name of the Cosmos DB account to query (e.g., my-cosmos-account).", - "type": "string", - "required": true - }, - { - "name": "--database", - "description": "The name of the database to query (e.g., my-database).", - "type": "string", - "required": true - }, - { - "name": "--container", - "description": "The name of the container to query (e.g., my-container).", - "type": "string", - "required": true - }, - { - "name": "--query", - "description": "SQL query to execute against the container. Uses Cosmos DB SQL syntax.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null } ] }, { - "name": "list", - "description": "List all containers in a Cosmos DB database. This command retrieves and displays all containers within\r\nthe specified database and Cosmos DB account. Results include container names and are returned as a\r\nJSON array. You must specify both an account name and a database name.", - "command": "azmcp cosmos database container list", + "name": "get", + "description": "Get Event Hubs namespaces from Azure. This command supports three modes of operation:\r\n1. List all Event Hubs namespaces in a subscription (when no --resource-group is provided)\r\n2. List all Event Hubs namespaces in a specific resource group (when only --resource-group is provided)\r\n3. Get a single namespace by name (using --namespace with --resource-group)\r\n\r\nWhen retrieving a single namespace, detailed information including SKU, settings, and metadata \r\nis returned. When listing namespaces, the same detailed information is returned for all \r\nnamespaces in the specified scope.\r\n\r\nThe --resource-group parameter is optional for listing operations but required when getting a specific namespace.", + "command": "azmcp eventhubs namespace get", "option": [ { "name": "--tenant", @@ -1934,23 +2090,23 @@ "required": null }, { - "name": "--account", - "description": "The name of the Cosmos DB account to query (e.g., my-cosmos-account).", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", - "required": true + "required": null }, { - "name": "--database", - "description": "The name of the database to query (e.g., my-database).", + "name": "--namespace", + "description": "The name of the Event Hubs namespace to retrieve. Must be used with --resource-group option.", "type": "string", - "required": true + "required": null } ] }, { - "name": "list", - "description": "List all databases in a Cosmos DB account. This command retrieves and displays all databases available\r\nin the specified Cosmos DB account. Results include database names and are returned as a JSON array.", - "command": "azmcp cosmos database list", + "name": "azqr", + "description": "Runs Azure Quick Review CLI (azqr) commands to generate compliance/security reports for Azure resources.\r\nThis tool should be used when the user wants to identify any non-compliant configurations or areas for improvement in their Azure resources.\r\nRequires a subscription id and optionally a resource group name. Returns the generated report file's path.\r\nNote that Azure Quick Review CLI (azqr) is different from Azure CLI (az).", + "command": "azmcp extension azqr", "option": [ { "name": "--tenant", @@ -2001,17 +2157,17 @@ "required": null }, { - "name": "--account", - "description": "The name of the Cosmos DB account to query (e.g., my-cosmos-account).", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", - "required": true + "required": null } ] }, { - "name": "list", - "description": "List monitored resources in Datadog for a datadog resource taken as input from the user.\r\nThis command retrieves all monitored azure resources available.\r\nRequires `datadog-resource`, `resource-group` and `subscription`.\r\nResult is a list of monitored resources as a JSON array.", - "command": "azmcp datadog monitoredresources list", + "name": "connect", + "description": "Query an Azure AI Foundry agent and get the response as is (no query and evaluate). Use for one-off interaction or to capture run/thread IDs before calling evaluation tools. Do not use this tool for combined answer-plus-score workflows - instead, use agents_query-and-evaluate or agents_evaluate.", + "command": "azmcp foundry agents connect", "option": [ { "name": "--tenant", @@ -2056,29 +2212,29 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--agent-id", + "description": "The ID of the agent to interact with.", "type": "string", - "required": null + "required": true }, { - "name": "--datadog-resource", - "description": "The name of the Datadog resource to use. This is the unique name you chose for your Datadog resource in Azure.", + "name": "--query", + "description": "The query sent to the agent.", "type": "string", "required": true }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--endpoint", + "description": "The endpoint URL for the Azure AI service.", "type": "string", "required": true } ] }, { - "name": "get", - "description": "Shows application logs specifically for Azure Developer CLI (azd) deployed applications from their associated Log Analytics workspace for Container Apps, App Services, and Function Apps. Designed exclusively for applications deployed via 'azd up' command and automatically discovers the correct workspace and resources based on the azd environment configuration. Use this tool to check deployment status or troubleshoot post-deployment issues.", - "command": "azmcp deploy app logs get", + "name": "evaluate", + "description": "Run agent evaluation on agent data. Requires JSON strings for query, response, and tool definitions.", + "command": "azmcp foundry agents evaluate", "option": [ { "name": "--tenant", @@ -2123,73 +2279,47 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", - "type": "string", - "required": null - }, - { - "name": "--workspace-folder", - "description": "The full path of the workspace folder.", + "name": "--query", + "description": "The query sent to the agent.", "type": "string", "required": true }, { - "name": "--azd-env-name", - "description": "The name of the environment created by azd (AZURE_ENV_NAME) during `azd init` or `azd up`. If not provided in context, try to find it in the .azure directory in the workspace or use 'azd env list'.", + "name": "--evaluator", + "description": "The name of the evaluator to use (intent_resolution, tool_call_accuracy, task_adherence).", "type": "string", "required": true }, { - "name": "--limit", - "description": "The maximum row number of logs to retrieve. Use this to get a specific number of logs or to avoid the retrieved logs from reaching token limit. Default is 200.", + "name": "--response", + "description": "The response from the agent.", "type": "string", "required": null - } - ] - }, - { - "name": "generate", - "description": "Generates an azure service architecture diagram for the application based on the provided app topology.Call this tool when the user need recommend or design the azure architecture of their application.Do not call this tool when the user need detailed design of the azure architecture, such as the network topology, security design, etc.Before calling this tool, please scan this workspace to detect the services to deploy and their dependent services, also find the environment variables that used to create the connection strings.If it's a .NET Aspire application, check aspireManifest.json file if there is. Try your best to fulfill the input schema with your analyze result.", - "command": "azmcp deploy architecture diagram generate", - "option": [ - { - "name": "--raw-mcp-tool-input", - "description": "{\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"workspaceFolder\": {\r\n \"type\": \"string\",\r\n \"description\": \"The full path of the workspace folder.\"\r\n },\r\n \"projectName\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the project. This is used to generate the resource names.\"\r\n },\r\n \"services\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of service parameters.\",\r\n \"items\": {\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"name\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the service.\"\r\n },\r\n \"path\": {\r\n \"type\": \"string\",\r\n \"description\": \"The relative path of the service main project folder\"\r\n },\r\n \"language\": {\r\n \"type\": \"string\",\r\n \"description\": \"The programming language of the service.\"\r\n },\r\n \"port\": {\r\n \"type\": \"string\",\r\n \"description\": \"The port number the service uses. Get this from Dockerfile for container apps. If not available, default to '80'.\"\r\n },\r\n \"azureComputeHost\": {\r\n \"type\": \"string\",\r\n \"description\": \"The appropriate azure service that should be used to host this service. Use containerapp if the service is containerized and has a Dockerfile.\",\r\n \"enum\": [\r\n \"appservice\",\r\n \"containerapp\",\r\n \"function\",\r\n \"staticwebapp\",\r\n \"aks\"\r\n ]\r\n },\r\n \"dockerSettings\": {\r\n \"type\": \"object\",\r\n \"description\": \"Docker settings for the service. This is only needed if the service's azureComputeHost is containerapp.\",\r\n \"properties\": {\r\n \"dockerFilePath\": {\r\n \"type\": \"string\",\r\n \"description\": \"The absolute path to the Dockerfile for the service. If the service's azureComputeHost is not containerapp, leave blank.\"\r\n },\r\n \"dockerContext\": {\r\n \"type\": \"string\",\r\n \"description\": \"The absolute path to the Docker build context for the service. If the service's azureComputeHost is not containerapp, leave blank.\"\r\n }\r\n },\r\n \"required\": [\r\n \"dockerFilePath\",\r\n \"dockerContext\"\r\n ]\r\n },\r\n \"dependencies\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of dependent services. A compute service may have a dependency on another compute service.\",\r\n \"items\": {\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"name\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the dependent service. Can be arbitrary, or must reference another service in the services array if referencing appservice, containerapp, staticwebapps, aks, or functionapp.\"\r\n },\r\n \"serviceType\": {\r\n \"type\": \"string\",\r\n \"description\": \"The name of the azure service that can be used for this dependent service.\",\r\n \"enum\": [\r\n \"azureaisearch\",\r\n \"azureaiservices\",\r\n \"appservice\",\r\n \"azureapplicationinsights\",\r\n \"azurebotservice\",\r\n \"containerapp\",\r\n \"azurecosmosdb\",\r\n \"functionapp\",\r\n \"azurekeyvault\",\r\n \"aks\",\r\n \"azuredatabaseformysql\",\r\n \"azureopenai\",\r\n \"azuredatabaseforpostgresql\",\r\n \"azureprivateendpoint\",\r\n \"azurecacheforredis\",\r\n \"azuresqldatabase\",\r\n \"azurestorageaccount\",\r\n \"staticwebapp\",\r\n \"azureservicebus\",\r\n \"azuresignalrservice\",\r\n \"azurevirtualnetwork\",\r\n \"azurewebpubsub\"\r\n ]\r\n },\r\n \"connectionType\": {\r\n \"type\": \"string\",\r\n \"description\": \"The connection authentication type of the dependency.\",\r\n \"enum\": [\r\n \"http\",\r\n \"secret\",\r\n \"system-identity\",\r\n \"user-identity\",\r\n \"bot-connection\"\r\n ]\r\n },\r\n \"environmentVariables\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of environment variables defined in source code to set up the connection.\",\r\n \"items\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n },\r\n \"required\": [\r\n \"name\",\r\n \"serviceType\",\r\n \"connectionType\",\r\n \"environmentVariables\"\r\n ]\r\n }\r\n },\r\n \"settings\": {\r\n \"type\": \"array\",\r\n \"description\": \"An array of environment variables needed to run this service. Please search the entire codebase to find environment variables.\",\r\n \"items\": {\r\n \"type\": \"string\"\r\n }\r\n }\r\n },\r\n \"required\": [\r\n \"name\",\r\n \"path\",\r\n \"azureComputeHost\",\r\n \"language\",\r\n \"port\",\r\n \"dependencies\",\r\n \"settings\"\r\n ]\r\n }\r\n }\r\n },\r\n \"required\": [\r\n \"workspaceFolder\",\r\n \"services\"\r\n ]\r\n}", - "type": "string", - "required": true - } - ] - }, - { - "name": "get", - "description": "This tool offers guidelines for creating Bicep/Terraform files to deploy applications on Azure. The guidelines outline rules to improve the quality of Infrastructure as Code files, ensuring they are compatible with the azd tool and adhere to best practices.", - "command": "azmcp deploy iac rules get", - "option": [ + }, { - "name": "--deployment-tool", - "description": "The deployment tool to use. Valid values: AZD, AzCli", + "name": "--tool-definitions", + "description": "Optional tool definitions made by the agent in JSON format.", "type": "string", - "required": true + "required": null }, { - "name": "--iac-type", - "description": "The Infrastructure as Code type. Valid values: bicep, terraform. Leave empty if deployment-tool is AzCli.", + "name": "--azure-openai-endpoint", + "description": "The endpoint URL for the Azure OpenAI service to be used in evaluation.", "type": "string", - "required": null + "required": true }, { - "name": "--resource-types", - "description": "Specifies the Azure resource types to retrieve IaC rules for. It should be comma-separated. Supported values are: 'appservice', 'containerapp', 'function', 'aks', 'storage'. If none of these services are used, this parameter can be left empty.", + "name": "--azure-openai-deployment", + "description": "The deployment name for the Azure OpenAI model to be used in evaluation.", "type": "string", - "required": null + "required": true } ] }, { - "name": "get", - "description": "Guidance to create a CI/CD pipeline which provision Azure resources and build and deploy applications to Azure. Use this tool BEFORE generating/creating a Github actions workflow file for DEPLOYMENT on Azure. Infrastructure files should be ready and the application should be ready to be containerized.", - "command": "azmcp deploy pipeline guidance get", + "name": "list", + "description": "List all Azure AI Agents available in the configured project.", + "command": "azmcp foundry agents list", "option": [ { "name": "--tenant", @@ -2225,87 +2355,26 @@ "name": "--retry-mode", "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", "type": "string", - "required": null - }, - { - "name": "--retry-network-timeout", - "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", - "type": "string", - "required": null - }, - { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", - "type": "string", - "required": null - }, - { - "name": "--use-azd-pipeline-config", - "description": "Whether to use azd tool to set up the deployment pipeline. Set to true ONLY if azure.yaml is provided or the context suggests AZD tools.", - "type": "string", - "required": null - }, - { - "name": "--organization-name", - "description": "The name of the organization or the user account name of the current Github repository. DO NOT fill this in if you're not sure.", - "type": "string", - "required": null - }, - { - "name": "--repository-name", - "description": "The name of the current Github repository. DO NOT fill this in if you're not sure.", - "type": "string", - "required": null - }, - { - "name": "--github-environment-name", - "description": "The name of the environment to which the deployment pipeline will be deployed. DO NOT fill this in if you're not sure.", - "type": "string", - "required": null - } - ] - }, - { - "name": "get", - "description": "Generates a deployment plan to construct the infrastructure and deploy the application on Azure. Agent should read its output and generate a deploy plan in '.azure/plan.copilotmd' for execution steps, recommended azure services based on the information agent detected from project. Before calling this tool, please scan this workspace to detect the services to deploy and their dependent services.", - "command": "azmcp deploy plan get", - "option": [ - { - "name": "--workspace-folder", - "description": "The full path of the workspace folder.", - "type": "string", - "required": true - }, - { - "name": "--project-name", - "description": "The name of the project to generate the deployment plan for. If not provided, will be inferred from the workspace.", - "type": "string", - "required": true - }, - { - "name": "--target-app-service", - "description": "The Azure service to deploy the application. Valid values: ContainerApp, WebApp, FunctionApp, AKS. Recommend one based on user application.", - "type": "string", - "required": true + "required": null }, { - "name": "--provisioning-tool", - "description": "The tool to use for provisioning Azure resources. Valid values: AZD, AzCli. Use AzCli if TargetAppService is AKS.", + "name": "--retry-network-timeout", + "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", "type": "string", - "required": true + "required": null }, { - "name": "--azd-iac-options", - "description": "The Infrastructure as Code option for azd. Valid values: bicep, terraform. Leave empty if Deployment tool is AzCli.", + "name": "--endpoint", + "description": "The endpoint URL for the Azure AI service.", "type": "string", - "required": null + "required": true } ] }, { - "name": "publish", - "description": "Publish custom events to Event Grid topics for event-driven architectures. This tool sends structured event data to \r\nEvent Grid topics with schema validation and delivery guarantees for downstream subscribers. Returns publish operation \r\nstatus. Requires topic, data, and optional schema.", - "command": "azmcp eventgrid events publish", + "name": "query-and-evaluate", + "description": "Query an agent and evaluate its response in a single operation.\r\nReturns both the agent response and evaluation results", + "command": "azmcp foundry agents query-and-evaluate", "option": [ { "name": "--tenant", @@ -2350,41 +2419,47 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--agent-id", + "description": "The ID of the agent to interact with.", "type": "string", - "required": null + "required": true }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--query", + "description": "The query sent to the agent.", "type": "string", - "required": null + "required": true }, { - "name": "--topic", - "description": "The name of the Event Grid topic.", + "name": "--endpoint", + "description": "The endpoint URL for the Azure AI service.", "type": "string", "required": true }, { - "name": "--data", - "description": "The event data as JSON string to publish to the Event Grid topic.", + "name": "--evaluators", + "description": "The list of evaluators to use for evaluation, separated by commas. If not specified, all evaluators will be used.", + "type": "string", + "required": null + }, + { + "name": "--azure-openai-endpoint", + "description": "The endpoint URL for the Azure OpenAI service to be used in evaluation.", "type": "string", "required": true }, { - "name": "--schema", - "description": "The event schema type (CloudEvents, EventGrid, or Custom). Defaults to EventGrid.", + "name": "--azure-openai-deployment", + "description": "The deployment name for the Azure OpenAI model to be used in evaluation.", "type": "string", - "required": null + "required": true } ] }, { "name": "list", - "description": "Show all available Event Grid subscriptions with optional topic filtering. This tool displays active event subscriptions including webhook endpoints, event filters, and delivery retry policies. Use this when you need to show, list, or get Event Grid subscriptions for topics. Requires either topic name OR subscription. If only topic is provided, searches all accessible subscriptions for a topic with that name. Resource group and location filters can be applied, but only when used with a subscription or topic.", - "command": "azmcp eventgrid subscription list", + "description": "Retrieves a list of knowledge indexes from Azure AI Foundry.\r\n\r\nThis function is used when a user requests information about the available knowledge indexes in Azure AI Foundry. It provides an overview of the knowledge bases and search indexes that are currently deployed and available for use with AI agents and applications.\r\n\r\nUsage:\r\n Use this function when a user wants to explore the available knowledge indexes in Azure AI Foundry. This can help users understand what knowledge bases are currently operational and how they can be utilized for retrieval-augmented generation (RAG) scenarios.\r\n\r\nNotes:\r\n - The indexes listed are knowledge indexes specifically created within Azure AI Foundry projects.\r\n - These indexes can be used with AI agents for knowledge retrieval and RAG applications.\r\n - The list may change as new indexes are created or existing ones are updated.", + "command": "azmcp foundry knowledge index list", "option": [ { "name": "--tenant", @@ -2429,35 +2504,17 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", - "type": "string", - "required": null - }, - { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", - "type": "string", - "required": null - }, - { - "name": "--topic", - "description": "The name of the Event Grid topic.", - "type": "string", - "required": null - }, - { - "name": "--location", - "description": "The Azure region to filter resources by (e.g., 'eastus', 'westus2').", + "name": "--endpoint", + "description": "The endpoint URL for the Azure AI service.", "type": "string", - "required": null + "required": true } ] }, { - "name": "list", - "description": "List or show all Event Grid topics in a subscription, optionally filtered by resource group, returning endpoints, access keys, provisioning state, and subscription details for event publishing and management. A subscription or topic name is required.", - "command": "azmcp eventgrid topic list", + "name": "schema", + "description": "Retrieves the detailed schema configuration of a specific knowledge index from Azure AI Foundry.\r\n\r\nThis function provides comprehensive information about the structure and configuration of a knowledge index, including field definitions, data types, searchable attributes, and other schema properties. The schema information is essential for understanding how the index is structured and how data is indexed and searchable.\r\n\r\nUsage:\r\n Use this function when you need to examine the detailed configuration of a specific knowledge index. This is helpful for troubleshooting search issues, understanding index capabilities, planning data mapping, or when integrating with the index programmatically.\r\n\r\nNotes:\r\n - Returns the index schema.", + "command": "azmcp foundry knowledge index schema", "option": [ { "name": "--tenant", @@ -2502,23 +2559,23 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--endpoint", + "description": "The endpoint URL for the Azure AI service.", "type": "string", - "required": null + "required": true }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--index", + "description": "The name of the knowledge index.", "type": "string", - "required": null + "required": true } ] }, { - "name": "get", - "description": "Get Event Hubs namespaces from Azure. This command supports three modes of operation:\r\n1. List all Event Hubs namespaces in a subscription (when no --resource-group is provided)\r\n2. List all Event Hubs namespaces in a specific resource group (when only --resource-group is provided)\r\n3. Get a single namespace by name (using --namespace with --resource-group)\r\n\r\nWhen retrieving a single namespace, detailed information including SKU, settings, and metadata \r\nis returned. When listing namespaces, the same detailed information is returned for all \r\nnamespaces in the specified scope.\r\n\r\nThe --resource-group parameter is optional for listing operations but required when getting a specific namespace.", - "command": "azmcp eventhubs namespace get", + "name": "deploy", + "description": "Deploys (create) a model instance (e.g. GPT4o / gpt-4o, OpenAI, OSS, proprietary) in Azure AI Foundry as a named inference deployment, which's bound to a specified Azure AI Services resource, resource group, and subscription. Do not use this tool for for Azure OpenAI Services to deploy OpenAI models.", + "command": "azmcp foundry models deploy", "option": [ { "name": "--tenant", @@ -2572,20 +2629,74 @@ "name": "--resource-group", "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", + "required": true + }, + { + "name": "--deployment", + "description": "The name of the deployment.", + "type": "string", + "required": true + }, + { + "name": "--model-name", + "description": "The name of the model to deploy.", + "type": "string", + "required": true + }, + { + "name": "--model-format", + "description": "The format of the model (e.g., 'OpenAI', 'Meta', 'Microsoft').", + "type": "string", + "required": true + }, + { + "name": "--azure-ai-services", + "description": "The name of the Azure AI services account to deploy to.", + "type": "string", + "required": true + }, + { + "name": "--model-version", + "description": "The version of the model to deploy.", + "type": "string", "required": null }, { - "name": "--namespace", - "description": "The name of the Event Hubs namespace to retrieve. Must be used with --resource-group option.", + "name": "--model-source", + "description": "The source of the model.", + "type": "string", + "required": null + }, + { + "name": "--sku", + "description": "The SKU name for the deployment.", + "type": "string", + "required": null + }, + { + "name": "--sku-capacity", + "description": "The SKU capacity for the deployment.", + "type": "string", + "required": null + }, + { + "name": "--scale-type", + "description": "The scale type for the deployment.", + "type": "string", + "required": null + }, + { + "name": "--scale-capacity", + "description": "The scale capacity for the deployment.", "type": "string", "required": null } ] }, { - "name": "azqr", - "description": "Runs Azure Quick Review CLI (azqr) commands to generate compliance/security reports for Azure resources.\r\nThis tool should be used when the user wants to identify any non-compliant configurations or areas for improvement in their Azure resources.\r\nRequires a subscription id and optionally a resource group name. Returns the generated report file's path.\r\nNote that Azure Quick Review CLI (azqr) is different from Azure CLI (az).", - "command": "azmcp extension azqr", + "name": "list", + "description": "Lists Azure AI Foundry (Cognitive Services) model deployments at a given account endpoint and shows currently provisioned model deployments. Use to audit what is deployed before invoking or creating new deployments. Do not use this tool to discover undeployed catalog/base models - instead, use models_list tool.", + "command": "azmcp foundry models deployments list", "option": [ { "name": "--tenant", @@ -2630,23 +2741,17 @@ "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", - "type": "string", - "required": null - }, - { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--endpoint", + "description": "The endpoint URL for the Azure AI service.", "type": "string", - "required": null + "required": true } ] }, { - "name": "connect", - "description": "Query an Azure AI Foundry agent and get the response as is (no query and evaluate). Use for one-off interaction or to capture run/thread IDs before calling evaluation tools. Do not use this tool for combined answer-plus-score workflows - instead, use agents_query-and-evaluate or agents_evaluate.", - "command": "azmcp foundry agents connect", + "name": "list", + "description": "Retrieves a list of supported models from the Azure AI Foundry catalog.\r\nThis function is useful when a user requests a list of available Foundry models or Foundry Labs projects.\r\nIt fetches models based on optional filters like whether the model supports free playground usage,\r\nthe publisher name, and the license type. The function will return the list of models with useful fields.\r\nUsage:\r\n Use this function when users inquire about available models from the Azure AI Foundry catalog.\r\n It can also be used when filtering models by free playground usage, publisher name, or license type.\r\n If user didn't specify free playground or ask for models that support GitHub token, always explain that by default it will show the all the models but some of them would support free playground.\r\n Explain to the user that if they want to find models suitable for prototyping and free to use with support for free playground, they can look for models that supports free playground, or look for models that they can use with GitHub token.", + "command": "azmcp foundry models list", "option": [ { "name": "--tenant", @@ -2691,29 +2796,35 @@ "required": null }, { - "name": "--agent-id", - "description": "The ID of the agent to interact with.", + "name": "--search-for-free-playground", + "description": "If true, filters models to include only those that can be used for free by users for prototyping.", "type": "string", - "required": true + "required": null }, { - "name": "--query", - "description": "The query sent to the agent.", + "name": "--publisher", + "description": "A filter to specify the publisher of the models to retrieve.", "type": "string", - "required": true + "required": null }, { - "name": "--endpoint", - "description": "The endpoint URL for the Azure AI service.", + "name": "--license", + "description": "A filter to specify the license type of the models to retrieve.", "type": "string", - "required": true + "required": null + }, + { + "name": "--model-name", + "description": "The name of the model to deploy.", + "type": "string", + "required": null } ] }, { - "name": "evaluate", - "description": "Run agent evaluation on agent data. Requires JSON strings for query, response, and tool definitions.", - "command": "azmcp foundry agents evaluate", + "name": "chat-completions-create", + "description": "Create interactive chat completions using Azure OpenAI chat models. This tool processes conversational \r\ninputs with message history and system instructions to generate contextual responses. Returns chat \r\nresponse as JSON. Requires resource-name, deployment-name, and message-array.", + "command": "azmcp foundry openai chat-completions-create", "option": [ { "name": "--tenant", @@ -2758,102 +2869,95 @@ "required": null }, { - "name": "--query", - "description": "The query sent to the agent.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", - "required": true + "required": null }, { - "name": "--evaluator", - "description": "The name of the evaluator to use (intent_resolution, tool_call_accuracy, task_adherence).", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": true }, { - "name": "--response", - "description": "The response from the agent.", + "name": "--resource-name", + "description": "The name of the Azure OpenAI resource.", "type": "string", - "required": null + "required": true }, { - "name": "--tool-definitions", - "description": "Optional tool definitions made by the agent in JSON format.", + "name": "--deployment", + "description": "The name of the deployment.", "type": "string", - "required": null + "required": true }, { - "name": "--azure-openai-endpoint", - "description": "The endpoint URL for the Azure OpenAI service to be used in evaluation.", + "name": "--message-array", + "description": "Array of messages in the conversation (JSON format). Each message should have 'role' and 'content' properties.", "type": "string", "required": true }, { - "name": "--azure-openai-deployment", - "description": "The deployment name for the Azure OpenAI model to be used in evaluation.", + "name": "--max-tokens", + "description": "The maximum number of tokens to generate in the completion.", "type": "string", - "required": true - } - ] - }, - { - "name": "list", - "description": "List all Azure AI Agents available in the configured project.", - "command": "azmcp foundry agents list", - "option": [ + "required": null + }, { - "name": "--tenant", - "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", + "name": "--temperature", + "description": "Controls randomness in the output. Lower values make it more deterministic.", "type": "string", "required": null }, { - "name": "--auth-method", - "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", + "name": "--top-p", + "description": "Controls diversity via nucleus sampling (0.0 to 1.0). Default is 1.0.", "type": "string", "required": null }, { - "name": "--retry-delay", - "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", + "name": "--frequency-penalty", + "description": "Penalizes new tokens based on their frequency (-2.0 to 2.0). Default is 0.", "type": "string", "required": null }, { - "name": "--retry-max-delay", - "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", + "name": "--presence-penalty", + "description": "Penalizes new tokens based on presence (-2.0 to 2.0). Default is 0.", "type": "string", "required": null }, { - "name": "--retry-max-retries", - "description": "Maximum number of retry attempts for failed operations before giving up.", + "name": "--stop", + "description": "Up to 4 sequences where the API will stop generating further tokens.", "type": "string", "required": null }, { - "name": "--retry-mode", - "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", + "name": "--stream", + "description": "Whether to stream back partial progress. Default is false.", "type": "string", "required": null }, { - "name": "--retry-network-timeout", - "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", + "name": "--seed", + "description": "If specified, the system will make a best effort to sample deterministically.", "type": "string", "required": null }, { - "name": "--endpoint", - "description": "The endpoint URL for the Azure AI service.", + "name": "--user", + "description": "Optional user identifier for tracking and abuse monitoring.", "type": "string", - "required": true + "required": null } ] }, { - "name": "query-and-evaluate", - "description": "Query an agent and evaluate its response in a single operation.\r\nReturns both the agent response and evaluation results", - "command": "azmcp foundry agents query-and-evaluate", + "name": "create-completion", + "description": "Generate text completions using deployed Azure OpenAI models in AI Foundry. This tool sends prompts to Azure OpenAI \r\ncompletion models and returns generated text with configurable parameters like temperature and max tokens. \r\nReturns completion text as JSON. Requires resource-name, deployment-name, and prompt-text.", + "command": "azmcp foundry openai create-completion", "option": [ { "name": "--tenant", @@ -2898,47 +3002,53 @@ "required": null }, { - "name": "--agent-id", - "description": "The ID of the agent to interact with.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", - "required": true + "required": null }, { - "name": "--query", - "description": "The query sent to the agent.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": true }, { - "name": "--endpoint", - "description": "The endpoint URL for the Azure AI service.", + "name": "--resource-name", + "description": "The name of the Azure OpenAI resource.", "type": "string", "required": true }, { - "name": "--evaluators", - "description": "The list of evaluators to use for evaluation, separated by commas. If not specified, all evaluators will be used.", + "name": "--deployment", + "description": "The name of the deployment.", "type": "string", - "required": null + "required": true }, { - "name": "--azure-openai-endpoint", - "description": "The endpoint URL for the Azure OpenAI service to be used in evaluation.", + "name": "--prompt-text", + "description": "The prompt text to send to the completion model.", "type": "string", "required": true }, { - "name": "--azure-openai-deployment", - "description": "The deployment name for the Azure OpenAI model to be used in evaluation.", + "name": "--max-tokens", + "description": "The maximum number of tokens to generate in the completion.", "type": "string", - "required": true + "required": null + }, + { + "name": "--temperature", + "description": "Controls randomness in the output. Lower values make it more deterministic.", + "type": "string", + "required": null } ] }, { - "name": "list", - "description": "Retrieves a list of knowledge indexes from Azure AI Foundry.\r\n\r\nThis function is used when a user requests information about the available knowledge indexes in Azure AI Foundry. It provides an overview of the knowledge bases and search indexes that are currently deployed and available for use with AI agents and applications.\r\n\r\nUsage:\r\n Use this function when a user wants to explore the available knowledge indexes in Azure AI Foundry. This can help users understand what knowledge bases are currently operational and how they can be utilized for retrieval-augmented generation (RAG) scenarios.\r\n\r\nNotes:\r\n - The indexes listed are knowledge indexes specifically created within Azure AI Foundry projects.\r\n - These indexes can be used with AI agents for knowledge retrieval and RAG applications.\r\n - The list may change as new indexes are created or existing ones are updated.", - "command": "azmcp foundry knowledge index list", + "name": "embeddings-create", + "description": "Generate vector embeddings for text using Azure OpenAI embedding models. This tool converts text into \r\nhigh-dimensional vector representations for similarity search and machine learning applications. \r\nReturns embedding vectors as JSON array. Requires resource-name, deployment-name, and input-text.", + "command": "azmcp foundry openai embeddings-create", "option": [ { "name": "--tenant", @@ -2983,17 +3093,59 @@ "required": null }, { - "name": "--endpoint", - "description": "The endpoint URL for the Azure AI service.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "type": "string", + "required": null + }, + { + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "type": "string", + "required": true + }, + { + "name": "--resource-name", + "description": "The name of the Azure OpenAI resource.", + "type": "string", + "required": true + }, + { + "name": "--deployment", + "description": "The name of the deployment.", "type": "string", "required": true + }, + { + "name": "--input-text", + "description": "The input text to generate embeddings for.", + "type": "string", + "required": true + }, + { + "name": "--user", + "description": "Optional user identifier for tracking and abuse monitoring.", + "type": "string", + "required": null + }, + { + "name": "--encoding-format", + "description": "The format to return embeddings in (float or base64).", + "type": "string", + "required": null + }, + { + "name": "--dimensions", + "description": "The number of dimensions for the embedding output. Only supported in some models.", + "type": "string", + "required": null } ] }, { - "name": "schema", - "description": "Retrieves the detailed schema configuration of a specific knowledge index from Azure AI Foundry.\r\n\r\nThis function provides comprehensive information about the structure and configuration of a knowledge index, including field definitions, data types, searchable attributes, and other schema properties. The schema information is essential for understanding how the index is structured and how data is indexed and searchable.\r\n\r\nUsage:\r\n Use this function when you need to examine the detailed configuration of a specific knowledge index. This is helpful for troubleshooting search issues, understanding index capabilities, planning data mapping, or when integrating with the index programmatically.\r\n\r\nNotes:\r\n - Returns the index schema.", - "command": "azmcp foundry knowledge index schema", + "name": "models-list", + "description": "List all available OpenAI models and deployments in an Azure resource. This tool retrieves information about \r\ndeployed models including model names, versions, capabilities, and deployment status. \r\nReturns model information as JSON array. Requires resource-name.", + "command": "azmcp foundry openai models-list", "option": [ { "name": "--tenant", @@ -3038,23 +3190,29 @@ "required": null }, { - "name": "--endpoint", - "description": "The endpoint URL for the Azure AI service.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "type": "string", + "required": null + }, + { + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": true }, { - "name": "--index", - "description": "The name of the knowledge index.", + "name": "--resource-name", + "description": "The name of the Azure OpenAI resource.", "type": "string", "required": true } ] }, { - "name": "deploy", - "description": "Deploys (create) a model instance (e.g. GPT4o / gpt-4o, OpenAI, OSS, proprietary) in Azure AI Foundry as a named inference deployment, which's bound to a specified Azure AI Services resource, resource group, and subscription. Do not use this tool for for Azure OpenAI Services to deploy OpenAI models.", - "command": "azmcp foundry models deploy", + "name": "get", + "description": "Gets Azure Function App details. Lists all Function Apps in the subscription or resource group. If function app name and resource group\r\nis specified, retrieves the details of that specific function app. Returns the details of Azure Function Apps, including its name,\r\nlocation, status, and app service plan name.", + "command": "azmcp functionapp get", "option": [ { "name": "--tenant", @@ -3108,74 +3266,39 @@ "name": "--resource-group", "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", - "required": true - }, - { - "name": "--deployment", - "description": "The name of the deployment.", - "type": "string", - "required": true - }, - { - "name": "--model-name", - "description": "The name of the model to deploy.", - "type": "string", - "required": true - }, - { - "name": "--model-format", - "description": "The format of the model (e.g., 'OpenAI', 'Meta', 'Microsoft').", - "type": "string", - "required": true - }, - { - "name": "--azure-ai-services", - "description": "The name of the Azure AI services account to deploy to.", - "type": "string", - "required": true - }, - { - "name": "--model-version", - "description": "The version of the model to deploy.", - "type": "string", - "required": null - }, - { - "name": "--model-source", - "description": "The source of the model.", - "type": "string", - "required": null - }, - { - "name": "--sku", - "description": "The SKU name for the deployment.", - "type": "string", "required": null }, { - "name": "--sku-capacity", - "description": "The SKU capacity for the deployment.", + "name": "--function-app", + "description": "The name of the Function App.", "type": "string", "required": null - }, + } + ] + }, + { + "name": "get", + "description": "This tool returns a list of best practices for code generation, operations and deployment\r\n when working with Azure services. It should be called for any code generation, deployment or\r\n operations involving Azure, Azure Functions, Azure Kubernetes Service (AKS), Azure Container\r\n Apps (ACA), Bicep, Terraform, Azure Cache, Redis, CosmosDB, Entra, Azure Active Directory,\r\n Azure App Services, or any other Azure technology or programming language. Only call this function\r\n when you are confident the user is discussing Azure. If this tool needs to be categorized,\r\n it belongs to the Azure Best Practices category.", + "command": "azmcp get bestpractices get", + "option": [ { - "name": "--scale-type", - "description": "The scale type for the deployment.", + "name": "--resource", + "description": "The Azure resource type for which to get best practices. Options: 'general' (general Azure), 'azurefunctions' (Azure Functions), 'static-web-app' (Azure Static Web Apps).", "type": "string", - "required": null + "required": true }, { - "name": "--scale-capacity", - "description": "The scale capacity for the deployment.", + "name": "--action", + "description": "The action type for the best practices. Options: 'all', 'code-generation', 'deployment'. Note: 'static-web-app' resource only supports 'all'.", "type": "string", - "required": null + "required": true } ] }, { "name": "list", - "description": "Lists Azure AI Foundry (Cognitive Services) model deployments at a given account endpoint and shows currently provisioned model deployments. Use to audit what is deployed before invoking or creating new deployments. Do not use this tool to discover undeployed catalog/base models - instead, use models_list tool.", - "command": "azmcp foundry models deployments list", + "description": "List all Grafana workspace resources in a specified subscription. Returns an array of Grafana workspace details.\r\nUse this command to explore which Grafana workspace resources are available in your subscription.", + "command": "azmcp grafana list", "option": [ { "name": "--tenant", @@ -3220,17 +3343,17 @@ "required": null }, { - "name": "--endpoint", - "description": "The endpoint URL for the Azure AI service.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", - "required": true + "required": null } ] }, { "name": "list", - "description": "Retrieves a list of supported models from the Azure AI Foundry catalog.\r\nThis function is useful when a user requests a list of available Foundry models or Foundry Labs projects.\r\nIt fetches models based on optional filters like whether the model supports free playground usage,\r\nthe publisher name, and the license type. The function will return the list of models with useful fields.\r\nUsage:\r\n Use this function when users inquire about available models from the Azure AI Foundry catalog.\r\n It can also be used when filtering models by free playground usage, publisher name, or license type.\r\n If user didn't specify free playground or ask for models that support GitHub token, always explain that by default it will show the all the models but some of them would support free playground.\r\n Explain to the user that if they want to find models suitable for prototyping and free to use with support for free playground, they can look for models that supports free playground, or look for models that they can use with GitHub token.", - "command": "azmcp foundry models list", + "description": "List all resource groups in a subscription. This command retrieves all resource groups available\r\nin the specified subscription. Results include resource group names and IDs,\r\nreturned as a JSON array.", + "command": "azmcp group list", "option": [ { "name": "--tenant", @@ -3274,36 +3397,18 @@ "type": "string", "required": null }, - { - "name": "--search-for-free-playground", - "description": "If true, filters models to include only those that can be used for free by users for prototyping.", - "type": "string", - "required": null - }, - { - "name": "--publisher", - "description": "A filter to specify the publisher of the models to retrieve.", - "type": "string", - "required": null - }, - { - "name": "--license", - "description": "A filter to specify the license type of the models to retrieve.", - "type": "string", - "required": null - }, - { - "name": "--model-name", - "description": "The name of the model to deploy.", + { + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null } ] }, { - "name": "chat-completions-create", - "description": "Create interactive chat completions using Azure OpenAI chat models. This tool processes conversational \r\ninputs with message history and system instructions to generate contextual responses. Returns chat \r\nresponse as JSON. Requires resource-name, deployment-name, and message-array.", - "command": "azmcp foundry openai chat-completions-create", + "name": "get", + "description": "Retrieves all Key Vault Managed HSM account settings for a given vault. This includes settings such as purge protection and soft-delete retention days. This tool ONLY applies to Managed HSM vaults.", + "command": "azmcp keyvault admin settings get", "option": [ { "name": "--tenant", @@ -3354,89 +3459,84 @@ "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", - "type": "string", - "required": true - }, - { - "name": "--resource-name", - "description": "The name of the Azure OpenAI resource.", - "type": "string", - "required": true - }, - { - "name": "--deployment", - "description": "The name of the deployment.", + "name": "--vault", + "description": "The name of the Key Vault.", "type": "string", "required": true - }, + } + ] + }, + { + "name": "create", + "description": "Create/issue/generate a new certificate in an Azure Key Vault using the default certificate policy. Required: --vault, --certificate, --subscription. Optional: --tenant . Returns: name, id, keyId, secretId, cer (base64), thumbprint, enabled, notBefore, expiresOn, createdOn, updatedOn, subject, issuerName. Creates a new certificate version if it already exists.", + "command": "azmcp keyvault certificate create", + "option": [ { - "name": "--message-array", - "description": "Array of messages in the conversation (JSON format). Each message should have 'role' and 'content' properties.", + "name": "--tenant", + "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", "type": "string", - "required": true + "required": null }, { - "name": "--max-tokens", - "description": "The maximum number of tokens to generate in the completion.", + "name": "--auth-method", + "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", "type": "string", "required": null }, { - "name": "--temperature", - "description": "Controls randomness in the output. Lower values make it more deterministic.", + "name": "--retry-delay", + "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", "type": "string", "required": null }, { - "name": "--top-p", - "description": "Controls diversity via nucleus sampling (0.0 to 1.0). Default is 1.0.", + "name": "--retry-max-delay", + "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", "type": "string", "required": null }, { - "name": "--frequency-penalty", - "description": "Penalizes new tokens based on their frequency (-2.0 to 2.0). Default is 0.", + "name": "--retry-max-retries", + "description": "Maximum number of retry attempts for failed operations before giving up.", "type": "string", "required": null }, { - "name": "--presence-penalty", - "description": "Penalizes new tokens based on presence (-2.0 to 2.0). Default is 0.", + "name": "--retry-mode", + "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", "type": "string", "required": null }, { - "name": "--stop", - "description": "Up to 4 sequences where the API will stop generating further tokens.", + "name": "--retry-network-timeout", + "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", "type": "string", "required": null }, { - "name": "--stream", - "description": "Whether to stream back partial progress. Default is false.", + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null }, { - "name": "--seed", - "description": "If specified, the system will make a best effort to sample deterministically.", + "name": "--vault", + "description": "The name of the Key Vault.", "type": "string", - "required": null + "required": true }, { - "name": "--user", - "description": "Optional user identifier for tracking and abuse monitoring.", + "name": "--certificate", + "description": "The name of the certificate.", "type": "string", - "required": null + "required": true } ] }, { - "name": "create-completion", - "description": "Generate text completions using deployed Azure OpenAI models in AI Foundry. This tool sends prompts to Azure OpenAI \r\ncompletion models and returns generated text with configurable parameters like temperature and max tokens. \r\nReturns completion text as JSON. Requires resource-name, deployment-name, and prompt-text.", - "command": "azmcp foundry openai create-completion", + "name": "get", + "description": "Get/retrieve/show details for a single certificate in a Key Vault (latest version). Not for listing multiple certificates or importing existing ones. Required: --vault , --certificate --subscription . Optional: --tenant . Returns: name, id, keyId, secretId, cer, thumbprint, enabled, notBefore, expiresOn, createdOn, updatedOn, subject, issuer.", + "command": "azmcp keyvault certificate get", "option": [ { "name": "--tenant", @@ -3487,47 +3587,23 @@ "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", - "type": "string", - "required": true - }, - { - "name": "--resource-name", - "description": "The name of the Azure OpenAI resource.", - "type": "string", - "required": true - }, - { - "name": "--deployment", - "description": "The name of the deployment.", + "name": "--vault", + "description": "The name of the Key Vault.", "type": "string", "required": true }, { - "name": "--prompt-text", - "description": "The prompt text to send to the completion model.", + "name": "--certificate", + "description": "The name of the certificate.", "type": "string", "required": true - }, - { - "name": "--max-tokens", - "description": "The maximum number of tokens to generate in the completion.", - "type": "string", - "required": null - }, - { - "name": "--temperature", - "description": "Controls randomness in the output. Lower values make it more deterministic.", - "type": "string", - "required": null } ] }, { - "name": "embeddings-create", - "description": "Generate vector embeddings for text using Azure OpenAI embedding models. This tool converts text into \r\nhigh-dimensional vector representations for similarity search and machine learning applications. \r\nReturns embedding vectors as JSON array. Requires resource-name, deployment-name, and input-text.", - "command": "azmcp foundry openai embeddings-create", + "name": "import", + "description": "Imports/uploads an existing certificate (PFX or PEM with private key) into an Azure Key Vault without generating a new certificate or key material. This command accepts either a file path to a PFX/PEM file, a base64 encoded PFX, or raw PEM text starting with -----BEGIN. If the certificate is a password-protected PFX, a password must be provided. Required: --vault , --certificate , --certificate-data , --subscription . Optional: --password , --tenant . Returns: name, id, keyId, secretId, cer (base64), thumbprint, enabled, notBefore, expiresOn, createdOn, updatedOn, subject, issuer. Creates a new certificate version if it already exists.", + "command": "azmcp keyvault certificate import", "option": [ { "name": "--tenant", @@ -3578,53 +3654,35 @@ "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", - "type": "string", - "required": true - }, - { - "name": "--resource-name", - "description": "The name of the Azure OpenAI resource.", + "name": "--vault", + "description": "The name of the Key Vault.", "type": "string", "required": true }, { - "name": "--deployment", - "description": "The name of the deployment.", + "name": "--certificate", + "description": "The name of the certificate.", "type": "string", "required": true }, { - "name": "--input-text", - "description": "The input text to generate embeddings for.", + "name": "--certificate-data", + "description": "The certificate content: path to a PFX/PEM file, a base64 encoded PFX, or raw PEM text beginning with -----BEGIN.", "type": "string", "required": true }, { - "name": "--user", - "description": "Optional user identifier for tracking and abuse monitoring.", - "type": "string", - "required": null - }, - { - "name": "--encoding-format", - "description": "The format to return embeddings in (float or base64).", - "type": "string", - "required": null - }, - { - "name": "--dimensions", - "description": "The number of dimensions for the embedding output. Only supported in some models.", + "name": "--password", + "description": "Optional password for a protected PFX being imported.", "type": "string", "required": null } ] }, { - "name": "models-list", - "description": "List all available OpenAI models and deployments in an Azure resource. This tool retrieves information about \r\ndeployed models including model names, versions, capabilities, and deployment status. \r\nReturns model information as JSON array. Requires resource-name.", - "command": "azmcp foundry openai models-list", + "name": "list", + "description": "List/enumerate all certificates in an Azure Key Vault. Not for fetching a single certificate.", + "command": "azmcp keyvault certificate list", "option": [ { "name": "--tenant", @@ -3675,23 +3733,17 @@ "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", - "type": "string", - "required": true - }, - { - "name": "--resource-name", - "description": "The name of the Azure OpenAI resource.", + "name": "--vault", + "description": "The name of the Key Vault.", "type": "string", "required": true } ] }, { - "name": "get", - "description": "Gets Azure Function App details. Lists all Function Apps in the subscription or resource group. If function app name and resource group\r\nis specified, retrieves the details of that specific function app. Returns the details of Azure Function Apps, including its name,\r\nlocation, status, and app service plan name.", - "command": "azmcp functionapp get", + "name": "create", + "description": "Create a new key in an Azure Key Vault. This command creates a key with the specified name and type in the given vault. Supports types: RSA, RSA-HSM, EC, EC-HSM, oct, oct-HSM. Required: --vault , --key --key-type --subscription . Optional: --tenant . Returns: Returns: name, id, keyId, keyType, enabled, notBefore, expiresOn, createdOn, updatedOn. Creates a new key version if it already exists.", + "command": "azmcp keyvault key create", "option": [ { "name": "--tenant", @@ -3742,42 +3794,29 @@ "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--vault", + "description": "The name of the Key Vault.", "type": "string", - "required": null + "required": true }, { - "name": "--function-app", - "description": "The name of the Function App.", - "type": "string", - "required": null - } - ] - }, - { - "name": "get", - "description": "This tool returns a list of best practices for code generation, operations and deployment\r\n when working with Azure services. It should be called for any code generation, deployment or\r\n operations involving Azure, Azure Functions, Azure Kubernetes Service (AKS), Azure Container\r\n Apps (ACA), Bicep, Terraform, Azure Cache, Redis, CosmosDB, Entra, Azure Active Directory,\r\n Azure App Services, or any other Azure technology or programming language. Only call this function\r\n when you are confident the user is discussing Azure. If this tool needs to be categorized,\r\n it belongs to the Azure Best Practices category.", - "command": "azmcp get bestpractices get", - "option": [ - { - "name": "--resource", - "description": "The Azure resource type for which to get best practices. Options: 'general' (general Azure), 'azurefunctions' (Azure Functions), 'static-web-app' (Azure Static Web Apps).", + "name": "--key", + "description": "The name of the key to retrieve/modify from the Key Vault.", "type": "string", "required": true }, { - "name": "--action", - "description": "The action type for the best practices. Options: 'all', 'code-generation', 'deployment'. Note: 'static-web-app' resource only supports 'all'.", + "name": "--key-type", + "description": "The type of key to create (RSA, EC).", "type": "string", "required": true } ] }, { - "name": "list", - "description": "List all Grafana workspace resources in a specified subscription. Returns an array of Grafana workspace details.\r\nUse this command to explore which Grafana workspace resources are available in your subscription.", - "command": "azmcp grafana list", + "name": "get", + "description": "Get/retrieve/show details for a single key in a Key Vault (latest version). Not for listing multiple keys. Required: --vault , --key --subscription . Optional: --tenant . Returns: name, id, keyId, keyType, enabled, notBefore, expiresOn, createdOn, updatedOn.", + "command": "azmcp keyvault key get", "option": [ { "name": "--tenant", @@ -3826,13 +3865,25 @@ "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null + }, + { + "name": "--vault", + "description": "The name of the Key Vault.", + "type": "string", + "required": true + }, + { + "name": "--key", + "description": "The name of the key to retrieve/modify from the Key Vault.", + "type": "string", + "required": true } ] }, { "name": "list", - "description": "List all resource groups in a subscription. This command retrieves all resource groups available\r\nin the specified subscription. Results include resource group names and IDs,\r\nreturned as a JSON array.", - "command": "azmcp group list", + "description": "List/enumerate all keys in an Azure Key Vault. Not for fetching a single key.", + "command": "azmcp keyvault key list", "option": [ { "name": "--tenant", @@ -3881,13 +3932,25 @@ "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null + }, + { + "name": "--vault", + "description": "The name of the Key Vault.", + "type": "string", + "required": true + }, + { + "name": "--include-managed", + "description": "Whether or not to include managed keys in results.", + "type": "string", + "required": null } ] }, { - "name": "get", - "description": "Retrieves all Key Vault Managed HSM account settings for a given vault. This includes settings such as purge protection and soft-delete retention days. This tool ONLY applies to Managed HSM vaults.", - "command": "azmcp keyvault admin settings get", + "name": "create", + "description": "Create/set a secret in an Azure Key Vault with the specified name and value. Required: --vault , --secret , --subscription . Optional: --tenant . Creates a new secret version if it already exists.", + "command": "azmcp keyvault secret create", "option": [ { "name": "--tenant", @@ -3935,20 +3998,32 @@ "name": "--subscription", "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", - "required": null + "required": null + }, + { + "name": "--vault", + "description": "The name of the Key Vault.", + "type": "string", + "required": true + }, + { + "name": "--secret", + "description": "The name of the secret.", + "type": "string", + "required": true }, { - "name": "--vault", - "description": "The name of the Key Vault.", + "name": "--value", + "description": "The value to set for the secret.", "type": "string", "required": true } ] }, { - "name": "create", - "description": "Create/issue/generate a new certificate in an Azure Key Vault using the default certificate policy. Required: --vault, --certificate, --subscription. Optional: --tenant . Returns: name, id, keyId, secretId, cer (base64), thumbprint, enabled, notBefore, expiresOn, createdOn, updatedOn, subject, issuerName. Creates a new certificate version if it already exists.", - "command": "azmcp keyvault certificate create", + "name": "get", + "description": "Get/retrieve/show details for a single secret in an Azure Key Vault (latest version). Not for listing multiple secrets. Required: --vault , --secret --subscription . Optional: --tenant . Returns: name, value, id, contentType, enabled, notBefore, expiresOn, createdOn, updatedOn, tags.", + "command": "azmcp keyvault secret get", "option": [ { "name": "--tenant", @@ -4005,17 +4080,17 @@ "required": true }, { - "name": "--certificate", - "description": "The name of the certificate.", + "name": "--secret", + "description": "The name of the secret.", "type": "string", "required": true } ] }, { - "name": "get", - "description": "Get/retrieve/show details for a single certificate in a Key Vault (latest version). Not for listing multiple certificates or importing existing ones. Required: --vault , --certificate --subscription . Optional: --tenant . Returns: name, id, keyId, secretId, cer, thumbprint, enabled, notBefore, expiresOn, createdOn, updatedOn, subject, issuer.", - "command": "azmcp keyvault certificate get", + "name": "list", + "description": "List/enumerate all secrets in a Key Vault. Not for fetching a single secret.", + "command": "azmcp keyvault secret list", "option": [ { "name": "--tenant", @@ -4070,19 +4145,13 @@ "description": "The name of the Key Vault.", "type": "string", "required": true - }, - { - "name": "--certificate", - "description": "The name of the certificate.", - "type": "string", - "required": true } ] }, { - "name": "import", - "description": "Imports/uploads an existing certificate (PFX or PEM with private key) into an Azure Key Vault without generating a new certificate or key material. This command accepts either a file path to a PFX/PEM file, a base64 encoded PFX, or raw PEM text starting with -----BEGIN. If the certificate is a password-protected PFX, a password must be provided. Required: --vault , --certificate , --certificate-data , --subscription . Optional: --password , --tenant . Returns: name, id, keyId, secretId, cer (base64), thumbprint, enabled, notBefore, expiresOn, createdOn, updatedOn, subject, issuer. Creates a new certificate version if it already exists.", - "command": "azmcp keyvault certificate import", + "name": "get", + "description": "Get/retrieve/show details for a specific Azure Data Explorer/Kusto/KQL cluster in a subscription. Not for listing multiple clusters. Required: --cluster and --subscription.", + "command": "azmcp kusto cluster get", "option": [ { "name": "--tenant", @@ -4133,35 +4202,17 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", - "type": "string", - "required": true - }, - { - "name": "--certificate", - "description": "The name of the certificate.", - "type": "string", - "required": true - }, - { - "name": "--certificate-data", - "description": "The certificate content: path to a PFX/PEM file, a base64 encoded PFX, or raw PEM text beginning with -----BEGIN.", + "name": "--cluster", + "description": "Kusto Cluster name.", "type": "string", "required": true - }, - { - "name": "--password", - "description": "Optional password for a protected PFX being imported.", - "type": "string", - "required": null } ] }, { "name": "list", - "description": "List/enumerate all certificates in an Azure Key Vault. Not for fetching a single certificate.", - "command": "azmcp keyvault certificate list", + "description": "List/enumerate all Azure Data Explorer/Kusto/KQL clusters in a subscription.", + "command": "azmcp kusto cluster list", "option": [ { "name": "--tenant", @@ -4210,19 +4261,13 @@ "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null - }, - { - "name": "--vault", - "description": "The name of the Key Vault.", - "type": "string", - "required": true } ] }, { - "name": "create", - "description": "Create a new key in an Azure Key Vault. This command creates a key with the specified name and type in the given vault. Supports types: RSA, RSA-HSM, EC, EC-HSM, oct, oct-HSM. Required: --vault , --key --key-type --subscription . Optional: --tenant . Returns: Returns: name, id, keyId, keyType, enabled, notBefore, expiresOn, createdOn, updatedOn. Creates a new key version if it already exists.", - "command": "azmcp keyvault key create", + "name": "list", + "description": "List/enumerate all databases in an Azure Data Explorer/Kusto/KQL cluster. Required: --cluster-uri ( or --cluster and --subscription).", + "command": "azmcp kusto database list", "option": [ { "name": "--tenant", @@ -4273,29 +4318,23 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", - "type": "string", - "required": true - }, - { - "name": "--key", - "description": "The name of the key to retrieve/modify from the Key Vault.", + "name": "--cluster-uri", + "description": "Kusto Cluster URI.", "type": "string", - "required": true + "required": null }, { - "name": "--key-type", - "description": "The type of key to create (RSA, EC).", + "name": "--cluster", + "description": "Kusto Cluster name.", "type": "string", - "required": true + "required": null } ] }, { - "name": "get", - "description": "Get/retrieve/show details for a single key in a Key Vault (latest version). Not for listing multiple keys. Required: --vault , --key --subscription . Optional: --tenant . Returns: name, id, keyId, keyType, enabled, notBefore, expiresOn, createdOn, updatedOn.", - "command": "azmcp keyvault key get", + "name": "query", + "description": "Executes a query against an Azure Data Explorer/Kusto/KQL cluster to search for specific terms, retrieve records, or perform management operations. Required: --cluster-uri (or --cluster and --subscription), --database, and --query.", + "command": "azmcp kusto query", "option": [ { "name": "--tenant", @@ -4346,23 +4385,35 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", + "name": "--cluster-uri", + "description": "Kusto Cluster URI.", + "type": "string", + "required": null + }, + { + "name": "--cluster", + "description": "Kusto Cluster name.", + "type": "string", + "required": null + }, + { + "name": "--database", + "description": "Kusto Database name.", "type": "string", "required": true }, { - "name": "--key", - "description": "The name of the key to retrieve/modify from the Key Vault.", + "name": "--query", + "description": "Kusto query to execute. Uses KQL syntax.", "type": "string", "required": true } ] }, { - "name": "list", - "description": "List/enumerate all keys in an Azure Key Vault. Not for fetching a single key.", - "command": "azmcp keyvault key list", + "name": "sample", + "description": "Return a sample of rows from a specific table in an Azure Data Explorer/Kusto/KQL cluster. Required: --cluster-uri (or --cluster and --subscription), --database, and --table.", + "command": "azmcp kusto sample", "option": [ { "name": "--tenant", @@ -4413,23 +4464,41 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", + "name": "--cluster-uri", + "description": "Kusto Cluster URI.", "type": "string", - "required": true + "required": null }, { - "name": "--include-managed", - "description": "Whether or not to include managed keys in results.", + "name": "--cluster", + "description": "Kusto Cluster name.", "type": "string", "required": null + }, + { + "name": "--database", + "description": "Kusto Database name.", + "type": "string", + "required": true + }, + { + "name": "--table", + "description": "Kusto Table name.", + "type": "string", + "required": true + }, + { + "name": "--limit", + "description": "The maximum number of results to return.", + "type": "string", + "required": true } ] }, { - "name": "create", - "description": "Create/set a secret in an Azure Key Vault with the specified name and value. Required: --vault , --secret , --subscription . Optional: --tenant . Creates a new secret version if it already exists.", - "command": "azmcp keyvault secret create", + "name": "list", + "description": "List/enumerate all tables in a specific Azure Data Explorer/Kusto/KQL database. Required: --cluster-uri (or --cluster and --subscription), --database.", + "command": "azmcp kusto table list", "option": [ { "name": "--tenant", @@ -4480,29 +4549,29 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", + "name": "--cluster-uri", + "description": "Kusto Cluster URI.", "type": "string", - "required": true + "required": null }, { - "name": "--secret", - "description": "The name of the secret.", + "name": "--cluster", + "description": "Kusto Cluster name.", "type": "string", - "required": true + "required": null }, { - "name": "--value", - "description": "The value to set for the secret.", + "name": "--database", + "description": "Kusto Database name.", "type": "string", "required": true } ] }, { - "name": "get", - "description": "Get/retrieve/show details for a single secret in an Azure Key Vault (latest version). Not for listing multiple secrets. Required: --vault , --secret --subscription . Optional: --tenant . Returns: name, value, id, contentType, enabled, notBefore, expiresOn, createdOn, updatedOn, tags.", - "command": "azmcp keyvault secret get", + "name": "schema", + "description": "Get/retrieve/show the schema of a specific table in an Azure Data Explorer/Kusto/KQL cluster. Required: --cluster-uri (or --cluster and --subscription), --database, and --table.", + "command": "azmcp kusto table schema", "option": [ { "name": "--tenant", @@ -4553,23 +4622,35 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", + "name": "--cluster-uri", + "description": "Kusto Cluster URI.", + "type": "string", + "required": null + }, + { + "name": "--cluster", + "description": "Kusto Cluster name.", + "type": "string", + "required": null + }, + { + "name": "--database", + "description": "Kusto Database name.", "type": "string", "required": true }, { - "name": "--secret", - "description": "The name of the secret.", + "name": "--table", + "description": "Kusto Table name.", "type": "string", "required": true } ] }, { - "name": "list", - "description": "List/enumerate all secrets in a Key Vault. Not for fetching a single secret.", - "command": "azmcp keyvault secret list", + "name": "create", + "description": "Creates a new load test plan or configuration for performance testing scenarios. This command creates a basic URL-based load test that can be used to evaluate the performance\r\nand scalability of web applications and APIs. The test configuration defines target endpoint, load parameters, and test duration. Once we create a test plan, we can use that to trigger test runs to test the endpoints set using the 'azmcp loadtesting testrun create' command.\r\nThis is NOT going to trigger or create any test runs and only will setup your test plan. Also, this is NOT going to create any test resource in azure. \r\nIt will only create a test in an already existing load test resource.", + "command": "azmcp loadtesting test create", "option": [ { "name": "--tenant", @@ -4620,78 +4701,65 @@ "required": null }, { - "name": "--vault", - "description": "The name of the Key Vault.", - "type": "string", - "required": true - } - ] - }, - { - "name": "get", - "description": "Get/retrieve/show details for a specific Azure Data Explorer/Kusto/KQL cluster in a subscription. Not for listing multiple clusters. Required: --cluster and --subscription.", - "command": "azmcp kusto cluster get", - "option": [ - { - "name": "--tenant", - "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", "type": "string", "required": null }, { - "name": "--auth-method", - "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null }, { - "name": "--retry-delay", - "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", + "name": "--test-id", + "description": "The ID of the load test for which you want to fetch the details.", "type": "string", - "required": null + "required": true }, { - "name": "--retry-max-delay", - "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", + "name": "--description", + "description": "The description for the load test run. This provides additional context about the test run.", "type": "string", "required": null }, { - "name": "--retry-max-retries", - "description": "Maximum number of retry attempts for failed operations before giving up.", + "name": "--display-name", + "description": "The display name for the load test run. This is a user-friendly name to identify the test run.", "type": "string", "required": null }, { - "name": "--retry-mode", - "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", + "name": "--endpoint", + "description": "The endpoint URL to be tested. This is the URL of the HTTP endpoint that will be subjected to load testing.", "type": "string", "required": null }, { - "name": "--retry-network-timeout", - "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", + "name": "--virtual-users", + "description": "Virtual users is a measure of load that is simulated to test the HTTP endpoint. (Default - 50)", "type": "string", "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--duration", + "description": "This is the duration for which the load is simulated against the endpoint. Enter decimals for fractional minutes (e.g., 1.5 for 1 minute and 30 seconds). Default is 20 mins", "type": "string", "required": null }, { - "name": "--cluster", - "description": "Kusto Cluster name.", + "name": "--ramp-up-time", + "description": "The ramp-up time is the time it takes for the system to ramp-up to the total load specified. Enter decimals for fractional minutes (e.g., 1.5 for 1 minute and 30 seconds). Default is 1 min", "type": "string", - "required": true + "required": null } ] }, { - "name": "list", - "description": "List/enumerate all Azure Data Explorer/Kusto/KQL clusters in a subscription.", - "command": "azmcp kusto cluster list", + "name": "get", + "description": "Get the configuration and setup details for a load test by its test ID in a Load Testing resource.\r\nReturns only the test definition, including duration, ramp-up, virtual users, and endpoint. Does not return any test run results or execution data. Also does NOT return and resource details. Only the test configuration is fetched.", + "command": "azmcp loadtesting test get", "option": [ { "name": "--tenant", @@ -4740,13 +4808,31 @@ "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", "type": "string", "required": null + }, + { + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", + "type": "string", + "required": null + }, + { + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "type": "string", + "required": null + }, + { + "name": "--test-id", + "description": "The ID of the load test for which you want to fetch the details.", + "type": "string", + "required": true } ] }, { - "name": "list", - "description": "List/enumerate all databases in an Azure Data Explorer/Kusto/KQL cluster. Required: --cluster-uri ( or --cluster and --subscription).", - "command": "azmcp kusto database list", + "name": "create", + "description": "Returns the created Load Testing resource. This creates the resource in Azure only. It does not create any test plan or test run. \r\nOnce the resource is setup, you can go and configure test plans in the resource and then trigger test runs for your test plans.", + "command": "azmcp loadtesting testresource create", "option": [ { "name": "--tenant", @@ -4797,23 +4883,23 @@ "required": null }, { - "name": "--cluster-uri", - "description": "Kusto Cluster URI.", + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", "type": "string", "required": null }, { - "name": "--cluster", - "description": "Kusto Cluster name.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null } ] }, { - "name": "query", - "description": "Executes a query against an Azure Data Explorer/Kusto/KQL cluster to search for specific terms, retrieve records, or perform management operations. Required: --cluster-uri (or --cluster and --subscription), --database, and --query.", - "command": "azmcp kusto query", + "name": "list", + "description": "Lists all Azure Load Testing resources available in the selected subscription and resource group.\r\nReturns metadata for each resource, including name, location, and status. Use this to discover, manage, or audit load testing resources in your environment. Does not return test plans or test runs.", + "command": "azmcp loadtesting testresource list", "option": [ { "name": "--tenant", @@ -4864,35 +4950,23 @@ "required": null }, { - "name": "--cluster-uri", - "description": "Kusto Cluster URI.", + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", "type": "string", "required": null }, { - "name": "--cluster", - "description": "Kusto Cluster name.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null - }, - { - "name": "--database", - "description": "Kusto Database name.", - "type": "string", - "required": true - }, - { - "name": "--query", - "description": "Kusto query to execute. Uses KQL syntax.", - "type": "string", - "required": true } ] }, { - "name": "sample", - "description": "Return a sample of rows from a specific table in an Azure Data Explorer/Kusto/KQL cluster. Required: --cluster-uri (or --cluster and --subscription), --database, and --table.", - "command": "azmcp kusto sample", + "name": "create", + "description": "Creates a test run for a specified test in the selected load testing resource. This command triggers a new test run and does not modify the test plan or create a new test or resource. Use this to execute performance or functional tests based on an existing test configuration.", + "command": "azmcp loadtesting testrun create", "option": [ { "name": "--tenant", @@ -4943,41 +5017,53 @@ "required": null }, { - "name": "--cluster-uri", - "description": "Kusto Cluster URI.", + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", "type": "string", "required": null }, { - "name": "--cluster", - "description": "Kusto Cluster name.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null }, { - "name": "--database", - "description": "Kusto Database name.", + "name": "--testrun-id", + "description": "The ID of the load test run for which you want to fetch the details.", "type": "string", - "required": true + "required": null }, { - "name": "--table", - "description": "Kusto Table name.", + "name": "--test-id", + "description": "The ID of the load test for which you want to fetch the details.", "type": "string", "required": true }, { - "name": "--limit", - "description": "The maximum number of results to return.", + "name": "--display-name", + "description": "The display name for the load test run. This is a user-friendly name to identify the test run.", "type": "string", - "required": true + "required": null + }, + { + "name": "--description", + "description": "The description for the load test run. This provides additional context about the test run.", + "type": "string", + "required": null + }, + { + "name": "--old-testrun-id", + "description": "The ID of an existing test run to update. If provided, the command will trigger a rerun of the given test run id.", + "type": "string", + "required": null } ] }, { - "name": "list", - "description": "List/enumerate all tables in a specific Azure Data Explorer/Kusto/KQL database. Required: --cluster-uri (or --cluster and --subscription), --database.", - "command": "azmcp kusto table list", + "name": "get", + "description": "Get details for a specific test run by testrun ID.\r\nUse this to retrieve a single run's execution details (not a list). Returns status, start/end times, progress, aggregated metrics, and available artifacts (logs/traces). \r\nDoes NOT return the test plan/configuration or the test resource. Only the test run details. Also it is used to get details of SINGLE testrun based on its id. For a list of runs use testrun list command instead.", + "command": "azmcp loadtesting testrun get", "option": [ { "name": "--tenant", @@ -5028,29 +5114,29 @@ "required": null }, { - "name": "--cluster-uri", - "description": "Kusto Cluster URI.", + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", "type": "string", "required": null }, { - "name": "--cluster", - "description": "Kusto Cluster name.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null }, { - "name": "--database", - "description": "Kusto Database name.", + "name": "--testrun-id", + "description": "The ID of the load test run for which you want to fetch the details.", "type": "string", - "required": true + "required": null } ] }, { - "name": "schema", - "description": "Get/retrieve/show the schema of a specific table in an Azure Data Explorer/Kusto/KQL cluster. Required: --cluster-uri (or --cluster and --subscription), --database, and --table.", - "command": "azmcp kusto table schema", + "name": "list", + "description": "Retrieves a comprehensive list of all test run executions for a specific load test. We get the test ID from the user and all the associated test runs are fetched. It is a one to many relationship.\r\nEach test run only stores data corresponding to that particular run associated for that test. This does NOT return the test configuration or plan. For that use the test command. This is only for testruns.", + "command": "azmcp loadtesting testrun list", "option": [ { "name": "--tenant", @@ -5101,35 +5187,29 @@ "required": null }, { - "name": "--cluster-uri", - "description": "Kusto Cluster URI.", + "name": "--test-resource-name", + "description": "The name of the load test resource for which you want to fetch the details.", "type": "string", "required": null }, { - "name": "--cluster", - "description": "Kusto Cluster name.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", "required": null }, { - "name": "--database", - "description": "Kusto Database name.", - "type": "string", - "required": true - }, - { - "name": "--table", - "description": "Kusto Table name.", + "name": "--test-id", + "description": "The ID of the load test for which you want to fetch the details.", "type": "string", "required": true } ] }, { - "name": "create", - "description": "Creates a new load test plan or configuration for performance testing scenarios. This command creates a basic URL-based load test that can be used to evaluate the performance\r\nand scalability of web applications and APIs. The test configuration defines target endpoint, load parameters, and test duration. Once we create a test plan, we can use that to trigger test runs to test the endpoints set using the 'azmcp loadtesting testrun create' command.\r\nThis is NOT going to trigger or create any test runs and only will setup your test plan. Also, this is NOT going to create any test resource in azure. \r\nIt will only create a test in an already existing load test resource.", - "command": "azmcp loadtesting test create", + "name": "update", + "description": "Updates the metadata and display properties of a completed or in-progress load test run execution.\r\nThis command allows you to modify descriptive information for better organization, documentation, and identification of test runs without affecting the actual test execution or results. \r\nThis will only update a test run for the selected test in the load test resource. It does not help in changing the test plan configuration. \r\nThis will NOT create a test and also NOT update a test resource. Only for the specified test, it will update a test run.", + "command": "azmcp loadtesting testrun update", "option": [ { "name": "--tenant", @@ -5192,16 +5272,16 @@ "required": null }, { - "name": "--test-id", - "description": "The ID of the load test for which you want to fetch the details.", + "name": "--testrun-id", + "description": "The ID of the load test run for which you want to fetch the details.", "type": "string", - "required": true + "required": null }, { - "name": "--description", - "description": "The description for the load test run. This provides additional context about the test run.", + "name": "--test-id", + "description": "The ID of the load test for which you want to fetch the details.", "type": "string", - "required": null + "required": true }, { "name": "--display-name", @@ -5210,35 +5290,17 @@ "required": null }, { - "name": "--endpoint", - "description": "The endpoint URL to be tested. This is the URL of the HTTP endpoint that will be subjected to load testing.", - "type": "string", - "required": null - }, - { - "name": "--virtual-users", - "description": "Virtual users is a measure of load that is simulated to test the HTTP endpoint. (Default - 50)", - "type": "string", - "required": null - }, - { - "name": "--duration", - "description": "This is the duration for which the load is simulated against the endpoint. Enter decimals for fractional minutes (e.g., 1.5 for 1 minute and 30 seconds). Default is 20 mins", - "type": "string", - "required": null - }, - { - "name": "--ramp-up-time", - "description": "The ramp-up time is the time it takes for the system to ramp-up to the total load specified. Enter decimals for fractional minutes (e.g., 1.5 for 1 minute and 30 seconds). Default is 1 min", + "name": "--description", + "description": "The description for the load test run. This provides additional context about the test run.", "type": "string", "required": null } ] }, { - "name": "get", - "description": "Get the configuration and setup details for a load test by its test ID in a Load Testing resource.\r\nReturns only the test definition, including duration, ramp-up, virtual users, and endpoint. Does not return any test run results or execution data. Also does NOT return and resource details. Only the test configuration is fetched.", - "command": "azmcp loadtesting test get", + "name": "create", + "description": "Create an Azure Managed Lustre (AMLFS) file system using the specified network, capacity, maintenance window and availability zone.\r\nOptionally provides possibility to define Blob Integration, customer managed key encryption and root squash configuration.", + "command": "azmcp managedlustre filesystem create", "option": [ { "name": "--tenant", @@ -5289,87 +5351,122 @@ "required": null }, { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", "type": "string", - "required": null + "required": true }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--name", + "description": "The AMLFS resource name. Must be DNS-friendly (letters, numbers, hyphens). Example: --name amlfs-001", "type": "string", - "required": null + "required": true }, { - "name": "--test-id", - "description": "The ID of the load test for which you want to fetch the details.", + "name": "--location", + "description": "Azure region/region short name (use Azure location token, lowercase). Examples: uaenorth, swedencentral, eastus.", "type": "string", "required": true - } - ] - }, - { - "name": "create", - "description": "Returns the created Load Testing resource. This creates the resource in Azure only. It does not create any test plan or test run. \r\nOnce the resource is setup, you can go and configure test plans in the resource and then trigger test runs for your test plans.", - "command": "azmcp loadtesting testresource create", - "option": [ + }, + { + "name": "--sku", + "description": "The AMLFS SKU. Exact allowed values: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500.", + "type": "string", + "required": true + }, + { + "name": "--size", + "description": "The AMLFS size in TiB as an integer (no unit). Examples: 4, 12, 128.", + "type": "string", + "required": true + }, + { + "name": "--subnet-id", + "description": "Full subnet resource ID. Required format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}.\nExample: --subnet-id /subscriptions/0000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/vnet-001/subnets/subnet-001", + "type": "string", + "required": true + }, + { + "name": "--zone", + "description": "Availability zone identifier. Use a single digit string matching the region's AZ labels (e.g. '1').\nExample: --zone 1", + "type": "string", + "required": true + }, + { + "name": "--maintenance-day", + "description": "Preferred maintenance day. Allowed values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.\n", + "type": "string", + "required": true + }, + { + "name": "--maintenance-time", + "description": "Preferred maintenance time in UTC. Format: HH:MM (24-hour). Examples: 00:00, 23:00.\n", + "type": "string", + "required": true + }, { - "name": "--tenant", - "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", + "name": "--hsm-container", + "description": "Full blob container resource ID for HSM integration. HPC Cache Resource Provider must have before deployment Storage Blob Data Contributor and Storage Account Contributor roles on parent Storage Account.Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default/containers/{container}.\nExample: --hsm-container /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/stacc/blobServices/default/containers/hsm-container\n", "type": "string", "required": null }, { - "name": "--auth-method", - "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", + "name": "--hsm-log-container", + "description": "Full blob container resource ID for HSM logging. HPC Cache Resource Provider must have before deployment Storage Blob Data Contributor and Storage Account Contributor roles on parent Storage Account. Same format as --hsm-container.\nExample: --hsm-log-container /subscriptions/0000/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/stacc/blobServices/default/containers/hsm-logs\n", "type": "string", "required": null }, { - "name": "--retry-delay", - "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", + "name": "--import-prefix", + "description": "Optional HSM import prefix (path prefix inside the container starting with /). Examples: '/ingest/', '/archive/2019/'.\n", "type": "string", "required": null }, { - "name": "--retry-max-delay", - "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", + "name": "--root-squash-mode", + "description": "Root squash mode. Allowed values: All, RootOnly, None.\n", "type": "string", "required": null }, { - "name": "--retry-max-retries", - "description": "Maximum number of retry attempts for failed operations before giving up.", + "name": "--no-squash-nid-list", + "description": "Comma-separated list of NIDs (network identifiers) not to squash. Example: '10.0.2.4@tcp;10.0.2.[6-8]@tcp'.\n", "type": "string", "required": null }, { - "name": "--retry-mode", - "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", + "name": "--squash-uid", + "description": "Numeric UID to squash root to. Required in case root squash mode is not None. Example: --squash-uid 1000.\n", "type": "string", "required": null }, { - "name": "--retry-network-timeout", - "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", + "name": "--squash-gid", + "description": "Numeric GID to squash root to. Required in case root squash mode is not None. Example: --squash-gid 1000.\n", "type": "string", "required": null }, { - "name": "--subscription", - "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "name": "--custom-encryption", + "description": "Enable customer-managed encryption using a Key Vault key. When true, --key-url and --source-vault required, with a user-assigned identity already configured for Key Vault key access.", "type": "string", "required": null }, { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", + "name": "--key-url", + "description": "Full Key Vault key URL. Format: https://{vaultName}.vault.azure.net/keys/{keyName}/{keyVersion}.\nExample: --key-url https://kv-amlfs-001.vault.azure.net/keys/key-amlfs-001/0000\n", "type": "string", "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--source-vault", + "description": "Full Key Vault resource ID. Format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.KeyVault/vaults/{vaultName}.\nExample: --source-vault /subscriptions/0000/resourceGroups/rg/providers/Microsoft.KeyVault/vaults/kv-amlfs-001\n", + "type": "string", + "required": null + }, + { + "name": "--user-assigned-identity-id", + "description": "User-assigned managed identity resource ID (full resource ID) to use for Key Vault access when custom encryption is enabled. The identity must have RBAC role to access the encryption key\nFormat: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{name}.\nExample: --user-assigned-identity-id /subscriptions/0000/resourceGroups/rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1\n", "type": "string", "required": null } @@ -5377,8 +5474,8 @@ }, { "name": "list", - "description": "Lists all Azure Load Testing resources available in the selected subscription and resource group.\r\nReturns metadata for each resource, including name, location, and status. Use this to discover, manage, or audit load testing resources in your environment. Does not return test plans or test runs.", - "command": "azmcp loadtesting testresource list", + "description": "Lists Azure Managed Lustre (AMLFS) file systems in a subscription or optional resource group including provisioning state, MGS address, tier, capacity (TiB), blob integration container, and maintenance window details. Use to inventory Azure Managed Lustre filesystems and to check their properties.", + "command": "azmcp managedlustre filesystem list", "option": [ { "name": "--tenant", @@ -5428,12 +5525,6 @@ "type": "string", "required": null }, - { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", - "type": "string", - "required": null - }, { "name": "--resource-group", "description": "The name of the Azure resource group. This is a logical container for Azure resources.", @@ -5443,9 +5534,9 @@ ] }, { - "name": "create", - "description": "Creates a test run for a specified test in the selected load testing resource. This command triggers a new test run and does not modify the test plan or create a new test or resource. Use this to execute performance or functional tests based on an existing test configuration.", - "command": "azmcp loadtesting testrun create", + "name": "get", + "description": "Retrieves the available Azure Managed Lustre SKU, including increments, bandwidth, scale targets and zonal support. If a location is specified, the results will be filtered to that location.", + "command": "azmcp managedlustre filesystem sku get", "option": [ { "name": "--tenant", @@ -5496,53 +5587,17 @@ "required": null }, { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", - "type": "string", - "required": null - }, - { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", - "type": "string", - "required": null - }, - { - "name": "--testrun-id", - "description": "The ID of the load test run for which you want to fetch the details.", - "type": "string", - "required": null - }, - { - "name": "--test-id", - "description": "The ID of the load test for which you want to fetch the details.", - "type": "string", - "required": true - }, - { - "name": "--display-name", - "description": "The display name for the load test run. This is a user-friendly name to identify the test run.", - "type": "string", - "required": null - }, - { - "name": "--description", - "description": "The description for the load test run. This provides additional context about the test run.", - "type": "string", - "required": null - }, - { - "name": "--old-testrun-id", - "description": "The ID of an existing test run to update. If provided, the command will trigger a rerun of the given test run id.", + "name": "--location", + "description": "Azure region/region short name (use Azure location token, lowercase). Examples: uaenorth, swedencentral, eastus.", "type": "string", "required": null } ] }, { - "name": "get", - "description": "Get details for a specific test run by testrun ID.\r\nUse this to retrieve a single run's execution details (not a list). Returns status, start/end times, progress, aggregated metrics, and available artifacts (logs/traces). \r\nDoes NOT return the test plan/configuration or the test resource. Only the test run details. Also it is used to get details of SINGLE testrun based on its id. For a list of runs use testrun list command instead.", - "command": "azmcp loadtesting testrun get", + "name": "ask", + "description": "Calculates the required subnet size for an Azure Managed Lustre file system given a SKU and size. Use to plan network deployment for AMLFS. Returns the number of required IPs.", + "command": "azmcp managedlustre filesystem subnetsize ask", "option": [ { "name": "--tenant", @@ -5593,29 +5648,23 @@ "required": null }, { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", - "type": "string", - "required": null - }, - { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--sku", + "description": "The AMLFS SKU. Exact allowed values: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500.", "type": "string", - "required": null + "required": true }, { - "name": "--testrun-id", - "description": "The ID of the load test run for which you want to fetch the details.", + "name": "--size", + "description": "The AMLFS size in TiB as an integer (no unit). Examples: 4, 12, 128.", "type": "string", - "required": null + "required": true } ] }, { - "name": "list", - "description": "Retrieves a comprehensive list of all test run executions for a specific load test. We get the test ID from the user and all the associated test runs are fetched. It is a one to many relationship.\r\nEach test run only stores data corresponding to that particular run associated for that test. This does NOT return the test configuration or plan. For that use the test command. This is only for testruns.", - "command": "azmcp loadtesting testrun list", + "name": "validate", + "description": "Validates that the provided subnet can host an Azure Managed Lustre filesystem for the given SKU and size.", + "command": "azmcp managedlustre filesystem subnetsize validate", "option": [ { "name": "--tenant", @@ -5666,20 +5715,26 @@ "required": null }, { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", + "name": "--sku", + "description": "The AMLFS SKU. Exact allowed values: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500.", "type": "string", - "required": null + "required": true }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--size", + "description": "The AMLFS size in TiB as an integer (no unit). Examples: 4, 12, 128.", "type": "string", - "required": null + "required": true }, { - "name": "--test-id", - "description": "The ID of the load test for which you want to fetch the details.", + "name": "--subnet-id", + "description": "Full subnet resource ID. Required format: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}.\nExample: --subnet-id /subscriptions/0000/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/vnet-001/subnets/subnet-001", + "type": "string", + "required": true + }, + { + "name": "--location", + "description": "Azure region/region short name (use Azure location token, lowercase). Examples: uaenorth, swedencentral, eastus.", "type": "string", "required": true } @@ -5687,8 +5742,8 @@ }, { "name": "update", - "description": "Updates the metadata and display properties of a completed or in-progress load test run execution.\r\nThis command allows you to modify descriptive information for better organization, documentation, and identification of test runs without affecting the actual test execution or results. \r\nThis will only update a test run for the selected test in the load test resource. It does not help in changing the test plan configuration. \r\nThis will NOT create a test and also NOT update a test resource. Only for the specified test, it will update a test run.", - "command": "azmcp loadtesting testrun update", + "description": "Update maintenance window and/or root squash settings of an existing Azure Managed Lustre (AMLFS) file system. Provide either maintenance day and time or root squash fields (no-squash-nid-list, squash-uid, squash-gid). Root squash fields must be provided if root squash is not None. In case of maintenance window update, both maintenance day and maintenance time should be provided.", + "command": "azmcp managedlustre filesystem update", "option": [ { "name": "--tenant", @@ -5739,38 +5794,50 @@ "required": null }, { - "name": "--test-resource-name", - "description": "The name of the load test resource for which you want to fetch the details.", + "name": "--resource-group", + "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "type": "string", + "required": true + }, + { + "name": "--name", + "description": "The AMLFS resource name. Must be DNS-friendly (letters, numbers, hyphens). Example: --name amlfs-001", + "type": "string", + "required": true + }, + { + "name": "--maintenance-day", + "description": "Preferred maintenance day. Allowed values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.\n", "type": "string", "required": null }, { - "name": "--resource-group", - "description": "The name of the Azure resource group. This is a logical container for Azure resources.", + "name": "--maintenance-time", + "description": "Preferred maintenance time in UTC. Format: HH:MM (24-hour). Examples: 00:00, 23:00.\n", "type": "string", "required": null }, { - "name": "--testrun-id", - "description": "The ID of the load test run for which you want to fetch the details.", + "name": "--no-squash-nid-list", + "description": "Comma-separated list of NIDs (network identifiers) not to squash. Example: '10.0.2.4@tcp;10.0.2.[6-8]@tcp'.\n", "type": "string", "required": null }, { - "name": "--test-id", - "description": "The ID of the load test for which you want to fetch the details.", + "name": "--squash-uid", + "description": "Numeric UID to squash root to. Required in case root squash mode is not None. Example: --squash-uid 1000.\n", "type": "string", - "required": true + "required": null }, { - "name": "--display-name", - "description": "The display name for the load test run. This is a user-friendly name to identify the test run.", + "name": "--squash-gid", + "description": "Numeric GID to squash root to. Required in case root squash mode is not None. Example: --squash-gid 1000.\n", "type": "string", "required": null }, { - "name": "--description", - "description": "The description for the load test run. This provides additional context about the test run.", + "name": "--root-squash-mode", + "description": "Root squash mode. Allowed values: All, RootOnly, None.\n", "type": "string", "required": null } @@ -10738,6 +10805,73 @@ } ] }, + { + "name": "list", + "description": "List all tables in a Storage or Cosmos DB account.", + "command": "azmcp tables list", + "option": [ + { + "name": "--tenant", + "description": "The Microsoft Entra ID tenant ID or name. This can be either the GUID identifier or the display name of your Entra ID tenant.", + "type": "string", + "required": null + }, + { + "name": "--auth-method", + "description": "Authentication method to use. Options: 'credential' (Azure CLI/managed identity), 'key' (access key), or 'connectionString'.", + "type": "string", + "required": null + }, + { + "name": "--retry-delay", + "description": "Initial delay in seconds between retry attempts. For exponential backoff, this value is used as the base.", + "type": "string", + "required": null + }, + { + "name": "--retry-max-delay", + "description": "Maximum delay in seconds between retries, regardless of the retry strategy.", + "type": "string", + "required": null + }, + { + "name": "--retry-max-retries", + "description": "Maximum number of retry attempts for failed operations before giving up.", + "type": "string", + "required": null + }, + { + "name": "--retry-mode", + "description": "Retry strategy to use. 'fixed' uses consistent delays, 'exponential' increases delay between attempts.", + "type": "string", + "required": null + }, + { + "name": "--retry-network-timeout", + "description": "Network operation timeout in seconds. Operations taking longer than this will be cancelled.", + "type": "string", + "required": null + }, + { + "name": "--subscription", + "description": "Specifies the Azure subscription to use. Accepts either a subscription ID (GUID) or display name. If not specified, the AZURE_SUBSCRIPTION_ID environment variable will be used instead.", + "type": "string", + "required": null + }, + { + "name": "--storage-account", + "description": "The name of the Azure Storage account (e.g., 'mystorageaccount').", + "type": "string", + "required": null + }, + { + "name": "--", + "description": "The name of the Cosmos DB account (e.g., 'mycosmosdbaccount').", + "type": "string", + "required": null + } + ] + }, { "name": "list", "description": "List all hostpools in a subscription or resource group. This command retrieves all Azure Virtual Desktop hostpool objects available\r\nin the specified Option`1: --subscription. If a resource group is specified, only hostpools in that resource group are returned.\r\nResults include hostpool names and are returned as a JSON array.", @@ -11288,5 +11422,5 @@ } ], "consolidated_azure_tools": null, - "duration": 100 + "duration": 51 } \ No newline at end of file diff --git a/servers/Azure.Mcp.Server/CHANGELOG.md b/servers/Azure.Mcp.Server/CHANGELOG.md index ff981c488..8fac5d6b9 100644 --- a/servers/Azure.Mcp.Server/CHANGELOG.md +++ b/servers/Azure.Mcp.Server/CHANGELOG.md @@ -11,6 +11,7 @@ The Azure MCP Server updates automatically by default whenever a new release com - Updated `ToolArea` telemetry field to be populated for namespace (and intent/learn) calls. [[#739](https://github.com/microsoft/mcp/pull/739)] - Added support for Azure Confidential Ledger with the command `azmcp_confidentialledger_entries_get` for getting ledger entries identified by their ID. [[#705](https://github.com/microsoft/mcp/pull/723)] - Added support for listing Azure Resource activity logs `azmcp_monitor_activitylog_list`. [[#720](https://github.com/microsoft/mcp/pull/720)] +- Added support for listing tables in Azure Storage and CosmosDB via command `azmcp_tables_list`. [[#743](https://github.com/microsoft/mcp/pull/743)] ### Breaking Changes diff --git a/servers/Azure.Mcp.Server/docs/azmcp-commands.md b/servers/Azure.Mcp.Server/docs/azmcp-commands.md index a773ad0d3..0fca7a25d 100644 --- a/servers/Azure.Mcp.Server/docs/azmcp-commands.md +++ b/servers/Azure.Mcp.Server/docs/azmcp-commands.md @@ -1622,6 +1622,16 @@ azmcp storage blob upload --subscription \ --local-file-path ``` +### Azure Tables Operations + +```bash +# List tables in a Storage or Cosmos DB account +# ❌ Destructive | ✅ Idempotent | ❌ OpenWorld | ✅ ReadOnly | ❌ Secret | ❌ LocalRequired +azmcp tables list --subscription \ + [--storage-account ] \ + [--cosmosdb-account ] +``` + ### Azure Subscription Management ```bash diff --git a/servers/Azure.Mcp.Server/docs/e2eTestPrompts.md b/servers/Azure.Mcp.Server/docs/e2eTestPrompts.md index ff62f035f..41c73d0a9 100644 --- a/servers/Azure.Mcp.Server/docs/e2eTestPrompts.md +++ b/servers/Azure.Mcp.Server/docs/e2eTestPrompts.md @@ -584,6 +584,15 @@ This file contains prompts used for end-to-end testing to ensure each tool is in | azmcp_subscription_list | What is my current subscription? | | azmcp_subscription_list | What subscriptions do I have? | +## Azure Tables + +| Tool Name | Test Prompt | +|:----------|:----------| +| azmcp_tables_list | List all tables in the storage account | +| azmcp_tables_list | Show me the tables in the storage account | +| azmcp_tables_list | List all tables in the Cosmos DB account | +| azmcp_tables_list | Show me the tables in the Cosmos DB account | + ## Azure Terraform Best Practices | Tool Name | Test Prompt | diff --git a/servers/Azure.Mcp.Server/src/Program.cs b/servers/Azure.Mcp.Server/src/Program.cs index f412a6d46..86e767ec9 100644 --- a/servers/Azure.Mcp.Server/src/Program.cs +++ b/servers/Azure.Mcp.Server/src/Program.cs @@ -102,6 +102,7 @@ private static IAreaSetup[] RegisterAreas() new Azure.Mcp.Tools.SignalR.SignalRSetup(), new Azure.Mcp.Tools.Sql.SqlSetup(), new Azure.Mcp.Tools.Storage.StorageSetup(), + new Azure.Mcp.Tools.Tables.TablesSetup(), new Azure.Mcp.Tools.VirtualDesktop.VirtualDesktopSetup(), new Azure.Mcp.Tools.Workbooks.WorkbooksSetup(), #if !BUILD_NATIVE diff --git a/tools/Azure.Mcp.Tools.Tables/Azure.Mcp.Tools.Tables.sln b/tools/Azure.Mcp.Tools.Tables/Azure.Mcp.Tools.Tables.sln new file mode 100644 index 000000000..2400cfe16 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/Azure.Mcp.Tools.Tables.sln @@ -0,0 +1,42 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Table", "src\Azure.Mcp.Tools.Table.csproj", "{B7A97E82-2E1D-BE3A-2A7C-A90F3165AACD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Table.LiveTests", "tests\Azure.Mcp.Tools.Table.LiveTests\Azure.Mcp.Tools.Table.LiveTests.csproj", "{83DD8707-A48C-1D6B-0D9F-63BD93180599}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Table.UnitTests", "tests\Azure.Mcp.Tools.Table.UnitTests\Azure.Mcp.Tools.Table.UnitTests.csproj", "{C0756D40-AADD-FDA6-49C2-973096FF795D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B7A97E82-2E1D-BE3A-2A7C-A90F3165AACD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7A97E82-2E1D-BE3A-2A7C-A90F3165AACD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7A97E82-2E1D-BE3A-2A7C-A90F3165AACD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7A97E82-2E1D-BE3A-2A7C-A90F3165AACD}.Release|Any CPU.Build.0 = Release|Any CPU + {83DD8707-A48C-1D6B-0D9F-63BD93180599}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83DD8707-A48C-1D6B-0D9F-63BD93180599}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83DD8707-A48C-1D6B-0D9F-63BD93180599}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83DD8707-A48C-1D6B-0D9F-63BD93180599}.Release|Any CPU.Build.0 = Release|Any CPU + {C0756D40-AADD-FDA6-49C2-973096FF795D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C0756D40-AADD-FDA6-49C2-973096FF795D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C0756D40-AADD-FDA6-49C2-973096FF795D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C0756D40-AADD-FDA6-49C2-973096FF795D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {83DD8707-A48C-1D6B-0D9F-63BD93180599} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + {C0756D40-AADD-FDA6-49C2-973096FF795D} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3BE8B60B-F7A1-4780-A64D-170B629FEF04} + EndGlobalSection +EndGlobal diff --git a/tools/Azure.Mcp.Tools.Tables/src/AssemblyInfo.cs b/tools/Azure.Mcp.Tools.Tables/src/AssemblyInfo.cs new file mode 100644 index 000000000..d7410c94f --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/AssemblyInfo.cs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Azure.Mcp.Tools.Tables.UnitTests")] +[assembly: InternalsVisibleTo("Azure.Mcp.Tools.Tables.LiveTests")] diff --git a/tools/Azure.Mcp.Tools.Tables/src/Azure.Mcp.Tools.Tables.csproj b/tools/Azure.Mcp.Tools.Tables/src/Azure.Mcp.Tools.Tables.csproj new file mode 100644 index 000000000..3f6386803 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Azure.Mcp.Tools.Tables.csproj @@ -0,0 +1,20 @@ + + + true + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/Azure.Mcp.Tools.Tables/src/Commands/BaseTablesCommand.cs b/tools/Azure.Mcp.Tools.Tables/src/Commands/BaseTablesCommand.cs new file mode 100644 index 000000000..3d22b6af6 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Commands/BaseTablesCommand.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Diagnostics.CodeAnalysis; +using Azure.Mcp.Core.Commands; +using Azure.Mcp.Core.Commands.Subscription; +using Azure.Mcp.Core.Extensions; +using Azure.Mcp.Tools.Tables.Options; + +namespace Azure.Mcp.Tools.Tables.Commands; + +public abstract class BaseTablesCommand<[DynamicallyAccessedMembers(TrimAnnotations.CommandAnnotations)] T> : SubscriptionCommand + where T : BaseTablesOptions, new() +{ + protected override void RegisterOptions(Command command) + { + base.RegisterOptions(command); + command.Options.Add(TablesOptionDefinitions.Account); + command.Options.Add(TablesOptionDefinitions.CosmosDbAccount); + command.Validators.Add(commandResult => + { + var storageAccount = commandResult.GetValueOrDefault(TablesOptionDefinitions.Account.Name); + var cosmosDbAccount = commandResult.GetValueOrDefault(TablesOptionDefinitions.CosmosDbAccount.Name); + if (string.IsNullOrWhiteSpace(storageAccount) && string.IsNullOrWhiteSpace(cosmosDbAccount)) + { + commandResult.AddError($"One of --{TablesOptionDefinitions.StorageAccountName} or --{TablesOptionDefinitions.CosmosDbAccountName} must be provided."); + } + else if (!string.IsNullOrWhiteSpace(storageAccount) && !string.IsNullOrWhiteSpace(cosmosDbAccount)) + { + commandResult.AddError($"Only one of --{TablesOptionDefinitions.StorageAccountName} or --{TablesOptionDefinitions.CosmosDbAccountName} can be provided."); + } + }); + } + + protected override T BindOptions(ParseResult parseResult) + { + var options = base.BindOptions(parseResult); + options.StorageAccount = parseResult.GetValueOrDefault(TablesOptionDefinitions.Account.Name); + options.CosmosDbAccount = parseResult.GetValueOrDefault(TablesOptionDefinitions.CosmosDbAccount.Name); + return options; + } +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/Commands/TablesJsonContext.cs b/tools/Azure.Mcp.Tools.Tables/src/Commands/TablesJsonContext.cs new file mode 100644 index 000000000..84baafbeb --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Commands/TablesJsonContext.cs @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Text.Json.Serialization; + +namespace Azure.Mcp.Tools.Tables.Commands; + +[JsonSerializable(typeof(TablesListCommand.TablesListCommandResult))] +[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault)] +internal sealed partial class TablesJsonContext : JsonSerializerContext +{ +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/Commands/TablesListCommand.cs b/tools/Azure.Mcp.Tools.Tables/src/Commands/TablesListCommand.cs new file mode 100644 index 000000000..93b40a04f --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Commands/TablesListCommand.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Azure.Mcp.Core.Commands; +using Azure.Mcp.Tools.Tables.Options; +using Azure.Mcp.Tools.Tables.Services; +using Microsoft.Extensions.Logging; + +namespace Azure.Mcp.Tools.Tables.Commands; + +public sealed class TablesListCommand(ILogger logger) : BaseTablesCommand() +{ + private const string CommandTitle = "List Tables on Azure Storage or Cosmos DB"; + private readonly ILogger _logger = logger; + + public override string Name => "list"; + + public override string Description => "List all tables in a Storage or Cosmos DB account."; + + public override string Title => CommandTitle; + + public override ToolMetadata Metadata => new() + { + Destructive = false, + Idempotent = true, + OpenWorld = false, + ReadOnly = true, + LocalRequired = false, + Secret = false + }; + + public override async Task ExecuteAsync(CommandContext context, ParseResult parseResult) + { + if (!Validate(parseResult.CommandResult, context.Response).IsValid) + { + return context.Response; + } + + var options = BindOptions(parseResult); + + try + { + var account = options.StorageAccount ?? options.CosmosDbAccount; + var tablesService = context.GetService(); + var tables = await tablesService.ListTables( + account!, + !string.IsNullOrWhiteSpace(options.CosmosDbAccount), + options.Subscription!, + options.Tenant, + options.RetryPolicy); + + context.Response.Results = ResponseResult.Create(new(tables ?? []), TablesJsonContext.Default.TablesListCommandResult); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error listing tables. StorageAccount: {StorageAccount}, CosmosDbAccount: {CosmosDbAccount}.", + options.StorageAccount, options.CosmosDbAccount); + HandleException(context, ex); + } + + return context.Response; + } + + internal record TablesListCommandResult(List Tables); +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/GlobalUsings.cs b/tools/Azure.Mcp.Tools.Tables/src/GlobalUsings.cs new file mode 100644 index 000000000..415da4fc8 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/GlobalUsings.cs @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +global using System.CommandLine; +global using Azure.Mcp.Core.Models.Command; diff --git a/tools/Azure.Mcp.Tools.Tables/src/Options/BaseTablesOptions.cs b/tools/Azure.Mcp.Tools.Tables/src/Options/BaseTablesOptions.cs new file mode 100644 index 000000000..63d95888c --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Options/BaseTablesOptions.cs @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Azure.Mcp.Core.Options; + +namespace Azure.Mcp.Tools.Tables.Options; + +public class BaseTablesOptions : SubscriptionOptions +{ + public string? StorageAccount { get; set; } + public string? CosmosDbAccount { get; set; } +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/Options/TablesListOptions.cs b/tools/Azure.Mcp.Tools.Tables/src/Options/TablesListOptions.cs new file mode 100644 index 000000000..f772c205c --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Options/TablesListOptions.cs @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +namespace Azure.Mcp.Tools.Tables.Options; + +public class TablesListOptions : BaseTablesOptions; diff --git a/tools/Azure.Mcp.Tools.Tables/src/Options/TablesOptionDefinitions.cs b/tools/Azure.Mcp.Tools.Tables/src/Options/TablesOptionDefinitions.cs new file mode 100644 index 000000000..24aef751a --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Options/TablesOptionDefinitions.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +namespace Azure.Mcp.Tools.Tables.Options; + +public static class TablesOptionDefinitions +{ + public const string StorageAccountName = "storage-account"; + public const string CosmosDbAccountName = "cosmosdb-account"; + + public static readonly Option Account = new($"--{StorageAccountName}") + { + Description = "The name of the Azure Storage account (e.g., 'mystorageaccount').", + }; + + public static readonly Option CosmosDbAccount = new($"--{CosmosDbAccountName}") + { + Description = "The name of the Cosmos DB account (e.g., 'mycosmosdbaccount').", + }; +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/Services/ITablesService.cs b/tools/Azure.Mcp.Tools.Tables/src/Services/ITablesService.cs new file mode 100644 index 000000000..60d57b180 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Services/ITablesService.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Azure.Mcp.Core.Options; + +namespace Azure.Mcp.Tools.Tables.Services; + +public interface ITablesService +{ + Task> ListTables( + string account, + bool isCosmosDb, + string subscription, + string? tenant = null, + RetryPolicyOptions? retryPolicy = null); +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/Services/TablesService.cs b/tools/Azure.Mcp.Tools.Tables/src/Services/TablesService.cs new file mode 100644 index 000000000..5de06965a --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/Services/TablesService.cs @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Azure.Data.Tables; +using Azure.Mcp.Core.Options; +using Azure.Mcp.Core.Services.Azure; + +namespace Azure.Mcp.Tools.Tables.Services; + +public class TablesService() : BaseAzureService, ITablesService +{ + protected async Task CreateTableServiceClient( + string? account, + bool isCosmosDb, + string subscription, + string? tenant = null, + RetryPolicyOptions? retryPolicy = null) + { + var options = ConfigureRetryPolicy(AddDefaultPolicies(new TableClientOptions()), retryPolicy); + var defaultUri = isCosmosDb ? $"https://{account}.table.cosmos.azure.com" : $"https://{account}.table.core.windows.net"; + return new TableServiceClient(new Uri(defaultUri), await GetCredential(tenant), options); + } + + public async Task> ListTables( + string account, + bool isCosmosDb, + string subscription, + string? tenant = null, + RetryPolicyOptions? retryPolicy = null) + { + ValidateRequiredParameters((nameof(account), account), (nameof(subscription), subscription)); + + var tables = new List(); + + try + { + // First attempt with requested auth method + var tableServiceClient = await CreateTableServiceClient( + account, + isCosmosDb, + subscription, + tenant, + retryPolicy); + + await foreach (var table in tableServiceClient.QueryAsync()) + { + tables.Add(table.Name); + } + return tables; + } + catch (Exception ex) + { + throw new Exception($"Error listing tables: {ex.Message}", ex); + } + } +} diff --git a/tools/Azure.Mcp.Tools.Tables/src/TablesSetup.cs b/tools/Azure.Mcp.Tools.Tables/src/TablesSetup.cs new file mode 100644 index 000000000..f6406187a --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/src/TablesSetup.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Azure.Mcp.Core.Areas; +using Azure.Mcp.Core.Commands; +using Azure.Mcp.Tools.Tables.Commands; +using Azure.Mcp.Tools.Tables.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Azure.Mcp.Tools.Tables; + +public class TablesSetup : IAreaSetup +{ + public string Name => "tables"; + + public void ConfigureServices(IServiceCollection services) + { + services.AddSingleton(); + + services.AddSingleton(); + } + + public CommandGroup RegisterCommands(IServiceProvider serviceProvider) + { + var tables = new CommandGroup(Name, + """ + Azure Table storage operations - Commands for managing and accessing Azure Table storage. Use this tool + when you need to list Azure Table storage tables in either a Storage or Cosmos DB account. Note that this + tool requires appropriate Azure Table storage account permissions and will only access table storage + resources accessible to the authenticated user. + """); + + var tablesList = serviceProvider.GetRequiredService(); + tables.AddCommand(tablesList.Name, tablesList); + + return tables; + } +} diff --git a/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.LiveTests/Azure.Mcp.Tools.Tables.LiveTests.csproj b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.LiveTests/Azure.Mcp.Tools.Tables.LiveTests.csproj new file mode 100644 index 000000000..0f06a032a --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.LiveTests/Azure.Mcp.Tools.Tables.LiveTests.csproj @@ -0,0 +1,17 @@ + + + true + Exe + + + + + + + + + + + + + diff --git a/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.LiveTests/TablesCommandTests.cs b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.LiveTests/TablesCommandTests.cs new file mode 100644 index 000000000..8feffeb32 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.LiveTests/TablesCommandTests.cs @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.Text.Json; +using Azure.Mcp.Tests; +using Azure.Mcp.Tests.Client; +using Xunit; + +namespace Azure.Mcp.Tools.Tables.LiveTests +{ + public class TablesCommandTests(ITestOutputHelper output) : CommandTestsBase(output) + { + [Fact] + public async Task Should_list_storage_tables_with_tenant_id() + { + var result = await CallToolAsync( + "azmcp_tables_list", + new() + { + { "subscription", Settings.SubscriptionName }, + { "tenant", Settings.TenantId }, + { "storage-account", Settings.ResourceBaseName }, + }); + + var actual = result.AssertProperty("tables"); + Assert.Equal(JsonValueKind.Array, actual.ValueKind); + Assert.NotEmpty(actual.EnumerateArray()); + } + + [Fact] + public async Task Should_list_storage_tables_with_tenant_name() + { + Assert.SkipWhen(Settings.IsServicePrincipal, TenantNameReason); + + var result = await CallToolAsync( + "azmcp_tables_list", + new() + { + { "subscription", Settings.SubscriptionName }, + { "tenant", Settings.TenantName }, + { "storage-account", Settings.ResourceBaseName }, + }); + + var actual = result.AssertProperty("tables"); + Assert.Equal(JsonValueKind.Array, actual.ValueKind); + Assert.NotEmpty(actual.EnumerateArray()); + } + } +} diff --git a/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.UnitTests/Azure.Mcp.Tools.Tables.UnitTests.csproj b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.UnitTests/Azure.Mcp.Tools.Tables.UnitTests.csproj new file mode 100644 index 000000000..2065800e1 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.UnitTests/Azure.Mcp.Tools.Tables.UnitTests.csproj @@ -0,0 +1,17 @@ + + + true + Exe + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.UnitTests/TablesListCommandTests.cs b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.UnitTests/TablesListCommandTests.cs new file mode 100644 index 000000000..186b2aa2e --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/tests/Azure.Mcp.Tools.Tables.UnitTests/TablesListCommandTests.cs @@ -0,0 +1,259 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using System.CommandLine; +using System.Net; +using System.Text.Json; +using Azure.Mcp.Core.Models.Command; +using Azure.Mcp.Core.Options; +using Azure.Mcp.Tools.Tables.Commands; +using Azure.Mcp.Tools.Tables.Services; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using NSubstitute; +using NSubstitute.ExceptionExtensions; +using Xunit; + +namespace Azure.Mcp.Tools.Tables.UnitTests; + +public class TablesListCommandTests +{ + private readonly IServiceProvider _serviceProvider; + private readonly ITablesService _tablesService; + private readonly ILogger _logger; + private readonly TablesListCommand _command; + private readonly CommandContext _context; + private readonly Command _commandDefinition; + private readonly string _knownStorageAccount = "storage123"; + private readonly string _knownCosmosDbAccount = "cosmosdb123"; + private readonly string _knownSubscription = "sub123"; + + public TablesListCommandTests() + { + _tablesService = Substitute.For(); + _logger = Substitute.For>(); + + var collection = new ServiceCollection().AddSingleton(_tablesService); + + _serviceProvider = collection.BuildServiceProvider(); + _command = new(_logger); + _context = new(_serviceProvider); + _commandDefinition = _command.GetCommand(); + } + + [Fact] + public async Task ExecuteAsync_ReturnsStorageTables() + { + // Arrange + var expectedTables = new List { "table1", "table2" }; + + _tablesService.ListTables( + Arg.Is(_knownStorageAccount), + false, + Arg.Is(_knownSubscription), + Arg.Any(), + Arg.Any()) + .Returns(expectedTables); + + var args = _commandDefinition.Parse([ + "--storage-account", _knownStorageAccount, + "--subscription", _knownSubscription + ]); + + // Act + var response = await _command.ExecuteAsync(_context, args); + + // Assert + Assert.NotNull(response); + Assert.NotNull(response.Results); + + var json = JsonSerializer.Serialize(response.Results); + var result = JsonSerializer.Deserialize(json, TablesJsonContext.Default.TablesListCommandResult); + + Assert.NotNull(result); + Assert.Equal(expectedTables, result.Tables); + } + + [Fact] + public async Task ExecuteAsync_ReturnsCosmosDbTables() + { + // Arrange + var expectedTables = new List { "table1", "table2" }; + + _tablesService.ListTables( + Arg.Is(_knownCosmosDbAccount), + true, + Arg.Is(_knownSubscription), + Arg.Any(), + Arg.Any()) + .Returns(expectedTables); + + var args = _commandDefinition.Parse([ + "--cosmosdb-account", _knownCosmosDbAccount, + "--subscription", _knownSubscription + ]); + + // Act + var response = await _command.ExecuteAsync(_context, args); + + // Assert + Assert.NotNull(response); + Assert.NotNull(response.Results); + + var json = JsonSerializer.Serialize(response.Results); + var result = JsonSerializer.Deserialize(json, TablesJsonContext.Default.TablesListCommandResult); + + Assert.NotNull(result); + Assert.Equal(expectedTables, result.Tables); + } + + [Fact] + public async Task ExecuteAsync_ReturnsEmpty_WhenNoStorageTables() + { + // Arrange + _tablesService.ListTables( + Arg.Is(_knownStorageAccount), + false, + Arg.Is(_knownSubscription), + Arg.Any(), + Arg.Any()) + .Returns([]); + + var args = _commandDefinition.Parse([ + "--storage-account", _knownStorageAccount, + "--subscription", _knownSubscription + ]); + + // Act + var response = await _command.ExecuteAsync(_context, args); + + // Assert + Assert.NotNull(response); + Assert.NotNull(response.Results); + + var json = JsonSerializer.Serialize(response.Results); + var result = JsonSerializer.Deserialize(json, TablesJsonContext.Default.TablesListCommandResult); + + Assert.NotNull(result); + Assert.Empty(result.Tables); + } + + [Fact] + public async Task ExecuteAsync_ReturnsEmpty_WhenNoCosmosDbTables() + { + // Arrange + _tablesService.ListTables( + Arg.Is(_knownCosmosDbAccount), + true, + Arg.Is(_knownSubscription), + Arg.Any(), + Arg.Any()) + .Returns([]); + + var args = _commandDefinition.Parse([ + "--cosmosdb-account", _knownCosmosDbAccount, + "--subscription", _knownSubscription + ]); + + // Act + var response = await _command.ExecuteAsync(_context, args); + + // Assert + Assert.NotNull(response); + Assert.NotNull(response.Results); + + var json = JsonSerializer.Serialize(response.Results); + var result = JsonSerializer.Deserialize(json, TablesJsonContext.Default.TablesListCommandResult); + + Assert.NotNull(result); + Assert.Empty(result.Tables); + } + + [Theory] + [InlineData("--storage-account mystorageaccount")] // Missing subscription + [InlineData("--cosmosdb-account mycosmosdbaccount")] // Missing subscription + [InlineData("")] // No arguments + public async Task ExecuteAsync_ValidatesMissingSubscriptionCorrectly(string args) + { + // Arrange + var parseResult = _commandDefinition.Parse(args); + + // Act + var response = await _command.ExecuteAsync(_context, parseResult); + + // Assert + Assert.Contains("required", response.Message, StringComparison.OrdinalIgnoreCase); + } + + [Theory] + [InlineData("--subscription sub123")] // Missing Storage and Cosmos DB account + [InlineData("--storage-account mystorageaccount --cosmosdb-account mycosmosdbaccount --subscription sub123")] // Both Storage and Cosmos DB account + [InlineData("")] // No arguments + public async Task ExecuteAsync_ValidatesIncorrectAccountInputCorrectly(string args) + { + // Arrange + var parseResult = _commandDefinition.Parse(args); + + // Act + var response = await _command.ExecuteAsync(_context, parseResult); + + // Assert + Assert.Contains("one of", response.Message, StringComparison.OrdinalIgnoreCase); + } + + [Fact] + public async Task ExecuteAsync_HandlesStorageException() + { + // Arrange + var expectedError = "Test error"; + + _tablesService.ListTables( + Arg.Is(_knownStorageAccount), + false, + Arg.Is(_knownSubscription), + Arg.Any(), + Arg.Any()) + .ThrowsAsync(new Exception(expectedError)); + + var args = _command.GetCommand().Parse([ + "--storage-account", _knownStorageAccount, + "--subscription", _knownSubscription + ]); + + // Act + var response = await _command.ExecuteAsync(_context, args); + + // Assert + Assert.NotNull(response); + Assert.Equal(HttpStatusCode.InternalServerError, response.Status); + Assert.StartsWith(expectedError, response.Message); + } + + [Fact] + public async Task ExecuteAsync_HandlesCosmosDbException() + { + // Arrange + var expectedError = "Test error"; + + _tablesService.ListTables( + Arg.Is(_knownCosmosDbAccount), + true, + Arg.Is(_knownSubscription), + Arg.Any(), + Arg.Any()) + .ThrowsAsync(new Exception(expectedError)); + + var args = _command.GetCommand().Parse([ + "--cosmosdb-account", _knownCosmosDbAccount, + "--subscription", _knownSubscription + ]); + + // Act + var response = await _command.ExecuteAsync(_context, args); + + // Assert + Assert.NotNull(response); + Assert.Equal(HttpStatusCode.InternalServerError, response.Status); + Assert.StartsWith(expectedError, response.Message); + } +} diff --git a/tools/Azure.Mcp.Tools.Tables/tests/test-resources-post.ps1 b/tools/Azure.Mcp.Tools.Tables/tests/test-resources-post.ps1 new file mode 100644 index 000000000..b6192f32f --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/tests/test-resources-post.ps1 @@ -0,0 +1,14 @@ +param( + [string] $TenantId, + [string] $TestApplicationId, + [string] $ResourceGroupName, + [string] $BaseName, + [hashtable] $DeploymentOutputs +) + +$ErrorActionPreference = "Stop" + +. "$PSScriptRoot/../../../eng/common/scripts/common.ps1" +. "$PSScriptRoot/../../../eng/scripts/helpers/TestResourcesHelpers.ps1" + +$testSettings = New-TestSettings @PSBoundParameters -OutputPath $PSScriptRoot diff --git a/tools/Azure.Mcp.Tools.Tables/tests/test-resources.bicep b/tools/Azure.Mcp.Tools.Tables/tests/test-resources.bicep new file mode 100644 index 000000000..a01762700 --- /dev/null +++ b/tools/Azure.Mcp.Tools.Tables/tests/test-resources.bicep @@ -0,0 +1,35 @@ +targetScope = 'resourceGroup' + +@minLength(3) +@maxLength(24) +@description('The base resource name.') +param baseName string = resourceGroup().name + +@description('The location of the resource. By default, this is the same as the resource group.') +param location string = resourceGroup().location + +@description('The tenant ID to which the application and resources belong.') +param tenantId string = '72f988bf-86f1-41af-91ab-2d7cd011db47' + +@description('The client OID to grant access to test resources.') +param testApplicationOid string + +resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { + name: baseName + location: location + sku: { + name: 'Standard_LRS' + } + kind: 'StorageV2' + properties: { + allowSharedKeyAccess: false + isHnsEnabled: true + } + + resource tableServices 'tableServices' = { + name: 'default' + resource fooTable 'tables' = { name: 'foo' } + resource barTable 'tables' = { name: 'bar' } + resource bazTable 'tables' = { name: 'baz' } + } +}