Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 4 additions & 12 deletions internal/twdesk/companies.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ func CompanyGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Company",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific company in Teamwork Desk by its ID. " +
"Useful for auditing company records, troubleshooting ticket associations, or " +
"integrating Desk company data into automation workflows.",
Description: "Get Desk company (customer organization).",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -99,9 +97,7 @@ func CompanyList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Companies",
ReadOnlyHint: true,
},
Description: "List all companies in Teamwork Desk, with optional filters for name, domains, and kind. " +
"Enables users to audit, analyze, or synchronize company configurations for ticket management, " +
"reporting, or integration scenarios.",
Description: "List Desk companies. Filter by name, domains, or kind.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -154,9 +150,7 @@ func CompanyCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Company",
},
Description: "Create a new company in Teamwork Desk by specifying its name, domains, and other attributes. " +
"Useful for onboarding new organizations, customizing Desk for business relationships, or " +
"adapting support processes.",
Description: "Create Desk company.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -270,9 +264,7 @@ func CompanyUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Company",
},
Description: "Update an existing company in Teamwork Desk by ID, allowing changes to its name, domains, and " +
"other attributes. Supports evolving business relationships, rebranding, or correcting company records for " +
"improved ticket handling.",
Description: "Update Desk company.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
16 changes: 4 additions & 12 deletions internal/twdesk/customers.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ func CustomerGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Customer",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific customer in Teamwork Desk by their ID. " +
"Useful for auditing customer records, troubleshooting ticket associations, or " +
"integrating Desk customer data into automation workflows.",
Description: "Get customer.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -100,9 +98,7 @@ func CustomerList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Customers",
ReadOnlyHint: true,
},
Description: "List all customers in Teamwork Desk, with optional filters for company, email, and other " +
"attributes. Enables users to audit, analyze, or synchronize customer configurations for ticket management, " +
"reporting, or integration scenarios.",
Description: "List customers. Filter by company or email.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -156,9 +152,7 @@ func CustomerCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Customer",
},
Description: "Create a new customer in Teamwork Desk by specifying their name, contact details, and other " +
"attributes. Useful for onboarding new clients, customizing Desk for business relationships, or " +
"adapting support processes.",
Description: "Create customer.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -309,9 +303,7 @@ func CustomerUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Customer",
},
Description: "Update an existing customer in Teamwork Desk by ID, allowing changes to their name, " +
"contact details, and other attributes. Supports evolving business relationships, " +
"correcting customer records, or improving ticket handling.",
Description: "Update customer.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
9 changes: 0 additions & 9 deletions internal/twdesk/desk.go

This file was deleted.

3 changes: 1 addition & 2 deletions internal/twdesk/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ func FileCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create File",
},
Description: "Upload a new file to Teamwork Desk, enabling attachment to tickets, articles, or " +
"other resources.",
Description: "Upload file. Attach the returned ID to tickets or messages.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
4 changes: 2 additions & 2 deletions internal/twdesk/inboxes.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func InboxGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Inbox",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific inbox in Teamwork Desk by its ID.",
Description: "Get inbox.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -86,7 +86,7 @@ func InboxList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Inboxes",
ReadOnlyHint: true,
},
Description: "List all inboxes in Teamwork Desk, with optional filters for name and email.",
Description: "List inboxes. Filter by name or email.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down
4 changes: 1 addition & 3 deletions internal/twdesk/messages.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ func MessageCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Reply to Ticket",
},
Description: "Send a reply to a ticket in Teamwork Desk. Supports customer-facing replies and internal agent notes. " +
"Useful for automating ticket responses, integrating external communication systems, or " +
"customizing support workflows.",
Description: "Reply to a ticket. Use threadType=note for internal agent notes.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
15 changes: 4 additions & 11 deletions internal/twdesk/priorities.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ func PriorityGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Priority",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific priority in Teamwork Desk by its ID. " +
"Useful for inspecting priority attributes, troubleshooting ticket routing, or " +
"integrating Desk priority data into automation workflows.",
Description: "Get ticket priority.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -91,9 +89,7 @@ func PriorityList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Priorities",
ReadOnlyHint: true,
},
Description: "List all available priorities in Teamwork Desk, with optional filters for name and color. " +
"Enables users to audit, analyze, or synchronize priority configurations for ticket management, " +
"reporting, or integration scenarios.",
Description: "List ticket priorities. Filter by name or color.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -140,8 +136,7 @@ func PriorityCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Priority",
},
Description: "Create a new priority in Teamwork Desk by specifying its name and color. Useful for customizing " +
"ticket workflows, introducing new escalation levels, or adapting Desk to evolving support processes.",
Description: "Create ticket priority.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -189,9 +184,7 @@ func PriorityUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Priority",
},
Description: "Update an existing priority in Teamwork Desk by ID, allowing changes to its name and color. " +
"Supports evolving support policies, rebranding, or correcting priority attributes for improved " +
"ticket handling.",
Description: "Update ticket priority.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
16 changes: 4 additions & 12 deletions internal/twdesk/statuses.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ func StatusGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Status",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific status in Teamwork Desk by its ID. " +
"Useful for auditing status usage, troubleshooting ticket workflows, or " +
"integrating Desk status data into automation workflows.",
Description: "Get ticket status.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -99,9 +97,7 @@ func StatusList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Statuses",
ReadOnlyHint: true,
},
Description: "List all statuses in Teamwork Desk, with optional filters for name, color, and code. " +
"Enables users to audit, analyze, or synchronize status configurations for ticket management, " +
"reporting, or integration scenarios.",
Description: "List ticket statuses. Filter by name, color, or code.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -152,9 +148,7 @@ func StatusCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Status",
},
Description: "Create a new status in Teamwork Desk by specifying its name, color, and display order. " +
"Useful for customizing ticket workflows, introducing new resolution states, or " +
"adapting Desk to evolving support processes.",
Description: "Create ticket status.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -210,9 +204,7 @@ func StatusUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Status",
},
Description: "Update an existing status in Teamwork Desk by ID, allowing changes to its name, color, and " +
"display order. Supports evolving support policies, rebranding, or correcting status attributes for improved " +
"ticket handling.",
Description: "Update ticket status.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
15 changes: 4 additions & 11 deletions internal/twdesk/tags.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ func TagGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Tag",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific tag in Teamwork Desk by its ID. " +
"Useful for auditing tag usage, troubleshooting ticket categorization, or " +
"integrating Desk tag data into automation workflows.",
Description: "Get Desk tag.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -98,9 +96,7 @@ func TagList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Tags",
ReadOnlyHint: true,
},
Description: "List all tags in Teamwork Desk, with optional filters for name, color, and inbox association. " +
"Enables users to audit, analyze, or synchronize tag configurations for ticket management, " +
"reporting, or integration scenarios.",
Description: "List Desk tags. Filter by name, color, or inbox.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -151,8 +147,7 @@ func TagCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Tag",
},
Description: "Create a new tag in Teamwork Desk by specifying its name and color. Useful for customizing " +
"ticket workflows, introducing new categories, or adapting Desk to evolving support processes.",
Description: "Create Desk tag.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -200,9 +195,7 @@ func TagUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Tag",
},
Description: "Update an existing tag in Teamwork Desk by ID, allowing changes to its name and color. " +
"Supports evolving support policies, rebranding, or correcting tag attributes for improved " +
"ticket handling.",
Description: "Update Desk tag.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
15 changes: 4 additions & 11 deletions internal/twdesk/tickets.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ func TicketGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Ticket",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific ticket in Teamwork Desk by its ID. " +
"Useful for auditing ticket records, troubleshooting support workflows, or " +
"integrating Desk ticket data into automation and reporting systems.",
Description: "Get ticket.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -175,9 +173,7 @@ func TicketSearch(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Search Tickets",
ReadOnlyHint: true,
},
Description: "Search tickets in Teamwork Desk using various filters including inbox, customer, company, " +
"tag, status, priority, SLA, user, and more. This tool enables users to perform targeted searches " +
"for tickets, facilitating efficient support management, reporting, and integration with other systems.",
Description: "Search tickets. Filter by inbox, customer, company, tag, status, priority, or user.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -234,8 +230,7 @@ func TicketCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Ticket",
},
Description: "Create a new ticket in Teamwork Desk by specifying subject, description, priority, and status. " +
"Useful for automating ticket creation, integrating external systems, or customizing support workflows.",
Description: "Create ticket.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -484,9 +479,7 @@ func TicketUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Ticket",
},
Description: "Update an existing ticket in Teamwork Desk by ID, allowing changes to its attributes. " +
"Supports evolving support processes, correcting ticket records, or integrating with automation " +
"systems for improved ticket handling.",
Description: "Update ticket.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
3 changes: 2 additions & 1 deletion internal/twdesk/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
)

const (
deskTicketsDescription = "Tickets, messages, files, and inboxes in Teamwork Desk."
deskCustomersDescription = "Companies, customers, and user management in Teamwork Desk."
deskAdminDescription = "Inbox configuration: priorities, statuses, types, and tags in Teamwork Desk."
)
Expand All @@ -33,7 +34,7 @@ func DefaultToolsetGroup(readOnly bool, httpClient *http.Client) *toolsets.Tools
group := toolsets.NewToolsetGroup(readOnly)

// --- tickets sub-toolset ---
group.AddToolset(toolsets.NewToolset(ToolsetTickets, projectDescription).
group.AddToolset(toolsets.NewToolset(ToolsetTickets, deskTicketsDescription).
AddWriteTools(
FileCreate(httpClient),
MessageCreate(httpClient),
Expand Down
16 changes: 4 additions & 12 deletions internal/twdesk/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ func TypeGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get Ticket Type",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific ticket type in Teamwork Desk by its ID. " +
"Useful for auditing type usage, troubleshooting ticket categorization, or " +
"integrating Desk type data into automation workflows.",
Description: "Get ticket type.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -91,9 +89,7 @@ func TypeList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Ticket Types",
ReadOnlyHint: true,
},
Description: "List all ticket types in Teamwork Desk, with optional filters for name and inbox association. " +
"Enables users to audit, analyze, or synchronize type configurations for ticket management, " +
"reporting, or integration scenarios.",
Description: "List ticket types. Filter by name or inbox.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down Expand Up @@ -140,9 +136,7 @@ func TypeCreate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Create Ticket Type",
},
Description: "Create a new ticket type in Teamwork Desk by specifying its name, display order, and future " +
"inbox settings. Useful for customizing ticket workflows, introducing new categories, or " +
"adapting Desk to evolving support processes.",
Description: "Create ticket type.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -198,9 +192,7 @@ func TypeUpdate(httpClient *http.Client) toolsets.ToolWrapper {
Annotations: &mcp.ToolAnnotations{
Title: "Update Ticket Type",
},
Description: "Update an existing ticket type in Teamwork Desk by ID, allowing changes to its name, " +
"display order, and future inbox settings. Supports evolving support policies, rebranding, or correcting " +
"type attributes for improved ticket handling.",
Description: "Update ticket type.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down
10 changes: 2 additions & 8 deletions internal/twdesk/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ func UserGet(httpClient *http.Client) toolsets.ToolWrapper {
Title: "Get User",
ReadOnlyHint: true,
},
Description: "Retrieve detailed information about a specific support agent in Teamwork Desk by their ID. " +
"Useful for auditing agent records, troubleshooting ticket assignments, or " +
"integrating Desk agent data into automation workflows.",
Description: "Get support agent.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: map[string]*jsonschema.Schema{
Expand Down Expand Up @@ -109,11 +107,7 @@ func UserList(httpClient *http.Client) toolsets.ToolWrapper {
Title: "List Users",
ReadOnlyHint: true,
},
Description: `
List all support agents in Teamwork Desk, with optional
filters for name, email, inbox, and part-time status. Agents are the staff
members who handle tickets; customers are managed via the 'twdesk-list_customers' tool.
`,
Description: "List support agents. For customers, use twdesk-list_customers.",
InputSchema: &jsonschema.Schema{
Type: "object",
Properties: properties,
Expand Down
Loading