# How to connect Freshdesk to Hermes Agent (paste one key, 178 tools)

> Connect Freshdesk to Hermes Agent with ClawLink: paste your Freshdesk key once and 178 tools work from chat. No MCP server to run, nothing stored on your machine. Rate-limit and 403 fixes included.

Web version: https://claw-link.dev/hermes/freshdesk

Most guides for giving Hermes Agent Freshdesk access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Freshdesk setup: pair once in the browser and your always-on Hermes agent can act on Freshdesk for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to Freshdesk.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect Freshdesk** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect freshdesk  # connect Freshdesk (browser OAuth)
npx -y @useclawlink/cli actions freshdesk  # list available actions
npx -y @useclawlink/cli run freshdesk <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect Freshdesk in the [ClawLink dashboard](https://claw-link.dev/dashboard) — paste your Freshdesk API key once.

Verify the connection by asking Hermes:

> Search my open tickets with freshdesk_get_search for status 2 (open), and for each one tell me the subject, requester, and how long it has been open. Do not add notes or change anything.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once Freshdesk is connected in the dashboard, that agent calls the same 178 Freshdesk tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## Freshdesk MCP for Hermes

Looking for a Freshdesk MCP server for Hermes Agent? ClawLink connects Freshdesk to Hermes Agent and exposes 178 Freshdesk tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw Freshdesk integration](https://claw-link.dev/openclaw/freshdesk) runs on the same hosted Freshdesk provider and the same 178 tools; OpenClaw installs ClawLink through a ClawHub skill instead of the Hermes pairing commands.

Freshdesk authenticates with an API key, so you do paste one: generate it in your Freshdesk profile, enter it once on the hosted setup page, and the 178 tools below are callable from Hermes chat. The description search results use for this flow, "hosted OAuth alternative", is a looser way of saying the same thing: the key lives server-side, no MCP server runs on your machine, no config file is edited, and nothing is stored on the machine you happen to be using. Two things make this route distinctive right now. Freshworks's own official Freshdesk MCP server is still an early-access Enterprise product and still requires an API key, so the "no MCP server to run" framing is not available from them. And searches for "Freshdesk AI agent without API key" are answered with Freshworks's in-product AI Agent Studio, which is a native bot, not an external agent; this integration is the external-agent route with the key held where no prompt can leak it.

## What the Hermes Agent Freshdesk integration can do

178 Freshdesk tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 178.

### 30 of 178 Freshdesk tools for Hermes

| Tool | What it does |
|---|---|
| **Add note to ticket** `freshdesk_add_note_to_ticket` | Add a private or public note to a ticket |
| **Add ticket user access** `freshdesk_add_ticket_user_access` | Add agent access to a specific ticket |
| **Add watcher** `freshdesk_add_watcher` | Add the authenticated user as a watcher to a ticket |
| **Bulk update tickets** `freshdesk_bulk_update_tickets` | Update multiple tickets simultaneously in bulk |
| **Create admin group** `freshdesk_create_admin_group` | Create a new admin-level support agent group |
| **Create agents** `freshdesk_create_agents` | Create multiple agents in Freshdesk |
| **Create canned response** `freshdesk_create_canned_response` | Create a new canned response in Freshdesk |
| **Create companies** `freshdesk_create_companies` | Create a new company in Freshdesk |
| **Create contact** `freshdesk_create_contact` | Create a new contact in Freshdesk |
| **Currently authenticated agent** `freshdesk_currently_authenticated_agent` | Retrieve profile information for the currently authenticated agent |
| **Get account** `freshdesk_get_account` | View Freshdesk account information |
| **Get agent** `freshdesk_get_agent` | Retrieve detailed information about a specific agent by ID |
| **Get agent availability** `freshdesk_get_agent_availability` | Retrieve availability information for a specific agent |
| **Get agents** `freshdesk_get_agents` | Search for agents using autocomplete functionality in Freshdesk |
| **Get business hours** `freshdesk_get_business_hours` | Retrieves all business hours configurations from Freshdesk |
| **Get canned response folders** `freshdesk_get_canned_response_folders` | Retrieve all canned response folders from Freshdesk |
| **Get companies** `freshdesk_get_companies` | Retrieve all companies from a Freshdesk account with pagination support |
| **Get company** `freshdesk_get_company` | Retrieve detailed information about a specific company by ID |
| **Get company fields** `freshdesk_get_company_fields` | Retrieve all company fields configured in Freshdesk |
| **Get contact** `freshdesk_get_contact` | Retrieve detailed information about a specific contact by ID |
| **Get contact fields** `freshdesk_get_contact_fields` | Retrieve all contact fields configured in Freshdesk |
| **Get contacts** `freshdesk_get_contacts` | Retrieve all contacts from a Freshdesk account |
| **Get discussion category** `freshdesk_get_discussion_category` | View details of a specific forum category in Freshdesk |
| **Get discussion topic** `freshdesk_get_discussion_topic` | Retrieve detailed information about a specific discussion topic by ID |
| **Get email mailbox** `freshdesk_get_email_mailbox` | Retrieve detailed information about a specific email mailbox by ID |
| **Get folder responses** `freshdesk_get_folder_responses` | Retrieve all canned responses within a specific folder in Freshdesk |
| **Get imported contacts** `freshdesk_get_imported_contacts` | Retrieve details of all contact import operations in Freshdesk |
| **Get job** `freshdesk_get_job` | View the status of a bulk job operation |
| **Get scenario automations json** `freshdesk_get_scenario_automations_json` | List all scenario-based automations in Freshdesk |
| **Get search** `freshdesk_get_search` | Search and filter tickets in Freshdesk using flexible query syntax |

## Example prompts

**Inbox triage**

> Search my open tickets with freshdesk_get_search for status 2 (open), and for each one tell me the subject, requester, and how long it has been open. Do not add notes or change anything.

**Add context to a ticket**

> For ticket \<ticket id>, add a note with freshdesk_add_note_to_ticket summarizing this thread: \<paste thread>. Mark the note as private unless I say otherwise.

**Bulk triage with approval**

> Show me the tickets that match \<criteria> using freshdesk_get_search, then draft the bulk update with freshdesk_bulk_update_tickets: new group, status, and the note to append. Do not execute it until I approve the draft.

**Watch a priority ticket**

> Add the current user as a watcher on ticket \<ticket id> with freshdesk_add_watcher, then tell me who the current assignee is and when the ticket was last updated.

## How the Freshdesk tools behave

Details that decide whether a Freshdesk prompt is a quick answer or a customer-visible write.

- **Notes are customer-visible depending on your settings.** `freshdesk_add_note_to_ticket` supports a private flag; say "private note" in the prompt or the agent may pick the wrong default.
- **Search is the entry point.** `freshdesk_get_search` is how tickets and contacts are found by anything other than a known id, and it is the tool to call before an id-based tool 403s on an invented id.
- **Bulk updates are one call with wide effect.** `freshdesk_bulk_update_tickets` changes many tickets at once, which is powerful and worth an explicit approval step in the prompt.
- **Agents and availability are readable.** `freshdesk_get_agents` and `freshdesk_get_agent_availability` answer staffing questions without touching Freshdesk's admin UI.
- **Business hours and mailboxes are data.** `freshdesk_get_business_hours` and `freshdesk_get_email_mailbox` let an agent reason about SLA-ish questions like "is anyone on duty".

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Freshdesk working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Credential handling** | Collect, validate, store, and rotate the Freshdesk API key yourself, then make sure every tool call uses the right account. | Users complete the hosted ClawLink setup once and the connected Freshdesk account becomes available to the agent without you building credential management. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Freshdesk. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right Freshdesk actions to the runtime in a format your agent can reliably use. | 178 tools for Freshdesk are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes Freshdesk to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Freshdesk in the browser, and the 178 tools above work from chat. There is no SDK and no config file, and the Freshdesk key you paste at setup is stored server-side rather than kept in your environment. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use Freshdesk
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect Freshdesk from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling Freshdesk tools
Freshdesk tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Freshdesk call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### Freshdesk returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### Freshdesk returns 403 insufficient permissions although the account is connected
Freshdesk answers with permission errors in two situations, and the diagnosis order matters. First, the connected user's role and scope: an agent key whose Freshdesk user lacks access to a ticket, group, or company returns 403 for exactly those objects, and Freshdesk's own support article names this error class as "you are not allowed to access this page". Second, the arguments: a placeholder or invented ticket or contact id returns the same permission-shaped error because Freshdesk hides what the account cannot see. Check the id the agent sent before reissuing credentials, and only reconnect after both are ruled out.

Ask the agent to diagnose it:

```text
Call freshdesk_currently_authenticated_agent and freshdesk_get_account. Tell me which Freshdesk user this connection acts as and which plan the account is on, then quote the exact error from the failed call. Do not retry it yet.
```

### Freshdesk starts returning 429 or the agent stalls mid-bulk-update
Freshworks documents rate limits of 1000 requests per hour on higher plans and per-minute limits on lower ones, and a bulk update of many tickets is the traffic shape that meets them: the API accepts the call and the allowance drains in one sweep. A 429 is the hour being spent, so retrying immediately is wasted traffic. Change the shape of the work: split a large update into batches across turns, and have the agent report how many requests it has made when it hits a 429 rather than retrying in a loop.

Ask the agent to diagnose it:

```text
Tell me how many Freshdesk requests you have made in the last hour and what the last bulk call touched. Quote any rate-limit text from the last response. Do not call Freshdesk again until I reply.
```

### Freshdesk tools are missing, or one tool name is not found
Two different failures. If Hermes shows no Freshdesk tools at all, the connection or the pairing is incomplete: confirm the plugin was installed with `--enable`, that both `hermes clawlink begin` and `hermes clawlink finish` ran, and that Freshdesk shows as connected in the dashboard, then start a fresh chat. If most tools work and a single name fails, the name is wrong rather than missing, and the error lists the closest real ones. Search results teach "verify your API key and domain" for this symptom, which is the self-hosted version of the same failure; here the key is already verified at setup, so the name check is the relevant one. There is also a first-call timing case unique to this setup: schemas load on demand, so the opening Freshdesk call in a fresh session can arrive before the catalog and needs one retry.

Ask the agent to diagnose it:

```text
List the Freshdesk tools you actually have access to. If there are none, say so plainly. If there are, tell me which one searches tickets and use that exact name.
```

### API key setup works but results look incomplete
Double-check that the API key for Freshdesk has the right scopes or account access. A valid key can still be too limited for some reads or writes.

### Is there a Hermes Agent Freshdesk integration?
Yes. ClawLink is the fastest way to connect Hermes to Freshdesk: link your Freshdesk account once in the browser and Hermes Agent can call the Freshdesk API through 178 ready-made tools — no custom code or token handling.

### How do I connect Freshdesk to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect Freshdesk in the dashboard and Hermes can use it from the next message — no config files, and the Freshdesk key you paste is stored server-side instead of in your environment.

### How long does it take to connect Freshdesk to Hermes Agent?
About two minutes. Sign in, click Connect next to Freshdesk in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring Freshdesk up myself?
The alternative to ClawLink is usually manual API key setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Freshdesk working from chat.

### Why does this page say "paste one key" instead of "no API keys"?
Because Freshdesk's API is key-authenticated, and an honest page says so. The key is entered once on the hosted setup page and held server-side; the agent never sees it, it is not written to any `.env` or config file on your machine, and it can be revoked from the dashboard at any time. The AI Overview that quotes ClawLink calls this "one-click hosted OAuth", which is the same flow described loosely: the key is the credential, the hosting is what removes the setup. The claim that matters, and the one the winning citations repeat, is that no configuration files are involved and nothing runs locally.

### What can the agent do in Freshdesk?
The ticket surface is the core: add notes and watchers, bulk-update tickets, create canned responses, and search tickets, contacts, companies, and agents. The read side covers agents and their availability, business hours, email mailboxes, discussion topics, and the account's company and contact fields. The writes to be deliberate about are notes on tickets, which customers can see depending on your Freshdesk settings, and bulk updates, which touch many tickets in one call.

### Is this Freshdesk's own AI agent, or something separate?
Separate. Freshworks sells its own in-product AI Agent Studio (an Omni-plan feature) and an API Actions library, and those are what searches for "Freshdesk AI agent without API key" surface first. They are native to Freshdesk and configure through the product. This integration is the external-agent route: Hermes is the agent, Freshdesk is one connected account, and the same 178 tools are callable alongside your other integrations.

### Does the official Freshdesk MCP server make this unnecessary?
No, and the comparison is worth being exact about. Freshdesk's official MCP server is in early access, targets Enterprise plans, and still authenticates with an API key, so it does not remove the setup this page removes: the key still has to be created and stored somewhere you run a server. This integration holds the key for you, exposes 178 tools from chat, and needs nothing running. If you are on a plan where the official EAP is available and want a vendor-managed MCP endpoint, that is a real option; for an agent that works across apps, the hosted route is the one without the server.

### Is it safe to connect Freshdesk to an AI agent?
Judge it by the mechanics. The credential is an API key held server-side, never shown to the agent and never written to your machine, and revoking it in the dashboard kills access immediately. The permission question is a Freshdesk account question: connect a key whose user has the roles the agent should act with, and check the "you are not allowed to access this page" error class when a tool fails, since Freshdesk answers restricted objects with permission errors rather than not-found. For writes like notes and bulk updates, tell the agent to draft before it changes anything.

### Hermes paired but still can't use Freshdesk
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Connect Gleap](https://claw-link.dev/hermes/gleap) — Gleap is an all-in-one customer feedback tool for apps and websites, enabling direct communication with users to build better software by discovering their everyday pain points.
- [Intercom tools](https://claw-link.dev/hermes/intercom) — Manage conversations, contacts, companies, and support articles
- [Gorgias](https://claw-link.dev/hermes/gorgias) — E-commerce helpdesk for managing customer support tickets
