Source profileQuality 93/100

WYRE-AI/msp-claude-plugins/msp-claude-plugins/freshdesk/freshdesk/skills/ticketing/SKILL.md

Freshdesk Ticketing

Freshdesk ticket operations: list, get, search, create, update, reply, notes, and conversation threads. Covers status/priority/source integer encodings, core requester / assignment / SLA fields, the search query language, and the MSP creation, triage, and escalation workflows through the Freshdesk REST API v2.

Source repository stars
42
Declared platforms
0
Static risk flags
0
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Freshdesk ticket operations: list, get, search, create, update, reply, notes, and conversation threads. Covers status/priority/source integer encodings, core requester / assignment / SLA fields, the search query language, and the MSP creation, triage, and escalation workflows through the Freshdesk REST API v2.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/freshdesk/freshdesk/skills/ticketing"
    Safe inspection promptEditorial

    Inspect the Agent Skill "Freshdesk Ticketing" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/freshdesk/freshdesk/skills/ticketing/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Triage Workflow

      1. Pull the unresolved queue — search "status:2 OR status:3", ordered by priority descending. 2. Identify unassigned tickets — those with no responderid. 3. Check SLA pressure — get each ticket with include=stats and compare dueby / frdueby against now to flag breached and at-ri…

      Pull the unresolved queue — searchIdentify unassigned tickets — those with no responderid.Check SLA pressure — get each ticket with include=stats and compare
    2. 02

      Anti-triggers

      A Freshdesk ticket may carry type: "Incident", which collides with two other meanings of the word. The routing test is what the operator does next: answer a customer under an SLA clock (this skill), page a responder, or approve a remediation on a compromised endpoint.

      An on-call service incident — something is broken and a human mustA confirmed security incident — malware or intrusion with aTickets in another helpdesk or PSA — the vocabulary is nearly
    3. 03

      Status, Priority & Source Encodings

      Freshdesk encodes these fields as integers in both the API payloads and the search query language.

      Freshdesk encodes these fields as integers in both the API payloads and the search query language.(Additional source codes exist for chat, feedback widget, and other channels.)
    4. 04

      Status

      Review the “Status” section in the pinned source before continuing.

      Review and apply the “Status” source section.
    5. 05

      Priority

      Review the “Priority” section in the pinned source before continuing.

      Review and apply the “Priority” source section.

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars42SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    WYRE-AI/msp-claude-plugins
    Skill path
    msp-claude-plugins/freshdesk/freshdesk/skills/ticketing/SKILL.md
    Commit
    5005f73ba2f52cd299f58aa6bb79f4e70ae87103
    License
    Apache-2.0
    Collected
    2026-08-28
    Default branch
    main
    View the original SKILL.md

    Freshdesk Ticket Management

    Overview

    Tickets are the core unit of service delivery in Freshdesk. Every customer request, incident, and task flows through the ticketing system. This skill covers listing, getting, searching, creating, updating, replying, adding notes, and reading conversation threads via the Freshdesk REST API v2, surfaced through tools named freshdesk_tickets_<action>.

    Anti-triggers

    A Freshdesk ticket may carry type: "Incident", which collides with two other meanings of the word. The routing test is what the operator does next: answer a customer under an SLA clock (this skill), page a responder, or approve a remediation on a compromised endpoint.

    • An on-call service incident — something is broken and a human must be woken up; the deliverable is acknowledgement and restoration, not a customer reply. Use pagerduty-incidents or rootly-incidents.
    • A confirmed security incident — malware or intrusion with a remediation to approve. Use huntress-incidents, or sentinelone-alerts for raw EDR detections. Never draft a customer reply about containment from this skill's data alone.
    • Tickets in another helpdesk or PSA — the vocabulary is nearly identical but the field models are not (Freshdesk encodes status and priority as integers; the PSAs use instance-configurable IDs). Use halopsa-tickets, connectwise-psa-tickets, or autotask-tickets.
    • Why due_by or fr_due_by has the value it does — deadline computation, business-hours calendars, and breach detection are freshdesk-sla-business-hours; this skill only reads the timestamps.
    • Resolving the requester to a person or company — contact lookup, creation, and merge are freshdesk-contacts-companies.

    Status, Priority & Source Encodings

    Freshdesk encodes these fields as integers in both the API payloads and the search query language.

    Status

    ValueStatusBusiness Logic
    2OpenDefault for new tickets; needs action
    3PendingWaiting on customer or third party; clock may pause
    4ResolvedIssue addressed; awaiting confirmation
    5ClosedTicket complete; no further action

    Priority

    ValuePriorityTypical Response
    1LowNext business day
    2MediumSame business day
    3High1-2 hours
    4UrgentImmediate response

    Source

    ValueSource
    1Email
    2Portal
    3Phone

    (Additional source codes exist for chat, feedback widget, and other channels.)

    Key Ticket Fields

    Core Fields

    FieldTypeRequiredDescription
    idIntegerSystemAuto-generated unique identifier
    subjectStringYesBrief issue summary
    descriptionString (HTML)Yes (on create)Detailed description
    statusIntegerNo2 Open, 3 Pending, 4 Resolved, 5 Closed
    priorityIntegerNo1 Low, 2 Medium, 3 High, 4 Urgent
    sourceIntegerNo1 Email, 2 Portal, 3 Phone
    typeStringNoTicket type (e.g. Incident, Service Request)
    tagsArrayNoFree-form labels

    Requester & Assignment Fields

    FieldTypeRequiredDescription
    requester_idIntegerOne of requester fieldsContact ID of the requester
    emailStringOne of requester fieldsRequester email (creates a contact if new)
    responder_idIntegerNoAssigned agent ID
    group_idIntegerNoAssigned group ID
    company_idIntegerNoAssociated company ID

    SLA Fields

    FieldTypeDescription
    due_byTimestampResolution-due deadline (driven by SLA policy + business hours)
    fr_due_byTimestampFirst-response-due deadline

    When creating a ticket you must supply subject, description, and a requester (requester_id or email). Status defaults to Open (2) and priority to Low (1) if omitted.

    Operations

    List Tickets

    GET /api/v2/tickets?per_page=100&page=1
    

    Common query params: filter (e.g. new_and_my_open, watching, spam, deleted), updated_since, order_by, order_type. Use include=requester,stats to embed related data.

    Get a Single Ticket

    GET /api/v2/tickets/{id}?include=conversations,requester,company,stats
    

    include=conversations embeds the reply/note thread; include=stats adds resolution and first-response timestamps useful for SLA checks.

    Search Tickets

    GET /api/v2/search/tickets?query="status:2 AND priority:4"
    

    The query language wraps the whole expression in double quotes, combines clauses with AND / OR, and supports fields such as status, priority, agent_id, group_id, type, tag, created_at, and updated_at. Search returns up to 30 results per page and a maximum of 10 pages (300 records) — narrow the query when a result set would exceed that.

    # Unresolved urgent tickets
    "status:2 AND priority:4"
    
    # A group's high/urgent backlog created this month
    "group_id:7 AND (priority:3 OR priority:4) AND created_at:>'2024-02-01'"
    

    Create a Ticket

    POST /api/v2/tickets
    
    {
      "subject": "Unable to access email - Outlook disconnected",
      "description": "User reports Outlook showing disconnected since 9am. Webmail works fine.",
      "email": "[email protected]",
      "priority": 3,
      "status": 2,
      "source": 1,
      "group_id": 7
    }
    

    Update a Ticket

    PUT /api/v2/tickets/{id}
    

    Assign and re-prioritize:

    {
      "responder_id": 42,
      "status": 2,
      "priority": 4
    }
    

    Resolve:

    {
      "status": 4
    }
    

    Reply to a Ticket (customer-facing)

    POST /api/v2/tickets/{id}/reply
    
    {
      "body": "<p>We've identified the cause and a technician is working on the fix. We'll update you within the hour.</p>"
    }
    

    A reply is added to the conversation thread and emailed to the requester.

    Add a Note (internal or public)

    POST /api/v2/tickets/{id}/notes
    

    Internal note (private to agents):

    {
      "body": "<p>Event logs show KB5034441 correlation. Known Outlook cache issue.</p>",
      "private": true
    }
    

    Public note (visible to requester):

    {
      "body": "<p>Thanks for the additional screenshots — they confirm the cache issue.</p>",
      "private": false
    }
    

    Read Conversations

    GET /api/v2/tickets/{id}/conversations
    

    Returns the ordered thread of replies and notes. Each entry indicates whether it is private (internal note), incoming (from the requester), or an outgoing agent reply. Use this to reconstruct the full history of a ticket before summarizing or responding.

    Common Workflows

    Ticket Creation Flow

    1. Resolve the requester — look up the contact by email; if none exists, passing email on create will auto-create the contact.
    2. Check for duplicates — search recent open tickets for the same requester/subject.
    3. Set defaults — status Open (2), priority by impact/urgency.
    4. CreatePOST /tickets with subject, description, requester.
    5. Acknowledge — optionally post a reply confirming receipt.

    Triage Workflow

    1. Pull the unresolved queue — search "status:2 OR status:3", ordered by priority descending.
    2. Identify unassigned tickets — those with no responder_id.
    3. Check SLA pressure — get each ticket with include=stats and compare due_by / fr_due_by against now to flag breached and at-risk tickets.
    4. Route — set group_id / responder_id by category and skillset.
    5. Re-prioritize — bump priority where impact warrants it.
    6. Document — add an internal note recording the triage decision.

    Escalation

    PUT /api/v2/tickets/{id}
    
    {
      "priority": 4,
      "group_id": 9
    }
    

    Add an internal note capturing the escalation reason alongside the update.

    Error Handling

    ErrorCauseResolution
    400 Validation failedMissing subject/description/requester, or bad encodingSupply required fields; use integer status/priority
    404 Not foundUnknown ticket IDRe-list or re-search to confirm the ID
    403 ForbiddenAPI key lacks scope for the actionCheck the agent's permissions
    429 Rate limitedOver per-minute limitRead Retry-After and back off

    Best Practices

    1. Use integer encodings — never send status/priority as strings.
    2. Validate the requester first — confirm the contact or rely on email auto-creation deliberately.
    3. Keep internal detail in private notes — public replies stay customer-appropriate.
    4. Pull conversations before replying — avoid repeating prior answers.
    5. Check due_by / fr_due_by — let SLA deadlines drive triage order.
    6. Tag consistently — tags power later search and reporting.

    Related Skills

    Frequently asked questions

    What to verify before installation and use

    What does the Freshdesk Ticketing source document cover?

    Freshdesk ticket operations: list, get, search, create, update, reply, notes, and conversation threads. Covers status/priority/source integer encodings, core requester / assignment / SLA fields, the search query language, and the MSP creation, triage, and escalation workflows through the Freshdesk REST API v2.

    How do I install Freshdesk Ticketing?

    The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/freshdesk/freshdesk/skills/ticketing". Inspect the command and pinned source before running it.

    Alternatives

    Compare before choosing

    Computed 10029,236

    garrytan/gbrain

    bulk-ingestion

    End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

    Computed 10025,136

    alirezarezvani/claude-skills

    app-store-optimization

    App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

    Computed 1005,277

    dotnet/skills

    migrate-vstest-to-mtp

    Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing

    Computed 100147

    oaustegard/claude-skills

    featuring

    Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre