Files
zeekay bc4ddf332b chore: rebase the tree onto upstream master fa1a9a60
Mechanically re-derived: bin/debrand runs over a fresh import of
posthog/posthog@fa1a9a60d4 (2026-08-06).
The pipeline (.hanzo/workflows), the Dockerfiles and bin/docker*
entrypoints, compose files, LLM.md and the squashed initial migration
are restored from the shipped tree, same as the previous import.

The prune's import-closure guard kept 21 products the new core now
imports; dropping them is a refactor now, recorded rather than forced.
2026-08-06 01:25:36 -07:00

228 lines
9.9 KiB
YAML

# MCP tool definition — tool entries are scaffolded from the OpenAPI schema.
# The tool list and operation IDs are kept in sync automatically:
# pnpm --filter=@hanzo/mcp run scaffold-yaml -- --sync-all
#
# To enable a tool, set enabled: true and add required scopes + annotations.
# All other fields (title, description, enrich_url, etc.) are yours to configure.
category: Conversations
feature: conversations
url_prefix: /support/tickets
ui_apps: {}
tools:
conversations-tickets-ai-feedback-create:
operation: conversations_tickets_ai_feedback_create
enabled: false
conversations-tickets-bulk-update-status-create:
operation: conversations_tickets_bulk_update_status_create
enabled: false
conversations-tickets-bulk-update-tags-create:
operation: conversations_tickets_bulk_update_tags_create
enabled: false
conversations-tickets-compose-create:
operation: conversations_tickets_compose_create
enabled: false
conversations-tickets-destroy:
operation: conversations_tickets_destroy
enabled: false
conversations-tickets-full-update:
operation: conversations_tickets_update
enabled: false
conversations-tickets-list:
operation: conversations_tickets_list
enabled: true
scopes:
- ticket:read
annotations:
readOnly: true
destructive: false
idempotent: true
list: true
title: List support tickets
description: >
List support tickets in the project. Supports filtering by status (new, open, pending, on_hold, resolved),
priority (low, medium, high, critical), channel_source (widget, email, slack), assignee, tags, SLA state, AI
triage result, date range, and search. To work with a saved ticket view, pass its short_id as the `view`
parameter (find it via the list-saved-ticket-views tool); the view's saved filters are applied server-side,
and any filter parameter passed explicitly overrides the view's value for that dimension. Results are
paginated and ordered by updated_at descending by default. Returns ticket metadata including status,
priority, message counts, and timestamps.
response:
include:
- id
- ticket_number
- status
- priority
- channel_source
- assignee
- last_message_text
- message_count
- unread_team_count
- created_at
- updated_at
conversations-tickets-messages-retrieve:
operation: conversations_tickets_messages_list
enabled: true
scopes:
- ticket:read
annotations:
readOnly: true
destructive: false
idempotent: true
title: Read support ticket messages
description: >
Return a support ticket's message thread, ordered chronologically. The response is paginated (default 50,
max 200 per page) — use the limit and offset query params to page through long threads, and read count/next
from the response envelope. Includes all messages from the customer, team members, and AI, as well as
private internal notes. Each message contains author_type, author_name, content, and an is_private flag
indicating internal notes.
conversations-tickets-notes-destroy:
operation: conversations_tickets_notes_destroy
enabled: true
scopes:
- ticket:write
annotations:
readOnly: false
destructive: true
idempotent: true
title: Delete private note
description: >
Soft-delete a private note on a support ticket. Only private notes authored by the calling user can be
deleted. Customer-facing replies cannot be deleted. Message IDs come from
conversations-tickets-messages-retrieve. Deleting another user's note or an AI-authored note returns 403
with error_type not_note_author. Deleting a public reply returns 400 with error_type not_private_note. A
missing or already-deleted note returns 404 with error_type note_not_found.
conversations-tickets-notes-partial-update:
operation: conversations_tickets_notes_partial_update
enabled: true
scopes:
- ticket:write
annotations:
readOnly: false
destructive: false
idempotent: false
title: Update private note
description: >
Update a private note on a support ticket. Only private notes authored by the calling user can be edited.
Customer-facing replies cannot be edited. Message IDs come from conversations-tickets-messages-retrieve.
Editing another user's note or an AI-authored note returns 403 with error_type not_note_author. Editing a
public reply returns 400 with error_type not_private_note. A missing or deleted note returns 404 with
error_type note_not_found. Each successful update increments the note's version. Omit rich_content to clear
previous TipTap JSON so the thread falls back to the markdown message.
conversations-tickets-reply-create:
operation: conversations_tickets_reply_create
enabled: true
scopes:
- ticket:write
annotations:
readOnly: false
destructive: false
idempotent: false
title: Reply to support ticket
description: >
Post a reply or internal note to a support ticket. IMPORTANT: With is_private=false (the default), the reply
IS DELIVERED to the customer via the ticket's channel (email, Slack, Teams, or GitHub). Set is_private=true
to store an internal note visible only to team members.
conversations-tickets-retrieve:
operation: conversations_tickets_retrieve
enabled: true
scopes:
- ticket:read
annotations:
readOnly: true
destructive: false
idempotent: true
enrich_url: '{id}'
title: Get support ticket
description: >
Get a specific support ticket by ID or ticket number. Returns full ticket details including status,
priority, assignee, message count, channel info, person data, and session context.
agent_note:
The Insights Assistant may have investigated this ticket and written self-driving reports into the Inbox. To
surface them, call inbox-reports-list with source_id set to this ticket's `id` and
source_product=conversations (add include_all_statuses=true to include dismissed ones). Those reports hold
the investigation and findings; the ticket's own messages do not.
response:
include:
- id
- ticket_number
- status
- priority
- channel_source
- channel_detail
- assignee
- last_message_text
- message_count
- unread_team_count
- tags
- sla_due_at
- anonymous_traits
- session_context
- session_id
- person
- email_from
- email_to
- email_subject
- distinct_id
- created_at
- updated_at
conversations-tickets-unread-count-retrieve:
operation: conversations_tickets_unread_count_retrieve
enabled: false
conversations-tickets-update:
operation: conversations_tickets_partial_update
enabled: true
scopes:
- ticket:write
annotations:
readOnly: false
destructive: false
idempotent: true
enrich_url: '{id}'
title: Update support ticket
description: >
Update a support ticket. Can change status (new, open, pending, on_hold, resolved), priority (low, medium,
high, critical), assignee, SLA deadline, escalation reason, and tags. Assignee should be an object with type
('user' or 'role') and id, or null to unassign.
exclude_params:
- anonymous_traits
- ai_resolved
- escalation_reason
conversations-views-create:
operation: conversations_views_create
enabled: false
conversations-views-destroy:
operation: conversations_views_destroy
enabled: false
conversations-views-list:
operation: conversations_views_list
enabled: true
scopes:
- ticket:read
annotations:
readOnly: true
destructive: false
idempotent: true
list: true
title: List saved ticket views
description: >
List the saved ticket views in the project. Each view is a named, saved set of ticket filters — for example
the per-team views named "Team <name>". Returns each view's short_id and name; a view opens in the app at
/support/tickets?view=<short_id>. To get the tickets a view contains, pass its short_id as the `view`
parameter of the list-support-tickets tool.
response:
include:
- short_id
- name
conversations-views-partial-update:
operation: conversations_views_partial_update
enabled: false
conversations-views-retrieve:
operation: conversations_views_retrieve
enabled: false
conversations-zendesk-imports-create:
operation: conversations_zendesk_imports_create
enabled: false
conversations-zendesk-imports-status-retrieve:
operation: conversations_zendesk_imports_status_retrieve
enabled: false