Skip to content

Commit 04407cb

Browse files
Merge pull request #16 from drewburchfield/feature/v1.7.0-critical-bugfixes
feat: Customer & Organization tools + critical bug fixes (v1.7.0)
2 parents aec1f57 + d7c5d3d commit 04407cb

32 files changed

Lines changed: 1860 additions & 2938 deletions

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,11 @@ perf-reports/
8888
scripts/.import-progress.json
8989
scripts/*.state.json
9090

91+
# Braintrust session logs
92+
.braintrust/
93+
9194
# Sidecar projects
92-
meridian-sim/
95+
meridian-sim/
96+
97+
tests/
98+
*.tgz

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,5 @@ ENTRYPOINT ["node", "dist/index.js"]
5555
# Labels for metadata
5656
LABEL name="help-scout-mcp-server" \
5757
description="Help Scout MCP server for searching inboxes, conversations, and threads" \
58-
version="1.6.2" \
59-
maintainer="Drew Burchfield"
58+
version="1.7.0" \
59+
maintainer="Drew Burchfield"

README.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
[![npm version](https://badge.fury.io/js/help-scout-mcp-server.svg)](https://badge.fury.io/js/help-scout-mcp-server) [![Docker](https://img.shields.io/docker/v/drewburchfield/help-scout-mcp-server?logo=docker&label=docker)](https://hub.docker.com/r/drewburchfield/help-scout-mcp-server) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/drewburchfield/help-scout-mcp-server) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
44

5-
An [MCP server](https://modelcontextprotocol.io) that gives AI assistants direct access to your Help Scout inboxes, conversations, and threads. Search tickets, pull context, spot patterns, and get answers without leaving your editor or chat window.
5+
An [MCP server](https://modelcontextprotocol.io) that gives AI assistants direct access to your Help Scout inboxes, conversations, customers, organizations, and threads. Search tickets, pull customer and account context, spot patterns, and get answers without leaving your editor or chat window.
66

77
Built by a Help Scout customer who wanted to give his support team superpowers. If you handle customer conversations in Help Scout and want AI to help you work faster, this is for you.
88

99
## What You Can Do
1010

1111
- **Search conversations** by keyword, date range, status, tag, email domain, or ticket number
12+
- **Look up customers** by name, advanced query syntax, or exact email address
13+
- **Explore organizations** with direct customer and conversation traversal
1214
- **Pull full thread history** into context before drafting a reply
1315
- **Get conversation summaries** with the original customer message and latest staff response
1416
- **Monitor inbox activity** across multiple inboxes with a single query
@@ -74,7 +76,7 @@ docker run -e HELPSCOUT_APP_ID="your-app-id" \
7476
## Getting Your API Credentials
7577

7678
1. Go to **Help Scout** > **My Apps** > **Create Private App**
77-
2. Select at minimum: **Read** access to Mailboxes and Conversations
79+
2. Select at minimum: **Read** access to Mailboxes, Conversations, Customers, and Organizations
7880
3. Copy your **App ID** and **App Secret**
7981

8082
> Help Scout uses OAuth2 Client Credentials flow exclusively. Personal Access Tokens are not supported.
@@ -96,6 +98,14 @@ Alternative names `HELPSCOUT_CLIENT_ID` / `HELPSCOUT_CLIENT_SECRET` and legacy `
9698
| Find by keyword | `comprehensiveConversationSearch` | "Find conversations about billing errors" |
9799
| Look up a ticket number | `structuredConversationFilter` | "Show me ticket #42839" |
98100
| Complex filters | `advancedConversationSearch` | "All @acme.com conversations tagged urgent" |
101+
| Browse customers | `listCustomers` | "Show customers named Jane" |
102+
| Find a customer by email | `searchCustomersByEmail` | "Find customer jane@acme.com" |
103+
| Inspect a customer profile | `getCustomer` | "Open customer 12345" |
104+
| Pull customer contact channels | `getCustomerContacts` | "Show contact details for customer 12345" |
105+
| Browse organizations | `listOrganizations` | "Show the busiest organizations" |
106+
| Inspect an organization | `getOrganization` | "Open organization 456" |
107+
| List customers in an organization | `getOrganizationMembers` | "Who belongs to organization 456?" |
108+
| List organization conversations | `getOrganizationConversations` | "Show support history for organization 456" |
99109
| Quick conversation overview | `getConversationSummary` | "Summarize this conversation" |
100110
| Full message history | `getThreads` | "Show me the complete thread" |
101111
| Current server time | `getServerTime` | Used for time-relative searches |
@@ -130,6 +140,7 @@ Works with any [MCP-compatible](https://modelcontextprotocol.io) client:
130140
Built with compliance-minded teams in mind:
131141

132142
- **Optional PII redaction.** Message bodies are included by default. Set `REDACT_MESSAGE_CONTENT=true` to hide them for stricter compliance requirements.
143+
- **Customer and organization redaction.** Customer contact fields and organization contact/location fields are also redacted when message-content redaction is enabled.
133144
- **Secure authentication.** OAuth2 Client Credentials with automatic token refresh.
134145
- **Rate limit handling.** Automatic retry with exponential backoff on 429 responses.
135146
- **Scoped access.** Optional default inbox configuration limits what the AI can search.

helpscout-mcp-extension/manifest.json

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
"manifest_version": "0.3",
33
"name": "help-scout-mcp-server",
44
"display_name": "Help Scout MCP Server",
5-
"version": "1.6.2",
6-
"description": "Connect Claude and other AI assistants to your Help Scout data with enterprise-grade security and advanced search capabilities.",
7-
"long_description": "Connect your AI assistant to Help Scout for intelligent customer support analysis.\n\n**Search & Analysis:**\n• Advanced conversation search with query syntax\n• Multi-status search across active, pending, and closed\nBoolean queries with content and subject filtering\nConversation summaries and full thread retrieval\nDirect ticket lookup by number\n\n**Enterprise Security:**\n• OAuth2 Client Credentials authentication\n• Optional content redaction for privacy\n• Built-in caching and rate limiting\n• Automatic retry with exponential backoff",
5+
"version": "1.7.0",
6+
"description": "Connect Claude and other AI assistants to your Help Scout conversations, customers, organizations, and inbox data.",
7+
"long_description": "Connect your AI assistant to Help Scout for customer support investigation and account-level analysis.\n\n**Search & Analysis:**\n• Advanced conversation search with query syntax\n• Multi-status search across active, pending, and closed\nDirect ticket lookup by number\n• Customer lookup by name, email, and organization\nOrganization-level customer and conversation traversal\nConversation summaries and full thread retrieval\n\n**Enterprise Security:**\n• OAuth2 Client Credentials authentication\n• Optional content redaction for privacy\n• Built-in caching and rate limiting\n• Automatic retry with exponential backoff",
88
"author": {
99
"name": "Drew Burchfield",
1010
"url": "https://github.com/drewburchfield"
@@ -130,6 +130,38 @@
130130
{
131131
"name": "structuredConversationFilter",
132132
"description": "Structural filtering by assignedTo, folderId, customerIds, conversationNumber, or advanced sorting - use after discovering IDs from content search"
133+
},
134+
{
135+
"name": "getCustomer",
136+
"description": "Get a customer profile by ID with embedded contact details and address lookup"
137+
},
138+
{
139+
"name": "listCustomers",
140+
"description": "List customers by name or advanced query syntax using the v2 Customers API"
141+
},
142+
{
143+
"name": "searchCustomersByEmail",
144+
"description": "Search customers by email address using the cursor-based v3 Customers API"
145+
},
146+
{
147+
"name": "getCustomerContacts",
148+
"description": "Fetch customer contact sub-resources including emails, phones, chats, websites, social profiles, and address"
149+
},
150+
{
151+
"name": "getOrganization",
152+
"description": "Get an organization profile by ID with optional counts and properties"
153+
},
154+
{
155+
"name": "listOrganizations",
156+
"description": "List organizations with Help Scout's supported sort modes"
157+
},
158+
{
159+
"name": "getOrganizationMembers",
160+
"description": "List customers associated with an organization"
161+
},
162+
{
163+
"name": "getOrganizationConversations",
164+
"description": "List conversations associated with an organization"
133165
}
134166
],
135167
"prompts": [
@@ -160,4 +192,4 @@
160192
"oauth2"
161193
],
162194
"license": "MIT"
163-
}
195+
}

mcp.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "helpscout-search",
3-
"description": "Search-capable MCP server for Help Scout inboxes, conversations, and threads.",
4-
"version": "1.6.2",
3+
"description": "Search-capable MCP server for Help Scout inboxes, conversations, customers, organizations, and threads.",
4+
"version": "1.7.0",
55
"mcpVersion": "1.17.4",
66
"resources": [
77
"helpscout://inboxes",
@@ -18,7 +18,15 @@
1818
"listAllInboxes",
1919
"advancedConversationSearch",
2020
"comprehensiveConversationSearch",
21-
"structuredConversationFilter"
21+
"structuredConversationFilter",
22+
"getCustomer",
23+
"listCustomers",
24+
"searchCustomersByEmail",
25+
"getCustomerContacts",
26+
"getOrganization",
27+
"listOrganizations",
28+
"getOrganizationMembers",
29+
"getOrganizationConversations"
2230
],
2331
"prompts": [
2432
"search-last-7-days",

0 commit comments

Comments
 (0)