Reducing ambiguity in Key Vault tool selection#608
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR updates Key Vault tool descriptions to reduce ambiguity during tool selection by providing more detailed and specific descriptions. The changes help improve distinction between similar operations (like "get" vs "list") by clearly stating their specific purposes, required parameters, return values, and what they should not be used for.
- Replaced verbose multi-line descriptions with concise single-line descriptions containing operational details
- Added explicit parameter requirements and return value information to tool descriptions
- Included negative descriptions (e.g., "Not for listing multiple secrets") to prevent incorrect tool selection
Reviewed Changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| SecretListCommand.cs | Updated description to emphasize listing/enumeration purpose and exclude single secret retrieval |
| SecretGetCommand.cs | Enhanced description with required parameters, return values, and exclusion of listing functionality |
| SecretCreateCommand.cs | Simplified description with required parameters and version handling clarification |
| KeyListCommand.cs | Updated to clarify listing purpose and exclude single key fetching |
| KeyGetCommand.cs | Enhanced with parameter requirements, return values, and exclusion of listing |
| KeyCreateCommand.cs | Detailed description with supported key types, parameters, and return values |
| CertificateListCommand.cs | Updated to emphasize enumeration and exclude single certificate fetching |
| CertificateImportCommand.cs | Condensed multi-line description to single line with all essential details |
| CertificateGetCommand.cs | Enhanced with parameters, return values, and operational exclusions |
| CertificateCreateCommand.cs | Simplified with parameter requirements and return value details |
| tools.json | Updated tool definitions to reflect new descriptions |
| prompts.json | Added additional test prompts for Key Vault operations |
| e2eTestPrompts.md | Added comprehensive test prompts for Key Vault tool validation |
|
I'm a bit confused here, doesn't the GIST show that most scores decreased with the description changes in this PR? |
@alzimmermsft The main takeaway from the gist is that the changes increased separation (reduced ambiguity) between the first and second choices for most Key Vault tools, even if scores decreased overall. The top choice remained the same in all cases. |
* Updated prompts and tools JSON files * Ran TDE * Updated KeyCreateCommand description * Updated KeyGetCommand description * Updated KeyListCommand description * Updated Key Vault command descriptions * Updated test prompts * Re-ran the evaluation tool * Updated CHANGELOG
What does this PR do?
Updates the descriptions for Key Vault tools to provide more details and help disambiguate during early tool selection.
These changes caused a better separation between the top choice and the second choice in most cases where both were close enough to be considered ambiguous. Even though most scores saw a slight drop, the top (and correct) choices remained unchanged.
A detailed analysis can be found in this gist.
GitHub issue number?
#252
Pre-merge Checklist
servers/Azure.Mcp.Server/CHANGELOG.mdand/orservers/Fabric.Mcp.Server/CHANGELOG.mdfor product changes (features, bug fixes, UI/UX, updated dependencies)servers/Azure.Mcp.Server/README.mdand/orservers/Fabric.Mcp.Server/README.mddocumentation/docs/azmcp-commands.mdand/or/docs/fabric-commands.mdToolDescriptionEvaluatorand obtained a score of0.4or more and a top 3 ranking for all related test prompts/docs/e2eTestPrompts.mdcrypto mining, spam, data exfiltration, etc.)/azp run mcp - pullrequest - liveto run Live Test Pipeline