{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Best Practices - 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":"best-practices","__idx":0},"children":["Best Practices"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Guidelines and recommendations for building reliable, safe, and effective integrations with Outreach MCP."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"do","__idx":1},"children":["Do"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Let the agent discover schemas at runtime via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]},"; don't hardcode field lists"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Honor MCP annotation hints — confirm on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destructiveHint: true"]},", auto-approve ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["readOnlyHint: true"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Chain tools to compose workflows; don't reach for REST when MCP can handle it"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add user confirmation before destructive operations (delete, sequence removal)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log every tool call for audit"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external_id"]}," searches to bridge to your CRM or system of record"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"dont","__idx":2},"children":["Don't"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Hardcode tool inputs; schemas change between releases"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Call write tools in tight loops; batch where possible (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sequence_add_prospects"]}," accepts multiple IDs)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Assume a tool exists across all orgs; some are org-config dependent (e.g., custom fields)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Build polling loops on batch tools; check state once and use webhooks for long-running ops"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Bypass annotation-driven confirmation flows for \"convenience\" — that's how destructive bugs ship"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"getting-started-checklist","__idx":3},"children":["Getting Started Checklist"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Confirm your agent runtime supports MCP 2025-03-26 or later"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Get the Outreach MCP server URL (prod or staging)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Let your client perform DCR + OAuth on first connection"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Connect — tools auto-discover via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Test with a read tool (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["current_user"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["account_search"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Build prompts that describe ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["intent"]},", not tool calls"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Honor ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["destructiveHint: true"]}," with confirmation gates"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["✅ Log everything"]}]}]},"headings":[{"value":"Best Practices","id":"best-practices","depth":1},{"value":"Do","id":"do","depth":2},{"value":"Don't","id":"dont","depth":2},{"value":"Getting Started Checklist","id":"getting-started-checklist","depth":2}],"frontmatter":{"seo":{"title":"Best Practices - Outreach MCP | Outreach"}},"lastModified":"2026-05-26T08:58:43.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/mcp-server/best-practices","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}