Skip to content

HappyFox MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Triage HappyFox tickets, contacts and KB articles, run reports, and reply or add private notes.

Deletes · 7

23 tools: 7 can delete or cancel things and 16 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http happyfox https://happyfox.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

23 tools

Deletes or cancels 7Claude Code: deny
  • happyfox_add_private_noteAdd an internal note (never sent to the contact), optionally alerting agents and changing status, priority, assignee, due date or tags.No findings

    Why it is in this group

    • The name "happyfox_add_private_note" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Add an internal note (never sent to the contact), optionally alerting agents and changing status, priority, assignee, due date or tags. HappyFox: POST /api/1.1/json/ticket/<ticket_number>/staff_pvtnote/.

    Annotations the server declares

    • title: Add a private note to a ticket
    • destructiveHint: true
  • happyfox_add_staff_replyAdd an agent reply to a ticket and/or change its status, priority, assignee, due date or tags.No findings

    Why it is in this group

    • The name "happyfox_add_staff_reply" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Add an agent reply to a ticket and/or change its status, priority, assignee, due date or tags. The contact is emailed ONLY if update_customer is true (HappyFox default: false). With no message it just updates properties. Moving to a completed status may require the category's compulsory custom fields. HappyFox: POST /api/1.1/json/ticket/<ticket_number>/staff_update/.

    Annotations the server declares

    • title: Reply to a ticket as an agent
    • destructiveHint: true
  • happyfox_create_contactCreate a contact.No findings

    Why it is in this group

    • The name "happyfox_create_contact" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a contact. HappyFox treats this as create-or-edit keyed on email: if the email already exists that contact is updated, and any contact custom field NOT passed is reset — use happyfox_update_contact to edit an existing contact. HappyFox: POST /api/1.1/json/users/.

    Annotations the server declares

    • title: Create a contact
    • destructiveHint: true
  • happyfox_create_ticketOpen a new ticket on behalf of a contact (created if the email is new).No findings

    Why it is in this group

    • The name "happyfox_create_ticket" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Open a new ticket on behalf of a contact (created if the email is new). Needs a category id (a public category), a subject and a message in `text` or `html`. HappyFox: POST /api/1.1/json/tickets/.

    Annotations the server declares

    • title: Create a ticket
    • destructiveHint: true
  • happyfox_update_contactEdit an existing contact's name, email or contact custom fields (c-cf-<id>).No findings

    Why it is in this group

    • The name "happyfox_update_contact" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Edit an existing contact's name, email or contact custom fields (c-cf-<id>). Phone numbers are edited via happyfox_create_contact with the phone id. HappyFox: POST /api/1.1/json/user/<id>/.

    Annotations the server declares

    • title: Edit a contact
    • destructiveHint: true
  • happyfox_update_ticket_custom_fieldsSet ticket custom-field values (t-cf-<id>, ids from happyfox_list_ticket_custom_fields).No findings

    Why it is in this group

    • The name "happyfox_update_ticket_custom_fields" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Set ticket custom-field values (t-cf-<id>, ids from happyfox_list_ticket_custom_fields). HappyFox: POST /api/1.1/json/ticket/<ticket_number>/update_custom_fields/.

    Annotations the server declares

    • title: Edit a ticket's custom fields
    • destructiveHint: true
  • happyfox_update_ticket_tagsAdd and/or remove tags on a ticket without touching anything else.No findings

    Why it is in this group

    • The name "happyfox_update_ticket_tags" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Add and/or remove tags on a ticket without touching anything else. HappyFox: POST /api/1.1/json/ticket/<ticket_number>/update_tags/.

    Annotations the server declares

    • title: Add or remove ticket tags
    • destructiveHint: true
Only reads 16Claude Code: allow
  • happyfox_get_contactFetch a contact by id or by email address — phones, contact groups, ticket counts and custom fields.No findings

    Why it is in this group

    • The name "happyfox_get_contact" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a contact by id or by email address — phones, contact groups, ticket counts and custom fields. HappyFox: GET /api/1.1/json/user/<id or email>/.

    Annotations the server declares

    • title: Get one contact
    • readOnlyHint: true
  • happyfox_get_contact_groupFetch a contact group and its member contacts.No findings

    Why it is in this group

    • The name "happyfox_get_contact_group" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a contact group and its member contacts. HappyFox: GET /api/1.1/json/contact_group/<id>/.

    Annotations the server declares

    • title: Get one contact group
    • readOnlyHint: true
  • happyfox_get_report_summarySummary counts for a saved report: ticket, completed, assigned, pending and unassigned counts.No findings

    Why it is in this group

    • The name "happyfox_get_report_summary" says "get": a word for reading.
    Description, as the server wrote it
    Summary counts for a saved report: ticket, completed, assigned, pending and unassigned counts. HappyFox: GET /api/1.1/json/report/<id>/.

    Annotations the server declares

    • title: Get a report summary
    • readOnlyHint: true
  • happyfox_get_report_tabular_dataThe tabular view of a saved report — one row per ticket (display_id, subject, status, assignee, due date), paginated.No findings

    Why it is in this group

    • The name "happyfox_get_report_tabular_data" says "get": a word for reading.
    Description, as the server wrote it
    The tabular view of a saved report — one row per ticket (display_id, subject, status, assignee, due date), paginated. HappyFox: GET /api/1.1/json/report/<id>/tabulardata/.

    Annotations the server declares

    • title: Get a report's ticket rows
    • readOnlyHint: true
  • happyfox_get_ticketFetch a ticket with its full conversation: status, priority, category, contact, assignee, custom fields, SLA breaches and every update (messages, private notes, property changes, a…No findings

    Why it is in this group

    • The name "happyfox_get_ticket" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a ticket with its full conversation: status, priority, category, contact, assignee, custom fields, SLA breaches and every update (messages, private notes, property changes, attachment links that expire in 5 minutes). HappyFox: GET /api/1.1/json/ticket/<ticket_number>/.

    Annotations the server declares

    • title: Get one ticket
    • readOnlyHint: true
  • happyfox_list_categoriesList ticket categories (queues) with their ids — needed to create a ticket or filter tickets.No findings

    Why it is in this group

    • The name "happyfox_list_categories" says "list": a word for reading.
    Description, as the server wrote it
    List ticket categories (queues) with their ids — needed to create a ticket or filter tickets. HappyFox: GET /api/1.1/json/categories/.

    Annotations the server declares

    • title: List categories
    • readOnlyHint: true
  • happyfox_list_contact_custom_fieldsList contact custom fields: id, type, choices and required flag.No findings

    Why it is in this group

    • The name "happyfox_list_contact_custom_fields" says "list": a word for reading.
    Description, as the server wrote it
    List contact custom fields: id, type, choices and required flag. Use the ids as c-cf-<id>. HappyFox: GET /api/1.1/json/user_custom_fields/.

    Annotations the server declares

    • title: List contact custom fields
    • readOnlyHint: true
  • happyfox_list_contact_groupsList contact groups (typically customer companies) with their tagged email domains.No findings

    Why it is in this group

    • The name "happyfox_list_contact_groups" says "list": a word for reading.
    Description, as the server wrote it
    List contact groups (typically customer companies) with their tagged email domains. HappyFox: GET /api/1.1/json/contact_groups/.

    Annotations the server declares

    • title: List contact groups
    • readOnlyHint: true
  • happyfox_list_contactsList contacts (customers), paginated, or search them.No findings

    Why it is in this group

    • The name "happyfox_list_contacts" says "list": a word for reading.
    Description, as the server wrote it
    List contacts (customers), paginated, or search them. Search `q` fields: name, email, phone (digits only, no +), updated_since, created_since — e.g. `name:adam email:adam@example.com` (space-separated, all must match). HappyFox: GET /api/1.1/json/users/.

    Annotations the server declares

    • title: List or search contacts
    • readOnlyHint: true
  • happyfox_list_kb_articlesExport the knowledge base: external (customer-facing) articles by default, or internal (agent-only) articles.No findings

    Why it is in this group

    • The name "happyfox_list_kb_articles" says "list": a word for reading.
    Description, as the server wrote it
    Export the knowledge base: external (customer-facing) articles by default, or internal (agent-only) articles. HappyFox: GET /api/1.1/json/kb/articles/ or /kb/internal-articles/.

    Annotations the server declares

    • title: Export knowledge-base articles
    • readOnlyHint: true
  • happyfox_list_prioritiesList ticket priorities with ids — ids used to set a ticket's priority.No findings

    Why it is in this group

    • The name "happyfox_list_priorities" says "list": a word for reading.
    Description, as the server wrote it
    List ticket priorities with ids — ids used to set a ticket's priority. HappyFox: GET /api/1.1/json/priorities/.

    Annotations the server declares

    • title: List priorities
    • readOnlyHint: true
  • happyfox_list_reportsList the saved reports (id, name, description) from the Reports module.No findings

    Why it is in this group

    • The name "happyfox_list_reports" says "list": a word for reading.
    Description, as the server wrote it
    List the saved reports (id, name, description) from the Reports module. HappyFox: GET /api/1.1/json/reports/.

    Annotations the server declares

    • title: List reports
    • readOnlyHint: true
  • happyfox_list_staffList agents (staff) with their ids, roles, categories and active flag — the `staff` id every reply/note needs, and assignee ids.No findings

    Why it is in this group

    • The name "happyfox_list_staff" says "list": a word for reading.
    Description, as the server wrote it
    List agents (staff) with their ids, roles, categories and active flag — the `staff` id every reply/note needs, and assignee ids. HappyFox: GET /api/1.1/json/staff/.

    Annotations the server declares

    • title: List agents
    • readOnlyHint: true
  • happyfox_list_statusesList ticket statuses with ids and behaviour (pending / completed) — ids used to change a ticket's status.No findings

    Why it is in this group

    • The name "happyfox_list_statuses" says "list": a word for reading.
    Description, as the server wrote it
    List ticket statuses with ids and behaviour (pending / completed) — ids used to change a ticket's status. HappyFox: GET /api/1.1/json/statuses/.

    Annotations the server declares

    • title: List statuses
    • readOnlyHint: true
  • happyfox_list_ticket_custom_fieldsList ticket custom fields: id, type, choices (with choice ids), required flags and categories.No findings

    Why it is in this group

    • The name "happyfox_list_ticket_custom_fields" says "list": a word for reading.
    Description, as the server wrote it
    List ticket custom fields: id, type, choices (with choice ids), required flags and categories. Use the ids as t-cf-<id>. HappyFox: GET /api/1.1/json/ticket_custom_fields/.

    Annotations the server declares

    • title: List ticket custom fields
    • readOnlyHint: true
  • happyfox_list_ticketsList tickets, newest activity first, with optional filters and HappyFox's search syntax.No findings

    Why it is in this group

    • The name "happyfox_list_tickets" says "list": a word for reading.
    Description, as the server wrote it
    List tickets, newest activity first, with optional filters and HappyFox's search syntax. Paginated (page_info + data). Search `q` examples: `status:"New","In Progress"`, `priority:"High"`, `assignee:none`, `tag:"billing"`, `contact:"jane@example.com"`, `unresponded:true`, `breached:true`, `duedate:overdue`, `created-after:"2026/01/31"`, `last-modified-on-or-after:"2026/09/01"`, `"Custom Field":"value"`. Separate several filters with a space. HappyFox: GET /api/1.1/json/tickets/.

    Annotations the server declares

    • title: List or search tickets
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http happyfox https://happyfox.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__happyfox__happyfox_list_tickets",
      "mcp__happyfox__happyfox_get_ticket",
      "mcp__happyfox__happyfox_list_contacts",
      "mcp__happyfox__happyfox_get_contact",
      "mcp__happyfox__happyfox_list_contact_groups",
      "mcp__happyfox__happyfox_get_contact_group",
      "mcp__happyfox__happyfox_list_categories",
      "mcp__happyfox__happyfox_list_staff",
      "mcp__happyfox__happyfox_list_statuses",
      "mcp__happyfox__happyfox_list_priorities",
      "mcp__happyfox__happyfox_list_ticket_custom_fields",
      "mcp__happyfox__happyfox_list_contact_custom_fields",
      "mcp__happyfox__happyfox_list_reports",
      "mcp__happyfox__happyfox_get_report_summary",
      "mcp__happyfox__happyfox_get_report_tabular_data",
      "mcp__happyfox__happyfox_list_kb_articles"
    ],
    "ask": [],
    "deny": [
      "mcp__happyfox__happyfox_create_ticket",
      "mcp__happyfox__happyfox_add_staff_reply",
      "mcp__happyfox__happyfox_add_private_note",
      "mcp__happyfox__happyfox_update_ticket_tags",
      "mcp__happyfox__happyfox_update_ticket_custom_fields",
      "mcp__happyfox__happyfox_create_contact",
      "mcp__happyfox__happyfox_update_contact"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as happyfox. Review it before you use it.