# Freshdesk (oci · ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8)

MCP server for Freshdesk — tickets, contacts, companies, agents, groups, and knowledge base.

- Trust score: 42/100 (low)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-22

## Components

- oci · `ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8`: 42/100 (this document), [markdown](https://verifymcp.io/servers/wyre-technology-freshdesk-mcp/ghcr-io-wyre-technology-freshdesk-mcp-v1-0-8.md), [page](https://verifymcp.io/servers/wyre-technology-freshdesk-mcp/ghcr-io-wyre-technology-freshdesk-mcp-v1-0-8)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-22.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (NOASSERTION) isn't a recognized OSI-approved license.
  - Actively maintained (last published 8 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 86/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 4313 tokens (~65/item across 66 items; 66 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 88/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 63% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add wyre-technology-freshdesk-mcp -- docker run --rm -i ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8
```

### Codex

```bash
codex mcp add wyre-technology-freshdesk-mcp -- docker run --rm -i ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wyre-technology-freshdesk-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  wyre-technology-freshdesk-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8"]
```

### Other

```json
{
  "mcpServers": {
    "wyre-technology-freshdesk-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-technology/freshdesk-mcp:v1.0.8"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-22 (score 42, +5)

- [functional improvement] Stability: unverified → 0.30

### 2026-08-13 (score 37)

First indexed and scored.

## MCP tools (66)

### `freshdesk_navigate` (~147 tokens)

Discover Freshdesk tools by domain. Returns the tool names and descriptions for the selected domain (tickets, contacts, companies, etc.). All tools are callable at any time — this is a help/discovery aid, not a prerequisite.

Input parameters:

- `domain` (string, required): The domain to explore: - tickets: ticket CRUD, search, replies, notes, conversations - contacts: contact CRUD, search, merge, agent promotion, invites - companies: company CRUD, search, autocomplete…

### `freshdesk_status` (~24 tokens)

Check Freshdesk API connectivity (calls agents/me) and list available domains.

### `freshdesk_tickets_search` (~72 tokens)

Search tickets using the Freshdesk query language (e.g. "status:2 AND priority:4").

Input parameters:

- `page` (number): 1-based page number (search paginates up to 10 pages of 30)
- `query` (string, required): Freshdesk query string, without surrounding quotes

### `freshdesk_tickets_list` (~123 tokens)

List tickets (single page) with optional filters and pagination.

Input parameters:

- `company_id` (number): Filter by company ID
- `filter` (string): Predefined filter, e.g. "new_and_my_open", "watching", "spam", "deleted"
- `page` (number): 1-based page number
- `perPage` (number): Records per page (max 100)
- `requester_id` (number): Filter by requester contact ID
- `updated_since` (string): ISO-8601 timestamp; tickets updated since this time

### `freshdesk_tickets_get` (~52 tokens)

Get a single ticket by ID.

Input parameters:

- `id` (number, required): Ticket ID
- `include` (string): Comma-separated embeds, e.g. "conversations,requester,company,stats"

### `freshdesk_tickets_create` (~285 tokens)

Create a ticket. Provide subject, description, status, priority, and one of requester_id/email/phone.

Input parameters:

- `cc_emails` (array): CC emails
- `company_id` (number): Associated company ID
- `custom_fields` (object): Custom field values
- `description` (string, required): HTML ticket description
- `email` (string): Requester email (one of email/requester_id/phone required)
- `group_id` (number): Assign to group
- `name` (string): Requester name (required when creating via phone)
- `phone` (string): Requester phone
- `priority` (number, required): 1=Low, 2=Medium, 3=High, 4=Urgent
- `requester_id` (number): Requester contact ID
- `responder_id` (number): Assign to agent
- `source` (number): 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedback Widget, 10=Outbound Email
- `status` (number, required): 2=Open, 3=Pending, 4=Resolved, 5=Closed
- `subject` (string, required): Ticket subject
- `tags` (array): Tags
- `type` (string): Ticket type, e.g. "Question", "Incident", "Problem"

### `freshdesk_tickets_update` (~142 tokens)

Update a ticket (any subset of fields).

Input parameters:

- `company_id` (number)
- `custom_fields` (object)
- `description` (string)
- `group_id` (number)
- `id` (number, required): Ticket ID
- `priority` (number): 1=Low, 2=Medium, 3=High, 4=Urgent
- `responder_id` (number)
- `status` (number): 2=Open, 3=Pending, 4=Resolved, 5=Closed
- `subject` (string)
- `tags` (array)
- `type` (string)

### `freshdesk_tickets_reply` (~88 tokens)

Add a public reply to a ticket (visible to the requester).

Input parameters:

- `bcc_emails` (array)
- `body` (string, required): HTML body of the reply
- `cc_emails` (array)
- `from_email` (string): Reply-from support email
- `id` (number, required): Ticket ID
- `user_id` (number): Agent posting the reply

### `freshdesk_tickets_add_note` (~93 tokens)

Add a note to a ticket (private/internal by default).

Input parameters:

- `body` (string, required): HTML body of the note
- `id` (number, required): Ticket ID
- `notify_emails` (array): Agents to notify
- `private` (boolean): True (default) for an internal note, false for a note visible to the requester
- `user_id` (number): Agent posting the note

### `freshdesk_tickets_list_conversations` (~60 tokens)

List a ticket's conversations (replies and notes).

Input parameters:

- `id` (number, required): Ticket ID
- `page` (number): 1-based page number
- `perPage` (number): Records per page (max 100)

### `freshdesk_tickets_update_conversation` (~49 tokens)

Edit the body of an existing conversation (reply/note) by conversation ID.

Input parameters:

- `body` (string, required): New HTML body
- `conversation_id` (number, required): Conversation ID

### `freshdesk_tickets_delete` (~60 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Moves a ticket to trash, removing it from views and reports. This action cannot be undone via the API. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Ticket ID

### `freshdesk_tickets_delete_conversation` (~61 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes a conversation (reply or note) from a ticket. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `conversation_id` (number, required): Conversation ID

### `freshdesk_contacts_search` (~58 tokens)

Search contacts using the Freshdesk query language (e.g. "email:jane@acme.com").

Input parameters:

- `page` (number): 1-based page number
- `query` (string, required): Freshdesk query string, without surrounding quotes

### `freshdesk_contacts_list` (~98 tokens)

List contacts (single page) with optional filters and pagination.

Input parameters:

- `company_id` (number): Filter by company ID
- `email` (string): Filter by exact email
- `page` (number): 1-based page number
- `perPage` (number): Records per page (max 100)
- `state` (string): Filter by state, e.g. "verified", "unverified", "blocked", "deleted"

### `freshdesk_contacts_get` (~26 tokens)

Get a single contact by ID.

Input parameters:

- `id` (number, required): Contact ID

### `freshdesk_contacts_create` (~126 tokens)

Create a contact. Requires name plus one of email/phone/mobile/twitter_id.

Input parameters:

- `address` (string)
- `company_id` (number)
- `custom_fields` (object)
- `email` (string)
- `job_title` (string)
- `language` (string)
- `mobile` (string)
- `name` (string, required): Contact name
- `other_emails` (array)
- `phone` (string)
- `tags` (array)
- `time_zone` (string)
- `twitter_id` (string)

### `freshdesk_contacts_update` (~94 tokens)

Update a contact (any subset of fields).

Input parameters:

- `address` (string)
- `company_id` (number)
- `custom_fields` (object)
- `email` (string)
- `id` (number, required): Contact ID
- `job_title` (string)
- `mobile` (string)
- `name` (string)
- `phone` (string)
- `tags` (array)

### `freshdesk_contacts_autocomplete` (~33 tokens)

Lightweight contact lookup by name or email fragment.

Input parameters:

- `term` (string, required): Name or email fragment to match

### `freshdesk_contacts_make_agent` (~65 tokens)

⚠ HIGH-IMPACT. Promotes a contact to a full agent, granting them helpdesk access and consuming an agent seat. Reversible by deleting/downgrading the agent. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Contact ID

### `freshdesk_contacts_restore` (~27 tokens)

Restore a previously soft-deleted contact.

Input parameters:

- `id` (number, required): Contact ID

### `freshdesk_contacts_send_invite` (~30 tokens)

Send a portal activation invite to a contact.

Input parameters:

- `id` (number, required): Contact ID

### `freshdesk_contacts_merge` (~97 tokens)

⚠ HIGH-IMPACT. Merges one or more secondary contacts into a primary contact, folding their tickets and identities together. The secondary contacts are consumed by the merge. Confirm with the user before invoking.

Input parameters:

- `contact` (object): Optional identity fields to retain from the primary contact
- `primary_contact_id` (number, required): The contact that survives the merge
- `secondary_contact_ids` (array, required): Contacts folded into the primary

### `freshdesk_contacts_soft_delete` (~59 tokens)

⚠ HIGH-IMPACT. Soft-deletes (deactivates) a contact, removing them from active views. Reversible via freshdesk_contacts_restore. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Contact ID

### `freshdesk_contacts_hard_delete` (~86 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes a contact and their data. This cannot be undone. The contact must usually be soft-deleted first unless force is set. Confirm with the user before invoking.

Input parameters:

- `force` (boolean): Force-delete even if the contact is not soft-deleted first
- `id` (number, required): Contact ID

### `freshdesk_companies_search` (~47 tokens)

Search companies using the Freshdesk query language.

Input parameters:

- `page` (number): 1-based page number
- `query` (string, required): Freshdesk query string, without surrounding quotes

### `freshdesk_companies_list` (~48 tokens)

List companies (single page) with optional pagination.

Input parameters:

- `page` (number): 1-based page number
- `perPage` (number): Records per page (max 100)

### `freshdesk_companies_get` (~27 tokens)

Get a single company by ID.

Input parameters:

- `id` (number, required): Company ID

### `freshdesk_companies_create` (~102 tokens)

Create a company.

Input parameters:

- `account_tier` (string)
- `custom_fields` (object)
- `description` (string)
- `domains` (array): Email domains that map to this company
- `health_score` (string)
- `industry` (string)
- `name` (string, required): Company name (required, unique)
- `note` (string)
- `renewal_date` (string): ISO-8601 renewal date

### `freshdesk_companies_update` (~97 tokens)

Update a company (any subset of fields).

Input parameters:

- `account_tier` (string)
- `custom_fields` (object)
- `description` (string)
- `domains` (array)
- `health_score` (string)
- `id` (number, required): Company ID
- `industry` (string)
- `name` (string)
- `note` (string)
- `renewal_date` (string)

### `freshdesk_companies_autocomplete` (~31 tokens)

Lightweight company lookup by name fragment.

Input parameters:

- `name` (string, required): Company name fragment to match

### `freshdesk_companies_delete` (~58 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes a company. Associated contacts are detached but not deleted. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Company ID

### `freshdesk_agents_list` (~82 tokens)

List agents (single page) with optional filters and pagination.

Input parameters:

- `email` (string): Filter by exact email
- `page` (number): 1-based page number
- `perPage` (number): Records per page (max 100)
- `state` (string): Filter by state, e.g. "fulltime", "occasional"

### `freshdesk_agents_get` (~26 tokens)

Get a single agent by ID.

Input parameters:

- `id` (number, required): Agent ID

### `freshdesk_agents_me` (~26 tokens)

Get the agent that owns the current API key (connectivity / identity check).

### `freshdesk_agents_create` (~140 tokens)

Create an agent. Requires email and ticket_scope (1=Global, 2=Group, 3=Restricted).

Input parameters:

- `email` (string, required): Agent email (required)
- `group_ids` (array): Groups the agent belongs to
- `occasional` (boolean): True for occasional (part-time) agents
- `role_ids` (array): Roles assigned to the agent
- `signature` (string): HTML signature
- `ticket_scope` (number, required): 1=Global access, 2=Group access, 3=Restricted access
- `type` (string): Agent type, e.g. "support_agent", "field_agent"

### `freshdesk_agents_update` (~80 tokens)

Update an agent (any subset of fields).

Input parameters:

- `group_ids` (array)
- `id` (number, required): Agent ID
- `occasional` (boolean)
- `role_ids` (array)
- `signature` (string)
- `ticket_scope` (number): 1=Global, 2=Group, 3=Restricted

### `freshdesk_agents_delete` (~65 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Deletes an agent, downgrading them to a contact and freeing their agent seat. Their ticket history is preserved but agent access is removed. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Agent ID

### `freshdesk_groups_list` (~48 tokens)

List agent groups (single page) with optional pagination.

Input parameters:

- `page` (number): 1-based page number
- `perPage` (number): Records per page (max 100)

### `freshdesk_groups_get` (~26 tokens)

Get a single group by ID.

Input parameters:

- `id` (number, required): Group ID

### `freshdesk_groups_create` (~119 tokens)

Create an agent group.

Input parameters:

- `agent_ids` (array): Agents in the group
- `auto_ticket_assign` (boolean): Enable round-robin auto-assignment
- `business_hour_id` (number): Business-hours config to apply
- `description` (string)
- `escalate_to` (number): Agent ID to escalate unassigned tickets to
- `name` (string, required): Group name (required)
- `unassigned_for` (string): Escalation delay, e.g. "30m", "1h", "12h"

### `freshdesk_groups_update` (~86 tokens)

Update an agent group (any subset of fields).

Input parameters:

- `agent_ids` (array)
- `auto_ticket_assign` (boolean)
- `business_hour_id` (number)
- `description` (string)
- `escalate_to` (number)
- `id` (number, required): Group ID
- `name` (string)
- `unassigned_for` (string)

### `freshdesk_groups_delete` (~61 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes an agent group. Tickets assigned to the group are unassigned from it. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Group ID

### `freshdesk_solutions_categories_list` (~24 tokens)

List all solution categories (top level of the knowledge base).

### `freshdesk_solutions_categories_get` (~29 tokens)

Get a single solution category by ID.

Input parameters:

- `id` (number, required): Category ID

### `freshdesk_solutions_categories_create` (~52 tokens)

Create a solution category.

Input parameters:

- `description` (string)
- `name` (string, required): Category name (required)
- `visible_in_portals` (array): Portal IDs this category is visible in

### `freshdesk_solutions_categories_update` (~50 tokens)

Update a solution category.

Input parameters:

- `description` (string)
- `id` (number, required): Category ID
- `name` (string)
- `visible_in_portals` (array)

### `freshdesk_solutions_categories_delete` (~59 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes a solution category and all of its folders and articles. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Category ID

### `freshdesk_solutions_folders_list` (~30 tokens)

List a category's folders.

Input parameters:

- `category_id` (number, required): Parent category ID

### `freshdesk_solutions_folders_get` (~30 tokens)

Get a single solution folder by ID.

Input parameters:

- `id` (number, required): Folder ID

### `freshdesk_solutions_folders_create` (~92 tokens)

Create a folder under a category.

Input parameters:

- `category_id` (number, required): Parent category ID
- `company_ids` (array): Required when visibility is 4
- `description` (string)
- `name` (string, required): Folder name (required)
- `visibility` (number): 1=All, 2=Logged-in users, 3=Agents, 4=Selected companies

### `freshdesk_solutions_folders_update` (~56 tokens)

Update a solution folder.

Input parameters:

- `company_ids` (array)
- `description` (string)
- `id` (number, required): Folder ID
- `name` (string)
- `visibility` (number)

### `freshdesk_solutions_folders_delete` (~58 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes a solution folder and all of its articles. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Folder ID

### `freshdesk_solutions_articles_list` (~29 tokens)

List a folder's articles.

Input parameters:

- `folder_id` (number, required): Parent folder ID

### `freshdesk_solutions_articles_get` (~29 tokens)

Get a single solution article by ID.

Input parameters:

- `id` (number, required): Article ID

### `freshdesk_solutions_articles_create` (~103 tokens)

Create an article in a folder.

Input parameters:

- `description` (string, required): HTML article body (required)
- `folder_id` (number, required): Parent folder ID
- `seo_data` (object): SEO metadata
- `status` (number, required): 1=Draft, 2=Published
- `tags` (array)
- `title` (string, required): Article title (required)
- `type` (number): 1=Permanent, 2=Workaround

### `freshdesk_solutions_articles_update` (~78 tokens)

Update a solution article.

Input parameters:

- `description` (string)
- `id` (number, required): Article ID
- `seo_data` (object)
- `status` (number): 1=Draft, 2=Published
- `tags` (array)
- `title` (string)
- `type` (number)

### `freshdesk_solutions_articles_delete` (~52 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes a solution article. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `id` (number, required): Article ID

### `freshdesk_sla_list` (~16 tokens)

List all SLA policies.

### `freshdesk_sla_create` (~104 tokens)

Create an SLA policy. sla_target, applicable_to, and escalation are free-form objects matching the Freshdesk SLA schema.

Input parameters:

- `applicable_to` (object): Conditions for which tickets the policy applies to
- `description` (string)
- `escalation` (object): Escalation configuration for response/resolution breaches
- `name` (string, required): Policy name (required)
- `sla_target` (object): Per-priority response/resolution targets keyed by priority level

### `freshdesk_sla_update` (~63 tokens)

Update an SLA policy.

Input parameters:

- `applicable_to` (object)
- `description` (string)
- `escalation` (object)
- `id` (number, required): SLA policy ID
- `name` (string)
- `sla_target` (object)

### `freshdesk_business_hours_list` (~17 tokens)

List all business-hours configurations.

### `freshdesk_business_hours_get` (~31 tokens)

Get a single business-hours configuration by ID.

Input parameters:

- `id` (number, required): Business-hours configuration ID

### `freshdesk_canned_responses_list_folders` (~21 tokens)

List all canned-response folders.

### `freshdesk_canned_responses_get_folder` (~34 tokens)

Get a single canned-response folder (includes its responses).

Input parameters:

- `id` (number, required): Folder ID

### `freshdesk_canned_responses_list_responses` (~32 tokens)

List the canned responses inside a folder.

Input parameters:

- `id` (number, required): Folder ID

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/wyre-technology-freshdesk-mcp/ghcr-io-wyre-technology-freshdesk-mcp-v1-0-8#diagnostics

## Score history

- 2026-08-22: 42
- 2026-08-21: 37
- 2026-08-20: 37
- 2026-08-19: 37
- 2026-08-18: 37
- 2026-08-17: 37
- 2026-08-16: 37
- 2026-08-15: 37
- 2026-08-14: 37
- 2026-08-13: 37

## Links

- Repository: https://github.com/wyre-technology/freshdesk-mcp
- Changelog RSS feed: https://verifymcp.io/servers/wyre-technology-freshdesk-mcp/ghcr-io-wyre-technology-freshdesk-mcp-v1-0-8.xml
- Changelog JSON feed: https://verifymcp.io/servers/wyre-technology-freshdesk-mcp/ghcr-io-wyre-technology-freshdesk-mcp-v1-0-8.json
- HTML version of this page: https://verifymcp.io/servers/wyre-technology-freshdesk-mcp/ghcr-io-wyre-technology-freshdesk-mcp-v1-0-8
