Skip to content

Add 7 write tools (draft-safe) with opt-in gating#23

Open
daverad wants to merge 3 commits into
drewburchfield:mainfrom
daverad:claude/merge-upstream-help-scout-A6Nwr
Open

Add 7 write tools (draft-safe) with opt-in gating#23
daverad wants to merge 3 commits into
drewburchfield:mainfrom
daverad:claude/merge-upstream-help-scout-A6Nwr

Conversation

@daverad

@daverad daverad commented Apr 7, 2026

Copy link
Copy Markdown

Summary

Adds 7 write tools to the MCP server, building on patterns from #19 by @jcwatson11 — thank you for the excellent foundation! 🙏

This PR is rebased on top of the latest main (v1.7.0+), incorporating all recent upstream changes that landed after #19 was opened — including customer/org tools, PII redaction, navigator plugin, and bugfixes.

Key design choices:

  • Draft-by-default: createReply and createConversation create drafts, not sent messages
  • Opt-in gating: Write tools only load when HELPSCOUT_ENABLE_WRITES=true (off by default)
  • POST idempotency: No retries on create operations to prevent duplicates
  • Cache invalidation: LRU cache clears after write operations

Write Tools

Tool Description
createReply Draft reply on a conversation
createNote Internal note (agent-only)
updateConversationStatus Change status (active/pending/closed)
createConversation New conversation (draft by default)
assignConversation Assign to a team member
listUsers List agents (for assignments)
listMailboxes List mailboxes (for new conversations)

Safety

  • Write tools hidden unless HELPSCOUT_ENABLE_WRITES=true
  • createReply and createConversation default to draft mode
  • POST requests skip retry logic to prevent duplicate creates
  • 412/422 error handling for thread limits and validation

Merges 32 upstream commits from drewburchfield/help-scout-mcp-server
including customer/org tools, navigator plugin, and bugfixes.
Preserves all 7 write tools (createReply, createNote, updateConversationStatus,
createConversation, assignConversation, listUsers, listMailboxes) with
draft-by-default safety and HELPSCOUT_ENABLE_WRITES gating.

https://claude.ai/code/session_01FykTztFCP7qYsq89d9Wth8
devin-ai-integration[bot]

This comment was marked as resolved.

@daverad daverad changed the title merge upstream v1.7.0 + resolve conflicts preserving write tools Add 7 write tools (draft-safe) with opt-in gating Apr 7, 2026
claude added 2 commits April 7, 2026 19:41
POST operations (createReply, createNote, createConversation) are not
idempotent. If the server processes the request but returns a 5xx or
timeout, retrying would create duplicate emails/notes/conversations.
Pass retries: 0 config to executeWithRetry for POST method.

Addresses review feedback from drewburchfield#23.

https://claude.ai/code/session_01FykTztFCP7qYsq89d9Wth8
The regex required a numeric ID in the path, so POST /conversations
(no ID) never triggered cache invalidation. Broadened to match any
conversations endpoint.

Addresses review feedback from drewburchfield#23.

https://claude.ai/code/session_01FykTztFCP7qYsq89d9Wth8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants