Freshdesk Automation via Rube MCP
Automate Freshdesk customer support workflows including ticket management, contact and company operations, notes, replies, and ticket search through Composio's Freshdesk toolkit.
Toolkit docs: composio.dev/toolkits/freshdesk
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Freshdesk connection via
RUBE_MANAGE_CONNECTIONS with toolkit freshdesk
- Always call
RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLS responds
- Call
RUBE_MANAGE_CONNECTIONS with toolkit freshdesk
- If connection is not ACTIVE, follow the returned auth link to complete Freshdesk authentication
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Manage Tickets
When to use: User wants to create a new support ticket, update an existing ticket, or view ticket details.
Tool sequence:
FRESHDESK_SEARCH_CONTACTS - Find requester by email to get requester_id [Optional]
FRESHDESK_LIST_TICKET_FIELDS - Check available custom fields and statuses [Optional]
FRESHDESK_CREATE_TICKET - Create a new ticket with subject, description, requester info [Required]
FRESHDESK_UPDATE_TICKET - Modify ticket status, priority, assignee, or other fields [Optional]
FRESHDESK_VIEW_TICKET - Retrieve full ticket details by ID [Optional]
Key parameters for FRESHDESK_CREATE_TICKET:
subject: Ticket subject (required)
description: HTML content of the ticket (required)
email: Requester email (at least one requester identifier required)
requester_id: User ID of requester (alternative to email)
status: 2=Open, 3=Pending, 4=Resolved, 5=Closed (default 2)
priority: 1=Low, 2=Medium, 3=High, 4=Urgent (default 1)
source: 1=Email, 2=Portal, 3=Phone, 7=Chat (default 2)
responder_id: Agent ID to assign the ticket to
group_id: Group to assign the ticket to
tags: Array of tag strings
custom_fields: Object with cf_<field_name> keys
Pitfalls:
- At least one requester identifier is required:
requester_id, email, phone, facebook_id, twitter_id, or unique_external_id
- If
phone is provided without email, then name becomes mandatory
description supports HTML formatting
attachments field expects multipart/form-data format, not file paths or URLs
- Custom field keys must be prefixed with
cf_ (e.g., cf_reference_number)
- Status and priority are integers, not strings
2. Search and Filter Tickets
When to use: User wants to find tickets by status, priority, date range, agent, or custom fields.
Tool sequence:
FRESHDESK_GET_TICKETS - List tickets with simple filters (status, priority, agent) [Required]
FRESHDESK_GET_SEARCH - Advanced ticket search with query syntax [Required]
FRESHDESK_VIEW_TICKET - Get full details for specific tickets from results [Optional]
FRESHDESK_LIST_TICKET_FIELDS - Check available fields for search queries [Optional]
Key parameters for FRESHDESK_GET_TICKETS:
status: Filter by status integer (2=Open, 3=Pending, 4=Resolved, 5=Closed)
priority: Filter by priority integer (1-4)
agent_id: Filter by assigned agent
requester_id: Filter by requester
email: Filter by requester email
created_since: ISO 8601 timestamp
page / per_page: Pagination (default 30 per page)
sort_by / sort_order: Sort field and direction
Key parameters for FRESHDESK_GET_SEARCH:
query: Query string like "status:2 AND priority:3" or "(created_at:>'2024-01-01' AND tag:'urgent')"
page: Page number (1-10, max 300 total results)
Pitfalls:
FRESHDESK_GET_SEARCH query must be enclosed in double quotes
- Query string limited to 512 characters
- Maximum 10 pages (300 results) from search endpoints
- Date fields in queries use UTC format YYYY-MM-DD
- Use
null keyword to find tickets with empty fields (e.g., "agent_id:null")
FRESHDESK_LIST_ALL_TICKETS takes no parameters and returns all tickets (use GET_TICKETS for filtering)
3. Reply to and Add Notes on Tickets
When to use: User wants to send a reply to a customer, add internal notes, or view conversation history.
Tool sequence:
FRESHDESK_VIEW_TICKET - Verify ticket exists and check current state [Prerequisite]
FRESHDESK_REPLY_TO_TICKET - Send a public reply to the requester [Required]
FRESHDESK_ADD_NOTE_TO_TICKET - Add a private or public note [Required]
FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS - View all messages and notes on a ticket [Optional]
FRESHDESK_UPDATE_CONVERSATIONS - Edit an existing note [Optional]
Key parameters for FRESHDESK_REPLY_TO_TICKET:
ticket_id: Ticket ID (integer, required)
body: Reply content, supports HTML (required)
cc_emails / bcc_emails: Additional recipients (max 50 total across to/cc/bcc)
from_email: Override sender email if multiple support emails configured
user_id: Agent ID to reply on behalf of
Key parameters for FRESHDESK_ADD_NOTE_TO_TICKET:
ticket_id: Ticket ID (integer, required)
body: Note content, supports HTML (required)
private: true for agent-only visibility, false for public (default true)
notify_emails: Only accepts agent email addresses, not external contacts
Pitfalls:
- There are two reply tools:
FRESHDESK_REPLY_TO_TICKET (more features) and FRESHDESK_REPLY_TICKET (simpler); both work
FRESHDESK_ADD_NOTE_TO_TICKET defaults to private (agent-only); set private: false for public notes
notify_emails in notes only accepts agent emails, not customer emails
- Only notes can be edited via
FRESHDESK_UPDATE_CONVERSATIONS; incoming replies cannot be edited
4. Manage Contacts and Companies
When to use: User wants to create, search, or manage customer contacts and company records.
Tool sequence:
FRESHDESK_SEARCH_CONTACTS - Search contacts by email, phone, or company [Required]
FRESHDESK_GET_CONTACTS - List contacts with filters [Optional]
FRESHDESK_IMPORT_CONTACT - Bulk import contacts from CSV [Optional]
FRESHDESK_SEARCH_COMPANIES - Search companies by custom fields [Required]
FRESHDESK_GET_COMPANIES - List all companies [Optional]
FRESHDESK_CREATE_COMPANIES - Create a new company [Optional]
FRESHDESK_UPDATE_COMPANIES - Update company details [Optional]
FRESHDESK_LIST_COMPANY_FIELDS - Check available company fields [Optional]
Key parameters for FRESHDESK_SEARCH_CONTACTS:
query: Search string like "email:'user@example.com'" (required)
page: Pagination (1-10, max 30 per page)
Key parameters for FRESHDESK_CREATE_COMPANIES:
name: Company name (required)
domains: Array of domain strings for auto-association with contacts
health_score: "Happy", "Doing okay", or "At risk"
account_tier: "Basic", "Premium", or "Enterprise"
industry: Standard industry classification
Pitfalls:
FRESHDESK_SEARCH_CONTACTS requires exact matches; partial/regex searches are not supported
FRESHDESK_SEARCH_COMPANIES cannot search by standard name field; use custom fields or created_at
- Company custom fields do NOT use the
cf_ prefix (unlike ticket custom fields)
domains on companies enables automatic contact-to-company association by email domain
- Contact search queries require string values in single quotes inside double-quoted query
Common Patterns
ID Resolution
Always resolve display values to IDs before operations:
- Requester email -> requester_id:
FRESHDESK_SEARCH_CONTACTS with "email:'user@example.com'"
- Company name -> company_id:
FRESHDESK_GET_COMPANIES and match by name (search by name not supported)
- Agent name -> agent_id: Not directly available; use agent_id from ticket responses or admin configuration
Pagination
Freshdesk uses page-based pagination:
FRESHDESK_GET_TICKETS: page (starting at 1) and per_page (max 100)
FRESHDESK_GET_SEARCH: page (1-10, 30 results per page, max 300 total)
FRESHDESK_SEARCH_CONTACTS: page (1-10, 30 per page)
FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS: page and per_page (max 100)
Known Pitfalls
ID Formats
- Ticket IDs, contact IDs, company IDs, agent IDs, and group IDs are all integers
- There are no string-based IDs in Freshdesk
Rate Limits
- Freshdesk enforces per-account API rate limits based on plan tier
- Bulk operations should be paced to avoid 429 responses
- Search endpoints are limited to 300 total results (10 pages of 30)
Parameter Quirks
- Status values: 2=Open, 3=Pending, 4=Resolved, 5=Closed (integers, not strings)
- Priority values: 1=Low, 2=Medium, 3=High, 4=Urgent (integers, not strings)
- Source values: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedback Widget, 10=Outbound Email
- Ticket custom fields use
cf_ prefix; company custom fields do NOT
description in tickets supports HTML formatting
- Search query strings must be in double quotes with string values in single quotes
FRESHDESK_LIST_ALL_TICKETS returns all tickets with no filter parameters
Response Structure
- Ticket details include nested objects for requester, assignee, and conversation data
- Search results are paginated with a maximum of 300 results across 10 pages
- Conversation lists include both replies and notes in chronological order
Quick Reference
| Task |
Tool Slug |
Key Params |
| Create ticket |
FRESHDESK_CREATE_TICKET |
subject, description, email, priority |
| Update ticket |
FRESHDESK_UPDATE_TICKET |
ticket_id, status, priority |
| View ticket |
FRESHDESK_VIEW_TICKET |
ticket_id |
| List tickets |
FRESHDESK_GET_TICKETS |
status, priority, page, per_page |
| List all tickets |
FRESHDESK_LIST_ALL_TICKETS |
(none) |
| Search tickets |
FRESHDESK_GET_SEARCH |
query, page |
| Reply to ticket |
FRESHDESK_REPLY_TO_TICKET |
ticket_id, body, cc_emails |
| Reply (simple) |
FRESHDESK_REPLY_TICKET |
ticket_id, body |
| Add note |
FRESHDESK_ADD_NOTE_TO_TICKET |
ticket_id, body, private |
| List conversations |
FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS |
ticket_id, page |
| Update note |
FRESHDESK_UPDATE_CONVERSATIONS |
conversation_id, body |
| Search contacts |
FRESHDESK_SEARCH_CONTACTS |
query, page |
| List contacts |
FRESHDESK_GET_CONTACTS |
email, company_id, page |
| Import contacts |
FRESHDESK_IMPORT_CONTACT |
file, name_column_index, email_column_index |
| Create company |
FRESHDESK_CREATE_COMPANIES |
name, domains, industry |
| Update company |
FRESHDESK_UPDATE_COMPANIES |
company_id, name, domains |
| Search companies |
FRESHDESK_SEARCH_COMPANIES |
query, page |
| List companies |
FRESHDESK_GET_COMPANIES |
page |
| List ticket fields |
FRESHDESK_LIST_TICKET_FIELDS |
(none) |
| List company fields |
FRESHDESK_LIST_COMPANY_FIELDS |
(none) |
Powered by Composio
Source: davepoon/buildwithclaude → plugins/all-skills/skills/freshdesk-automation/SKILL.md
1---2name: freshdesk-automation-23description: Automate Freshdesk helpdesk operations including tickets, contacts, companies, notes, and replies via Rube MCP (Composio). Always search tools first for current schemas.4---567# Freshdesk Automation via Rube MCP89Automate Freshdesk customer support workflows including ticket management, contact and company operations, notes, replies, and ticket search through Composio's Freshdesk toolkit.1011**Toolkit docs**: [composio.dev/toolkits/freshdesk](https://composio.dev/toolkits/freshdesk)1213## Prerequisites1415- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)16- Active Freshdesk connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `freshdesk`17- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1819## Setup2021**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2223241. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds252. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `freshdesk`263. If connection is not ACTIVE, follow the returned auth link to complete Freshdesk authentication274. Confirm connection status shows ACTIVE before running any workflows2829## Core Workflows3031### 1. Create and Manage Tickets3233**When to use**: User wants to create a new support ticket, update an existing ticket, or view ticket details.3435**Tool sequence**:361. `FRESHDESK_SEARCH_CONTACTS` - Find requester by email to get requester_id [Optional]372. `FRESHDESK_LIST_TICKET_FIELDS` - Check available custom fields and statuses [Optional]383. `FRESHDESK_CREATE_TICKET` - Create a new ticket with subject, description, requester info [Required]394. `FRESHDESK_UPDATE_TICKET` - Modify ticket status, priority, assignee, or other fields [Optional]405. `FRESHDESK_VIEW_TICKET` - Retrieve full ticket details by ID [Optional]4142**Key parameters for FRESHDESK_CREATE_TICKET**:43- `subject`: Ticket subject (required)44- `description`: HTML content of the ticket (required)45- `email`: Requester email (at least one requester identifier required)46- `requester_id`: User ID of requester (alternative to email)47- `status`: 2=Open, 3=Pending, 4=Resolved, 5=Closed (default 2)48- `priority`: 1=Low, 2=Medium, 3=High, 4=Urgent (default 1)49- `source`: 1=Email, 2=Portal, 3=Phone, 7=Chat (default 2)50- `responder_id`: Agent ID to assign the ticket to51- `group_id`: Group to assign the ticket to52- `tags`: Array of tag strings53- `custom_fields`: Object with `cf_<field_name>` keys5455**Pitfalls**:56- At least one requester identifier is required: `requester_id`, `email`, `phone`, `facebook_id`, `twitter_id`, or `unique_external_id`57- If `phone` is provided without `email`, then `name` becomes mandatory58- `description` supports HTML formatting59- `attachments` field expects multipart/form-data format, not file paths or URLs60- Custom field keys must be prefixed with `cf_` (e.g., `cf_reference_number`)61- Status and priority are integers, not strings6263### 2. Search and Filter Tickets6465**When to use**: User wants to find tickets by status, priority, date range, agent, or custom fields.6667**Tool sequence**:681. `FRESHDESK_GET_TICKETS` - List tickets with simple filters (status, priority, agent) [Required]692. `FRESHDESK_GET_SEARCH` - Advanced ticket search with query syntax [Required]703. `FRESHDESK_VIEW_TICKET` - Get full details for specific tickets from results [Optional]714. `FRESHDESK_LIST_TICKET_FIELDS` - Check available fields for search queries [Optional]7273**Key parameters for FRESHDESK_GET_TICKETS**:74- `status`: Filter by status integer (2=Open, 3=Pending, 4=Resolved, 5=Closed)75- `priority`: Filter by priority integer (1-4)76- `agent_id`: Filter by assigned agent77- `requester_id`: Filter by requester78- `email`: Filter by requester email79- `created_since`: ISO 8601 timestamp80- `page` / `per_page`: Pagination (default 30 per page)81- `sort_by` / `sort_order`: Sort field and direction8283**Key parameters for FRESHDESK_GET_SEARCH**:84- `query`: Query string like `"status:2 AND priority:3"` or `"(created_at:>'2024-01-01' AND tag:'urgent')"`85- `page`: Page number (1-10, max 300 total results)8687**Pitfalls**:88- `FRESHDESK_GET_SEARCH` query must be enclosed in double quotes89- Query string limited to 512 characters90- Maximum 10 pages (300 results) from search endpoints91- Date fields in queries use UTC format YYYY-MM-DD92- Use `null` keyword to find tickets with empty fields (e.g., `"agent_id:null"`)93- `FRESHDESK_LIST_ALL_TICKETS` takes no parameters and returns all tickets (use GET_TICKETS for filtering)9495### 3. Reply to and Add Notes on Tickets9697**When to use**: User wants to send a reply to a customer, add internal notes, or view conversation history.9899**Tool sequence**:1001. `FRESHDESK_VIEW_TICKET` - Verify ticket exists and check current state [Prerequisite]1012. `FRESHDESK_REPLY_TO_TICKET` - Send a public reply to the requester [Required]1023. `FRESHDESK_ADD_NOTE_TO_TICKET` - Add a private or public note [Required]1034. `FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS` - View all messages and notes on a ticket [Optional]1045. `FRESHDESK_UPDATE_CONVERSATIONS` - Edit an existing note [Optional]105106**Key parameters for FRESHDESK_REPLY_TO_TICKET**:107- `ticket_id`: Ticket ID (integer, required)108- `body`: Reply content, supports HTML (required)109- `cc_emails` / `bcc_emails`: Additional recipients (max 50 total across to/cc/bcc)110- `from_email`: Override sender email if multiple support emails configured111- `user_id`: Agent ID to reply on behalf of112113**Key parameters for FRESHDESK_ADD_NOTE_TO_TICKET**:114- `ticket_id`: Ticket ID (integer, required)115- `body`: Note content, supports HTML (required)116- `private`: true for agent-only visibility, false for public (default true)117- `notify_emails`: Only accepts agent email addresses, not external contacts118119**Pitfalls**:120- There are two reply tools: `FRESHDESK_REPLY_TO_TICKET` (more features) and `FRESHDESK_REPLY_TICKET` (simpler); both work121- `FRESHDESK_ADD_NOTE_TO_TICKET` defaults to private (agent-only); set `private: false` for public notes122- `notify_emails` in notes only accepts agent emails, not customer emails123- Only notes can be edited via `FRESHDESK_UPDATE_CONVERSATIONS`; incoming replies cannot be edited124125### 4. Manage Contacts and Companies126127**When to use**: User wants to create, search, or manage customer contacts and company records.128129**Tool sequence**:1301. `FRESHDESK_SEARCH_CONTACTS` - Search contacts by email, phone, or company [Required]1312. `FRESHDESK_GET_CONTACTS` - List contacts with filters [Optional]1323. `FRESHDESK_IMPORT_CONTACT` - Bulk import contacts from CSV [Optional]1334. `FRESHDESK_SEARCH_COMPANIES` - Search companies by custom fields [Required]1345. `FRESHDESK_GET_COMPANIES` - List all companies [Optional]1356. `FRESHDESK_CREATE_COMPANIES` - Create a new company [Optional]1367. `FRESHDESK_UPDATE_COMPANIES` - Update company details [Optional]1378. `FRESHDESK_LIST_COMPANY_FIELDS` - Check available company fields [Optional]138139**Key parameters for FRESHDESK_SEARCH_CONTACTS**:140- `query`: Search string like `"email:'user@example.com'"` (required)141- `page`: Pagination (1-10, max 30 per page)142143**Key parameters for FRESHDESK_CREATE_COMPANIES**:144- `name`: Company name (required)145- `domains`: Array of domain strings for auto-association with contacts146- `health_score`: "Happy", "Doing okay", or "At risk"147- `account_tier`: "Basic", "Premium", or "Enterprise"148- `industry`: Standard industry classification149150**Pitfalls**:151- `FRESHDESK_SEARCH_CONTACTS` requires exact matches; partial/regex searches are not supported152- `FRESHDESK_SEARCH_COMPANIES` cannot search by standard `name` field; use custom fields or `created_at`153- Company custom fields do NOT use the `cf_` prefix (unlike ticket custom fields)154- `domains` on companies enables automatic contact-to-company association by email domain155- Contact search queries require string values in single quotes inside double-quoted query156157## Common Patterns158159### ID Resolution160Always resolve display values to IDs before operations:161- **Requester email -> requester_id**: `FRESHDESK_SEARCH_CONTACTS` with `"email:'user@example.com'"`162- **Company name -> company_id**: `FRESHDESK_GET_COMPANIES` and match by name (search by name not supported)163- **Agent name -> agent_id**: Not directly available; use agent_id from ticket responses or admin configuration164165### Pagination166Freshdesk uses page-based pagination:167- `FRESHDESK_GET_TICKETS`: `page` (starting at 1) and `per_page` (max 100)168- `FRESHDESK_GET_SEARCH`: `page` (1-10, 30 results per page, max 300 total)169- `FRESHDESK_SEARCH_CONTACTS`: `page` (1-10, 30 per page)170- `FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS`: `page` and `per_page` (max 100)171172## Known Pitfalls173174### ID Formats175- Ticket IDs, contact IDs, company IDs, agent IDs, and group IDs are all integers176- There are no string-based IDs in Freshdesk177178### Rate Limits179- Freshdesk enforces per-account API rate limits based on plan tier180- Bulk operations should be paced to avoid 429 responses181- Search endpoints are limited to 300 total results (10 pages of 30)182183### Parameter Quirks184- Status values: 2=Open, 3=Pending, 4=Resolved, 5=Closed (integers, not strings)185- Priority values: 1=Low, 2=Medium, 3=High, 4=Urgent (integers, not strings)186- Source values: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedback Widget, 10=Outbound Email187- Ticket custom fields use `cf_` prefix; company custom fields do NOT188- `description` in tickets supports HTML formatting189- Search query strings must be in double quotes with string values in single quotes190- `FRESHDESK_LIST_ALL_TICKETS` returns all tickets with no filter parameters191192### Response Structure193- Ticket details include nested objects for requester, assignee, and conversation data194- Search results are paginated with a maximum of 300 results across 10 pages195- Conversation lists include both replies and notes in chronological order196197## Quick Reference198199| Task | Tool Slug | Key Params |200|------|-----------|------------|201| Create ticket | `FRESHDESK_CREATE_TICKET` | `subject`, `description`, `email`, `priority` |202| Update ticket | `FRESHDESK_UPDATE_TICKET` | `ticket_id`, `status`, `priority` |203| View ticket | `FRESHDESK_VIEW_TICKET` | `ticket_id` |204| List tickets | `FRESHDESK_GET_TICKETS` | `status`, `priority`, `page`, `per_page` |205| List all tickets | `FRESHDESK_LIST_ALL_TICKETS` | (none) |206| Search tickets | `FRESHDESK_GET_SEARCH` | `query`, `page` |207| Reply to ticket | `FRESHDESK_REPLY_TO_TICKET` | `ticket_id`, `body`, `cc_emails` |208| Reply (simple) | `FRESHDESK_REPLY_TICKET` | `ticket_id`, `body` |209| Add note | `FRESHDESK_ADD_NOTE_TO_TICKET` | `ticket_id`, `body`, `private` |210| List conversations | `FRESHDESK_LIST_ALL_TICKET_CONVERSATIONS` | `ticket_id`, `page` |211| Update note | `FRESHDESK_UPDATE_CONVERSATIONS` | `conversation_id`, `body` |212| Search contacts | `FRESHDESK_SEARCH_CONTACTS` | `query`, `page` |213| List contacts | `FRESHDESK_GET_CONTACTS` | `email`, `company_id`, `page` |214| Import contacts | `FRESHDESK_IMPORT_CONTACT` | `file`, `name_column_index`, `email_column_index` |215| Create company | `FRESHDESK_CREATE_COMPANIES` | `name`, `domains`, `industry` |216| Update company | `FRESHDESK_UPDATE_COMPANIES` | `company_id`, `name`, `domains` |217| Search companies | `FRESHDESK_SEARCH_COMPANIES` | `query`, `page` |218| List companies | `FRESHDESK_GET_COMPANIES` | `page` |219| List ticket fields | `FRESHDESK_LIST_TICKET_FIELDS` | (none) |220| List company fields | `FRESHDESK_LIST_COMPANY_FIELDS` | (none) |221222---223*Powered by [Composio](https://composio.dev)*224225---226227**Source:** [`davepoon/buildwithclaude`](https://github.com/davepoon/buildwithclaude) → `plugins/all-skills/skills/freshdesk-automation/SKILL.md`