# Best Practices

Guidelines and recommendations for building reliable, safe, and effective integrations with Outreach MCP.

## Do

- Let the agent discover schemas at runtime via `tools/list`; don't hardcode field lists
- Honor MCP annotation hints — confirm on `destructiveHint: true`, auto-approve `readOnlyHint: true`
- Chain tools to compose workflows; don't reach for REST when MCP can handle it
- Add user confirmation before destructive operations (delete, sequence removal)
- Log every tool call for audit
- Use `external_id` searches to bridge to your CRM or system of record


## Don't

- Hardcode tool inputs; schemas change between releases
- Call write tools in tight loops; batch where possible (`sequence_add_prospects` accepts multiple IDs)
- Assume a tool exists across all orgs; some are org-config dependent (e.g., custom fields)
- Build polling loops on batch tools; check state once and use webhooks for long-running ops
- Bypass annotation-driven confirmation flows for "convenience" — that's how destructive bugs ship


## Getting Started Checklist

1. ✅ Confirm your agent runtime supports MCP 2025-03-26 or later
2. ✅ Get the Outreach MCP server URL (prod or staging)
3. ✅ Let your client perform DCR + OAuth on first connection
4. ✅ Connect — tools auto-discover via `tools/list`
5. ✅ Test with a read tool (`current_user` or `account_search`)
6. ✅ Build prompts that describe *intent*, not tool calls
7. ✅ Honor `destructiveHint: true` with confirmation gates
8. ✅ Log everything