Freshdesk
Arcade.dev LLM tools for Freshdesk customer support
1.0.3Freshdesk toolkit for Arcade connects LLM agents to a Freshdesk helpdesk instance, enabling full ticket lifecycle management, contact and company CRM operations, knowledge base search, and agent/group routing.
Capabilities
- Ticket management: Create, read, update, merge, and reply to tickets; post private internal notes; search the queue by status, priority, assignee, requester, group, tag, type, or recency.
- Contact & company CRM: Create or update contacts and companies; search by name, email, or company; retrieve full records by ID; assemble a complete customer overview (contact + company + tickets) in one call.
- Knowledge base: Search published solution articles by keyword; retrieve full article content by ID.
- Agent & group routing: List agents (filterable by email) and groups to support ticket assignment and team routing logic.
- Resilient lookups: Missing or stale IDs return a structured not-found envelope (
found: false) rather than raising exceptions, allowing recovery within the same agent turn. - Identity verification:
WhoAmIconfirms the authenticated agent profile and validates API key / domain configuration.
Secrets
FRESHDESK_API_KEY — The API key that authenticates requests to your Freshdesk account. Obtain it from your Freshdesk portal: log in, click your avatar (top-right), go to Profile Settings, and copy the API key shown in the right-hand panel. The key is scoped to the authenticated agent's permissions. See Freshdesk API authentication docs for details.
FRESHDESK_DOMAIN — Your Freshdesk subdomain, i.e. the <subdomain> portion of https://<subdomain>.freshdesk.com. This identifies which helpdesk instance the toolkit connects to. Find it in your browser's address bar when logged into Freshdesk.
Store both secrets in Arcade using the Arcade secrets guide or directly via the Arcade secrets dashboard.
Available tools(19)
| Tool name | Description | Secrets | |
|---|---|---|---|
Add an internal private note to a ticket that the requester cannot see. | 2 | ||
Create a new company account or update an existing one. To create, omit company_id and
provide a name; link a contact to the result by passing its id as a contact's company. | 2 | ||
Create a new contact or update an existing one. To create, omit contact_id and
provide a name plus at least one of email, phone, or mobile. | 2 | ||
Open a ticket on a customer's behalf. Requires a subject, a description, and a
requester identified by email or id. | 2 | ||
Read a single knowledge base article's full content by id.
A missing id returns a not-found envelope (``found`` false) rather than raising, so a
stale or guessed id can be recovered from within the same turn. | 2 | ||
Read a single company's details by id.
A missing id returns a not-found envelope (``found`` false) rather than raising, so a
stale or guessed id can be recovered from within the same turn. | 2 | ||
Read a single contact's details by id.
A missing id returns a not-found envelope (``found`` false) rather than raising, so a
stale or guessed id can be recovered from within the same turn. | 2 | ||
Assemble one requester's full context — their contact record, their company, and their
tickets — in a single call instead of three separate lookups.
Identify the requester by contact_id or email; a missing requester returns a not-found
envelope rather than raising, so a stale id or wrong email can be recovered in the same turn. | 2 | ||
Read a ticket together with its full public-reply and private-note history.
A missing id returns a not-found envelope (``found`` false) rather than raising, so a
stale or guessed id can be recovered from within the same turn. | 2 | ||
List the helpdesk's agents, optionally filtered to one email, for routing tickets. | 2 | ||
List the helpdesk's groups for routing tickets to a team. | 2 | ||
Merge duplicate tickets into one. Use this to consolidate related tickets from the same
requester so the conversation lives in a single place; the secondary tickets are closed. | 2 | ||
Post a public reply on a ticket that the requester can see. | 2 | ||
Search the knowledge base for published solution articles matching a term. | 2 | ||
Find companies by name. Match is by name prefix; use the full name for an exact hit.
Returns lightweight summaries without the company note; read a single company by id for
its full detail. | 2 | ||
Find contacts by name, exact email, or company. With no filters, returns recent
contacts.
Combining a name with a company scans up to the company's first 1000 contacts and matches the
name among them; at a company with more contacts than that, a name match recorded beyond the
scan may not appear. | 2 | ||
Find tickets in the queue by status, priority, requester, agent, group, tag,
type, or recency. With no filters, returns the most recently updated tickets.
Pass requester_id (or requester_email) to pull one customer's full ticket history;
other filters then refine that requester's tickets. A just-created ticket may take a
moment to appear here while Freshdesk indexes it. | 2 | ||
Change a ticket's status, priority, assignee, or group. Fields left unset are
unchanged; at least one field must be provided. | 2 | ||
Return the authenticated Freshdesk agent's profile.
Use this to verify the configured API key and confirm which Freshdesk account
(domain) the tools are connected to; it is not a required preamble to the other tools. | 2 |