{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Tool Annotations - Outreach MCP | Outreach","description":"Outreach extensibility development and documentation portal","siteUrl":"https://developers.outreach.io","keywords":"outreach developer portal, api documentation, api reference docs, sdk documentation","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"tool-annotations","__idx":0},"children":["Tool Annotations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Per the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://modelcontextprotocol.io/specification/draft/basic/lifecycle"},"children":["MCP tool annotations spec"]},", every tool advertises hints to the client about its behavior. Clients use these hints to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Decide whether to auto-approve or prompt for confirmation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Color-code or group tools in the UI"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make orchestration decisions (e.g., retry-safe vs. not)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"annotation-values","__idx":1},"children":["Annotation Values"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Hint"},"children":["Hint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["readOnlyHint: true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tool only reads data; safe to auto-approve"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destructiveHint: true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tool may modify or destroy data; client should prompt"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotentHint: true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Repeated calls with same args have no additional effect"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openWorldHint: true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tool reaches external systems beyond the MCP server"]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All Outreach MCP tools have ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openWorldHint: true"]}," because they reach Outreach's backend. None operate in a closed local environment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-annotations-affect-client-behavior","__idx":2},"children":["How Annotations Affect Client Behavior"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Read-only tools"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["readOnlyHint: true"]},"): Most MCP clients auto-approve these calls without user interaction. All ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/mcp-server/tool-catalog#-read--discovery-21-tools"},"children":["Read & Discovery tools"]}," carry this annotation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Destructive tools"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destructiveHint: true"]},"): Most MCP clients prompt the user for confirmation before executing. This includes delete operations and sequence removal. Build your agent flows to expect this UX."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Idempotent tools"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotentHint: true"]},"): Safe to retry on transient failures. Clients may implement automatic retry logic for these tools."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Non-idempotent tools"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotentHint: false"]},"): Create operations and LLM-based tools (like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prepare_for_meeting"]},") are not idempotent — repeated calls produce new results each time."]}]},"headings":[{"value":"Tool Annotations","id":"tool-annotations","depth":1},{"value":"Annotation Values","id":"annotation-values","depth":2},{"value":"How Annotations Affect Client Behavior","id":"how-annotations-affect-client-behavior","depth":2}],"frontmatter":{"seo":{"title":"Tool Annotations - Outreach MCP | Outreach"}},"lastModified":"2026-05-26T08:58:43.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/mcp-server/tool-annotations","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}