# Intercom MCP Server - Tools Summary

**Total Tools: 71**

All tool files have been successfully created under `src/tools/` with proper Zod validation schemas and MCP tool definitions.

## Tool Files (12)

### 1. contacts.ts (10 tools)
- `intercom_list_contacts` - List all contacts with cursor pagination
- `intercom_get_contact` - Retrieve a specific contact by ID
- `intercom_create_contact` - Create a new contact (user or lead)
- `intercom_update_contact` - Update an existing contact
- `intercom_delete_contact` - Permanently delete a contact
- `intercom_search_contacts` - Search contacts using filters
- `intercom_scroll_contacts` - Scroll through all contacts (large datasets)
- `intercom_merge_contacts` - Merge one contact into another
- `intercom_archive_contact` - Archive a contact
- `intercom_unarchive_contact` - Unarchive a contact

### 2. conversations.ts (11 tools)
- `intercom_list_conversations` - List all conversations
- `intercom_get_conversation` - Retrieve a specific conversation with parts
- `intercom_create_conversation` - Create a new conversation
- `intercom_search_conversations` - Search conversations using filters
- `intercom_reply_conversation` - Reply with comment or note
- `intercom_assign_conversation` - Assign to admin or team
- `intercom_close_conversation` - Close a conversation
- `intercom_open_conversation` - Reopen a conversation
- `intercom_snooze_conversation` - Snooze until specific time
- `intercom_tag_conversation` - Add a tag to conversation
- `intercom_untag_conversation` - Remove a tag from conversation

### 3. companies.ts (7 tools)
- `intercom_list_companies` - List all companies
- `intercom_get_company` - Retrieve a specific company
- `intercom_create_company` - Create a new company
- `intercom_update_company` - Update an existing company
- `intercom_scroll_companies` - Scroll through all companies
- `intercom_attach_contact_to_company` - Link contact to company
- `intercom_detach_contact_from_company` - Unlink contact from company

### 4. articles.ts (5 tools)
- `intercom_list_articles` - List all help center articles
- `intercom_get_article` - Retrieve a specific article
- `intercom_create_article` - Create a new article
- `intercom_update_article` - Update an existing article
- `intercom_delete_article` - Permanently delete an article

### 5. help-center.ts (10 tools)
- `intercom_list_help_centers` - List all help centers
- `intercom_get_help_center` - Retrieve a specific help center
- `intercom_list_collections` - List all collections
- `intercom_get_collection` - Retrieve a specific collection
- `intercom_create_collection` - Create a new collection
- `intercom_update_collection` - Update an existing collection
- `intercom_delete_collection` - Delete a collection
- `intercom_list_sections` - List sections in a collection
- `intercom_get_section` - Retrieve a specific section
- `intercom_create_section` - Create a new section

### 6. tickets.ts (7 tools)
- `intercom_list_tickets` - List all tickets
- `intercom_get_ticket` - Retrieve a specific ticket
- `intercom_create_ticket` - Create a new ticket
- `intercom_update_ticket` - Update an existing ticket
- `intercom_search_tickets` - Search tickets using filters
- `intercom_list_ticket_types` - List available ticket types
- `intercom_get_ticket_type` - Retrieve ticket type with attributes

### 7. tags.ts (8 tools)
- `intercom_list_tags` - List all tags
- `intercom_get_tag` - Retrieve a specific tag
- `intercom_create_tag` - Create a new tag
- `intercom_delete_tag` - Delete a tag
- `intercom_tag_contact` - Apply tag to contact
- `intercom_untag_contact` - Remove tag from contact
- `intercom_tag_company` - Apply tag to company
- `intercom_untag_company` - Remove tag from company

### 8. segments.ts (2 tools)
- `intercom_list_segments` - List all segments
- `intercom_get_segment` - Retrieve a specific segment

### 9. events.ts (2 tools)
- `intercom_submit_event` - Submit a data event for a user
- `intercom_list_event_summaries` - List event summaries for user/company

### 10. messages.ts (4 tools)
- `intercom_send_message` - Send in-app, email, or push message
- `intercom_send_inapp_message` - Send in-app message (shortcut)
- `intercom_send_email_message` - Send email message (shortcut)
- `intercom_send_push_message` - Send push notification (shortcut)

### 11. teams.ts (2 tools)
- `intercom_list_teams` - List all teams
- `intercom_get_team` - Retrieve a specific team

### 12. admins.ts (3 tools)
- `intercom_list_admins` - List all admins
- `intercom_get_admin` - Retrieve a specific admin
- `intercom_set_admin_away` - Set admin away mode status

## Technical Details

### Architecture
- Each tool file exports `getTools(client: IntercomClient)` function
- Returns array of objects with `definition` (MCP Tool) and `handler` (async function)
- All inputs validated using Zod schemas
- Consistent naming: `intercom_verb_noun`

### Index File
`src/tools/index.ts` provides:
- `getAllTools(client)` - Returns all 71 tools with handlers
- `getToolDefinitions(client)` - Returns only MCP tool definitions
- `getToolHandler(client, toolName)` - Returns specific tool handler

### Intercom API Features Covered
- ✅ Contacts (list, get, create, update, delete, search, scroll, merge, archive)
- ✅ Conversations (list, get, create, search, reply, assign, close, open, tag)
- ✅ Companies (list, get, create, update, scroll, attach/detach contacts)
- ✅ Articles (list, get, create, update, delete)
- ✅ Help Center (collections, sections)
- ✅ Tickets (list, get, create, update, search, types)
- ✅ Tags (list, get, create, delete, tag/untag contacts and companies)
- ✅ Segments (list, get)
- ✅ Events (submit, list summaries)
- ✅ Messages (in-app, email, push)
- ✅ Teams (list, get)
- ✅ Admins (list, get, away mode)

### TypeScript Compilation
✅ All files pass `npx tsc --noEmit` with no errors

## Usage Example

```typescript
import { getAllTools } from './tools/index.js';
import { IntercomClient } from './clients/intercom.js';

const client = new IntercomClient({ accessToken: 'your-token' });
const tools = getAllTools(client);

// Register tools with MCP server
tools.forEach(({ definition, handler }) => {
  server.registerTool(definition, handler);
});
```

## Next Steps

To integrate these tools into the main server:
1. Update `src/server.ts` to use `getAllTools()` from `./tools/index.js`
2. Replace the manual tool registration with the modular approach
3. Test each tool category with real Intercom API calls
