From 1cadda06c04bf33559ca5662eda8b5ed745dd65f Mon Sep 17 00:00:00 2001 From: olaservo Date: Sun, 25 Jan 2026 07:03:21 -0700 Subject: [PATCH] feat(client): add MCP spec descriptions to annotation tooltips Enhance tooltips to include descriptions from the MCP specification: - Read-only: Tool does not modify its environment - Destructive: Tool may perform destructive updates (delete/overwrite data) - Idempotent: Calling repeatedly with same args has no additional effect - Open-world: Tool may interact with external entities beyond its local environment Co-Authored-By: Claude Opus 4.5 --- client/src/components/ToolsTab.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/client/src/components/ToolsTab.tsx b/client/src/components/ToolsTab.tsx index 659e3180..2128d599 100644 --- a/client/src/components/ToolsTab.tsx +++ b/client/src/components/ToolsTab.tsx @@ -85,39 +85,42 @@ const AnnotationBadges = ({ const idempotent = getValueAndImplied(annotations?.idempotentHint, false); const openWorld = getValueAndImplied(annotations?.openWorldHint, true); + // Descriptions from MCP spec const badges = [ { label: "Read-only", value: readOnly.value, implied: readOnly.implied, + description: "Tool does not modify its environment", }, { label: "Destructive", value: destructive.value, implied: destructive.implied, + description: + "Tool may perform destructive updates (delete/overwrite data)", }, { label: "Idempotent", value: idempotent.value, implied: idempotent.implied, + description: "Calling repeatedly with same args has no additional effect", }, { label: "Open-world", value: openWorld.value, implied: openWorld.implied, + description: + "Tool may interact with external entities beyond its local environment", }, ]; return (
- {badges.map(({ label, value, implied }) => ( + {badges.map(({ label, value, implied, description }) => (