Skip to content

Helpdesk

Zammad
API integration

Ship Helpdesk features without building the integration. Full Zammad API access via Proxy and 90+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Zammad

Use Cases

Why integrate with Zammad

Common scenarios for SaaS companies building Zammad integrations for their customers.

01

Sync CRM accounts into Zammad for contextual support

B2B SaaS platforms can map their customer accounts to Zammad Organizations and Users so support agents see contract tier, ownership, and account metadata inline on every ticket. This eliminates context-switching and helps prioritize VIP customers automatically.

02

Automate HR-driven identity lifecycle in the helpdesk

HRIS and identity platforms can provision Zammad users on hire, deactivate them on termination, and auto-generate IT provisioning or offboarding tickets. This gives customers a zero-touch bridge between people operations and the service desk.

03

Bill MSP and agency time directly from Zammad

Invoicing, PSA, and ERP products can pull time accountings per ticket and organization to generate accurate line items for hourly support contracts. Customers get end-of-month billing without agents re-entering hours in a second system.

04

Route DevOps alerts into structured Zammad incidents

Monitoring and observability SaaS can convert alerts into Zammad tickets with the right priority, group assignment, and article payload containing logs or run context. Existing incidents can be linked so operators see the full blast radius in one place.

05

Power customer health and churn signals from support data

Customer success and revenue intelligence platforms can search tickets, monitor SLA escalation timestamps, and mention account owners inside Zammad when risk thresholds are hit. This turns support friction into a first-class churn signal for the CS team.

What You Can Build

Ship these features with Truto + Zammad

Concrete product features your team can ship faster by leveraging Truto’s Zammad integration instead of building from scratch.

01

Two-way ticket sync

Create, update, search, and read Zammad tickets and their articles to keep conversations in sync between your product and the helpdesk.

02

Organization and user provisioning

Push accounts and contacts into Zammad as Organizations and Users, and deactivate or delete them when lifecycle events fire in your platform.

03

Custom field mapping via Object Manager

Read, create, and update object manager attributes to store your product's proprietary IDs and metadata on Zammad tickets, users, and organizations.

04

Time tracking export for billing

Pull time accountings per ticket to feed invoicing, payroll, or utilization dashboards without agents leaving Zammad.

05

Tag-based automation and enrichment

Add and remove tags on tickets from your product to trigger workflows for feature requests, bug IDs, churn risk, or campaign attribution.

06

GDPR right-to-be-forgotten workflows

Trigger Zammad data privacy tasks programmatically to hard-delete a user and their associated PII when a compliance event fires.

SuperAI

Zammad AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

zammad_users_get_me

Get the currently authenticated Zammad user. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip.

list_all_zammad_users

List Zammad users. Returns per user: id, login, email, firstname, lastname, active, organization_id, role_ids, preferences, created_at, updated_at. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip.

update_a_zammad_user_by_id

Update a Zammad user by id with attributes such as phone, department, and address. Returns the updated user object including id, login, email, firstname, lastname, active, role_ids, created_at, updated_at. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip. Required: id.

delete_a_zammad_user_by_id

Delete a Zammad user by id. This is a permanent removal that cannot be undone and may also remove related references such as tickets. Returns an empty 200 response with {} on success. Returns: empty response. Required: id.

zammad_users_search

Search Zammad users by query string. Returns matching user records including id, login, firstname, lastname, email, organization_id, active, vip, created_at, updated_at, role_ids, and group_ids. Returns: active, address, authorization_ids, city, country, created_at, created_by_id, department, email, fax, firstname, group_ids, id, image, image_source, last_login, lastname, login, login_failed, mobile, note, organization_id, organization_ids, out_of_office, out_of_office_end_at, out_of_office_replacement_id, out_of_office_start_at, overview_sorting_ids, phone, preferences, role_ids, source, street, two_factor_preference_ids, updated_at, updated_by_id, verified, vip, web, zip. Required: query.

list_all_zammad_organizations

List all organizations in Zammad. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip.

get_single_zammad_organization_by_id

Get a single Zammad organization by id. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: id.

create_a_zammad_organization

Create a new organization in Zammad. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: name.

update_a_zammad_organization_by_id

Update an existing Zammad organization by id. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: id.

delete_a_zammad_organization_by_id

Delete a Zammad organization by id. This is a permanent removal that cannot be undone. Organizations with references in activity streams or users cannot be deleted. Returns an empty 200 response with {} on success. Required: id.

zammad_organizations_search

Search Zammad organizations by query string. Returns matching organizations with id, name, shared, domain, domain_assignment, active, note, vip, member_ids, secondary_member_ids, created_at, and updated_at. Returns: active, created_at, created_by_id, domain, domain_assignment, id, member_ids, name, note, secondary_member_ids, shared, updated_at, updated_by_id, vip. Required: query. Supports sort_by and order_by for result sorting, and full/expand to include related assets.

list_all_zammad_groups

List all Zammad groups. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids.

get_single_zammad_group_by_id

Get a single Zammad group by id. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: id.

create_a_zammad_group

Create a new Zammad group. Returns the created group with id, name, active, follow_up_possible, user_ids, created_at, updated_at. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: name. Subgroup names use :: as delimiter (e.g. Sales::Europe::South). follow_up_possible accepts yes or new_ticket.

update_a_zammad_group_by_id

Update a Zammad group by id. Returns the updated group with id, name, active, follow_up_possible, user_ids, created_at, updated_at. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: id, name. Subgroup names use :: as delimiter (e.g. Sales::Europe::South).

delete_a_zammad_group_by_id

Delete a Zammad group by id. This is a permanent removal that cannot be undone; groups with references in tickets or activity streams cannot be deleted. Returns an empty 200 response with {} on success. Required: id.

zammad_groups_search

Search Zammad groups by query string. Returns an array of group objects including id, name, name_last, active, follow_up_possible, parent_id, signature_id, email_address_id, shared_drafts, created_at, updated_at, and user_ids. Supports expand, full, sort_by, and order_by parameters for richer or sorted results. Returns: active, assignment_timeout, created_at, created_by_id, email_address_id, follow_up_assignment, follow_up_possible, id, name, note, signature_id, updated_at, updated_by_id, user_ids. Required: query.

list_all_zammad_roles

List Zammad roles. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id.

get_single_zammad_role_by_id

Get a single Zammad role by id. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id. Required: id.

create_a_zammad_role

Create a new Zammad role. Returns the created role with id, name, active, note, default_at_signup, permission_ids, group_ids, created_at, updated_at. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id.

update_a_zammad_role_by_id

Update an existing Zammad role by id. Returns the updated role with id, name, active, note, default_at_signup, permission_ids, group_ids, created_at, updated_at. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id. Required: id.

zammad_roles_search

Search Zammad roles by query string. Returns matching roles with id, name, active, note, default_at_signup, permission_ids, group_ids, created_at, updated_at. Returns: active, created_at, created_by_id, default_at_signup, group_ids, id, knowledge_base_permission_ids, name, note, permission_ids, preferences, updated_at, updated_by_id. Required: query.

list_all_zammad_slas

List Zammad SLAs. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id.

get_single_zammad_sla_by_id

Get a single Zammad SLA by id. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id. Required: id.

create_a_zammad_sla

Create a new Zammad SLA. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id. Required: name. SLAs depend on Zammad Calendars.

update_a_zammad_sla_by_id

Update an existing Zammad SLA by id. Returns: calendar_id, condition, created_at, created_by_id, first_response_time, id, name, response_time, solution_time, update_time, updated_at, updated_by_id. Required: id.

delete_a_zammad_sla_by_id

Delete a Zammad SLA by id. This is a permanent removal and cannot be undone. Returns an empty 200 response on success. Required: id.

list_all_zammad_calendars

List all Zammad calendars used for SLA calculations. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id.

get_single_zammad_calendar_by_id

Get a single Zammad calendar by id. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id. Required: id.

create_a_zammad_calendar

Create a new Zammad calendar with business hours, timezone, and public holiday configuration. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id.

update_a_zammad_calendar_by_id

Update an existing Zammad calendar's name, timezone, business hours, public holidays, iCal URL, or note. Returns: business_hours, created_at, created_by_id, default, ical_url, id, last_log, last_sync, name, public_holidays, timezone, updated_at, updated_by_id. Required: id.

delete_a_zammad_calendar_by_id

Delete a Zammad calendar by id. This is a permanent removal that cannot be undone. Calendars referenced by SLA configurations cannot be deleted. Returns an empty 200 response with {} on success. Required: id.

list_all_zammad_tickets

List Zammad tickets. Returns: article_count, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id.

get_single_zammad_ticket_by_id

Get a single Zammad ticket by id. Returns: article_count, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id.

create_a_zammad_ticket

Create a new Zammad ticket with an optional initial article. Returns the created ticket including id, number, title, group_id, customer_id, article_ids, ticket_time_accounting_ids, created_at, updated_at. Returns: article_count, article_ids, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, ticket_time_accounting_ids, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id. Required: title, group, customer.

update_a_zammad_ticket_by_id

Update a Zammad ticket by id, optionally adding a new article. Returns the updated ticket including id, number, title, group_id, state_id, priority_id, article_ids, ticket_time_accounting_ids, updated_at. Returns: article_count, article_ids, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, ticket_time_accounting_ids, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id. Required: id.

delete_a_zammad_ticket_by_id

Permanently delete a Zammad ticket by id. All articles and attachments are lost and cannot be restored. Returns an empty 200 response with {} on success. Required: id.

zammad_tickets_search

Search Zammad tickets by query string. Returns an array of ticket objects including id, number, title, group_id, priority_id, state_id, owner_id, customer_id, article_count, created_at, and updated_at. Supports expand to resolve relation IDs to names, full to include all related assets, and sort_by/order_by for sorting. Returns: article_count, close_at, close_diff_in_min, close_escalation_at, close_in_min, create_article_sender_id, create_article_type_id, created_at, created_by_id, customer_id, escalation_at, first_response_at, first_response_diff_in_min, first_response_escalation_at, first_response_in_min, group_id, id, last_contact_agent_at, last_contact_at, last_contact_customer_at, last_owner_update_at, note, number, organization_id, owner_id, pending_time, preferences, priority_id, state_id, time_unit, title, type, update_diff_in_min, update_escalation_at, update_in_min, updated_at, updated_by_id. Required: query.

get_single_zammad_ticket_article_by_id

Get a single Zammad ticket article by id. Returns: attachments, body, cc, content_type, created_at, created_by, created_by_id, from, id, in_reply_to, internal, message_id, message_id_md5, origin_by_id, preferences, references, reply_to, sender, sender_id, subject, ticket_id, time_unit, to, type, type_id, updated_at, updated_by, updated_by_id. Required: id.

create_a_zammad_ticket_article

Create a new article on an existing Zammad ticket. Returns the created article object including id, ticket_id, type, sender, subject, body, internal, created_at, and attachments. Returns: attachments, body, cc, content_type, created_at, created_by, created_by_id, from, id, in_reply_to, internal, message_id, message_id_md5, origin_by_id, preferences, references, reply_to, sender, sender_id, subject, ticket_id, to, type, type_id, updated_at, updated_by, updated_by_id. Required: ticket_id. Use origin_by_id to create articles on behalf of other users.

list_all_zammad_ticket_articles

List all ticket articles for a specific Zammad ticket. Returns: attachments, body, cc, content_type, created_at, created_by, created_by_id, from, id, in_reply_to, internal, message_id, message_id_md5, origin_by_id, preferences, references, reply_to, sender, sender_id, subject, ticket_id, time_unit, to, type, type_id, updated_at, updated_by, updated_by_id. Required: ticket_id.

get_single_zammad_ticket_attachment_by_id

Download a specific ticket attachment file from Zammad. Returns the raw binary content of the attachment file (content type depends on the uploaded file). Required: ticket_id, article_id, id.

list_all_zammad_ticket_states

List all ticket states in Zammad. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id.

get_single_zammad_ticket_state_by_id

Get a single Zammad ticket state by id. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id. Required: id.

create_a_zammad_ticket_state

Create a new ticket state in Zammad. Returns the created state with id, name, state_type_id, active, ignore_escalation, and timestamps. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id. Required: name, state_type_id. The state_type_id is instance-specific and must be obtained via the Rails console as no API endpoint lists state types.

update_a_zammad_ticket_state_by_id

Update a Zammad ticket state by id. Returns the updated state with id, name, state_type_id, note, active, and timestamps. Returns: active, created_at, created_by_id, default_create, default_follow_up, id, ignore_escalation, name, next_state_id, note, state_type_id, updated_at, updated_by_id. Required: id.

delete_a_zammad_ticket_state_by_id

Delete a Zammad ticket state by id. Returns an empty 200 response with {} on success. Required: id. Removal is permanent; states referenced by tickets cannot be deleted via the API.

list_all_zammad_ticket_priorities

List all ticket priorities in Zammad. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id.

get_single_zammad_ticket_priority_by_id

Get a single Zammad ticket priority by id. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id. Required: id.

create_a_zammad_ticket_priority

Create a new ticket priority in Zammad. Returns the created priority with id, name, default_create, ui_icon, ui_color, note, active, created_at, updated_at. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id. Required: name.

update_a_zammad_ticket_priority_by_id

Update a Zammad ticket priority by id. Returns the updated priority with id, name, default_create, ui_icon, ui_color, note, active, created_at, updated_at. Returns: active, created_at, created_by_id, default_create, id, name, note, ui_color, ui_icon, updated_at, updated_by_id. Required: id.

delete_a_zammad_ticket_priority_by_id

Delete a Zammad ticket priority by id. This is a permanent removal that cannot be undone; priorities referenced by existing tickets cannot be deleted. Returns an empty 200 response on success. Required: id.

list_all_zammad_tags

List tags attached to a Zammad ticket by object type and id. Returns: tags. Required: object, o_id.

zammad_tags_add

Add a tag to a Zammad ticket object. The tag is created if it does not already exist. Returns: empty response. Required: item, object, o_id.

zammad_tags_remove

Remove a tag from a Zammad ticket object. Returns: empty response. Required: item, object, o_id.

list_all_zammad_tag_list

List all tags in Zammad's administration scope. Returns: id, name, count.

create_a_zammad_tag_list

Create a new tag in Zammad. Required: name. Returns an empty object on success. Returns: empty response.

update_a_zammad_tag_list_by_id

Rename a tag in Zammad by id. Required: id, name. Returns an empty object on success. Returns: empty response.

delete_a_zammad_tag_list_by_id

Delete a tag in Zammad by id. Required: id. Returns an empty object on success. Returns: empty response.

list_all_zammad_online_notifications

List online notifications in Zammad, with optional expand to resolve object references. Returns: id, o_id, object_lookup_id, type_lookup_id, user_id, seen, updated_by_id, created_by_id, created_at, updated_at.

get_single_zammad_online_notification_by_id

Get a single online notification by id in Zammad. Returns: id, o_id, object_lookup_id, type_lookup_id, user_id, seen, updated_by_id, created_by_id, created_at, updated_at. Required: id.

update_a_zammad_online_notification_by_id

Update an online notification's seen status by id in Zammad. Returns: id, o_id, object_lookup_id, type_lookup_id, user_id, seen, updated_by_id, created_by_id, created_at, updated_at. Required: id.

delete_a_zammad_online_notification_by_id

Delete an online notification by id in Zammad. Returns an empty 200 response on success. Required: id.

zammad_online_notifications_mark_all_as_read

Mark all online notifications as read in Zammad. Returns an empty 200 response on success.

list_all_zammad_object_manager_attributes

List all Zammad object manager attributes. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id.

get_single_zammad_object_manager_attribute_by_id

Get a single Zammad object manager attribute by id. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id. Required: id.

create_a_zammad_object_manager_attribute

Create a new Zammad object manager attribute. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id. Required: name, object, display, data_type, data_option.

update_a_zammad_object_manager_attribute_by_id

Update a Zammad object manager attribute by id. Returns: active, created_at, created_by_id, data_option, data_option_new, data_type, display, editable, id, name, object_lookup_id, position, screens, to_config, to_create, to_delete, to_migrate, updated_at, updated_by_id. Required: id, data_option. Object type cannot be changed after creation.

delete_a_zammad_object_manager_attribute_by_id

Delete a Zammad object manager attribute by id. Returns an empty 200 response on success. Required: id.

zammad_object_manager_attributes_execute_migrations

Execute pending database migrations for Zammad object manager attributes. Returns an empty 200 response on success. A Zammad restart is mandatory after executing migrations.

list_all_zammad_user_access_token

List user access tokens in Zammad. Returns: permissions, tokens.

create_a_zammad_user_access_token

Create a new user access token in Zammad. Returns the generated API token string, which is provided only once after creation and cannot be retrieved later. Returns: token. Required: name, permission.

delete_a_zammad_user_access_token_by_id

Delete a user access token in Zammad by id. Returns an empty response on success. Required: id.

create_a_zammad_data_privacy_task

Create a Zammad data privacy task to permanently delete a user and related data such as tickets. Returns: id, state, deletable_type, deletable_id, preferences, updated_by_id, created_by_id, created_at, updated_at. Required: deletable_type, deletable_id.

get_single_zammad_data_privacy_task_by_id

Get a Zammad data privacy task by id to check its state and verify completion. Returns: id, state, deletable_type, deletable_id, preferences, updated_by_id, created_by_id, created_at, updated_at. Required: id. Task execution may take some time.

list_all_zammad_time_accountings

List time accounting entries for a Zammad ticket. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id.

get_single_zammad_time_accounting_by_id

Get a single time accounting entry for a Zammad ticket by id. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id, id.

create_a_zammad_time_accounting

Create a time accounting entry for a Zammad ticket. Returns the created entry including id, ticket_id, ticket_article_id, time_unit, type_id, created_by_id, created_at, and updated_at. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id, time_unit.

update_a_zammad_time_accounting_by_id

Update a time accounting entry for a Zammad ticket by id. Returns the updated entry including id, ticket_id, ticket_article_id, time_unit, type_id, created_by_id, created_at, and updated_at. Returns: created_at, created_by_id, id, ticket_article_id, ticket_id, time_unit, type_id, updated_at. Required: ticket_id, id.

delete_a_zammad_time_accounting_by_id

Delete a time accounting entry for a Zammad ticket by id. Returns an empty 200 response on success. Required: ticket_id, id.

list_all_zammad_ticket_shared_drafts

Show the shared draft for a Zammad ticket. Returns: shared_draft_id, assets. Required: ticket_id.

create_a_zammad_ticket_shared_draft

Create or replace a shared draft for a Zammad ticket. Returns: shared_draft_id, assets. Required: ticket_id, form_id.

zammad_ticket_shared_drafts_bulk_delete

Delete the shared draft for a Zammad ticket. Returns: shared_draft_id. Required: ticket_id.

list_all_zammad_links

List ticket links for a specific object in Zammad. Returns: links, assets. Required: link_object, link_object_value.

zammad_links_add

Create a link between two Zammad tickets. Returns: id, link_type_id, link_object_source_id, link_object_source_value, link_object_target_id, link_object_target_value, created_at, updated_at. Required: link_type, link_object_target, link_object_target_value, link_object_source, link_object_source_number. The target value must be a ticket ID; the source number must…

zammad_links_remove

Remove a link between two Zammad tickets. Returns an empty 201 response on success. Required: link_type, link_object_source, link_object_source_value, link_object_target, link_object_target_value. Returns: empty response.

list_all_zammad_mentions

List mentions in Zammad. Returns: mentions.

create_a_zammad_mention

Create a mention in Zammad for the current session user on a mentionable object. Returns true on successful creation. Returns: empty response. Required: mentionable_type, mentionable_id.

delete_a_zammad_mention_by_id

Delete a mention in Zammad by id. Returns: created_at, created_by_id, id, mentionable_id, mentionable_type, updated_at, updated_by_id, user_id. Required: id.

zammad_knowledge_bases_init

Initialize a new knowledge base in Zammad, returning a comprehensive overview of the created knowledge base and all related entities. Returns: KnowledgeBase (id, iconset, color_highlight, active), KnowledgeBaseTranslation, KnowledgeBaseLocale, KnowledgeBaseCategory, KnowledgeBaseCategoryTranslation, KnowledgeBaseAnswer, KnowledgeBaseAnswerTranslation, and User entity collections.

get_single_zammad_knowledge_base_by_id

Get a single Zammad knowledge base by id. Returns the full knowledge base object including id, iconset, color_highlight, color_header, color_header_link, homepage_layout, category_layout, active, show_feed_icon, custom_address, created_at, updated_at, and related entity ID arrays. Required: id.

update_a_zammad_knowledge_base_by_id

Update settings for a Zammad knowledge base by id, such as show_feed_icon and custom_address. Returns the updated knowledge base object including id, iconset, color settings, layout configuration, active status, show_feed_icon, custom_address, created_at, updated_at, and related entity ID arrays. Required: id.

zammad_knowledge_bases_get_permissions

Get the permission configuration for a Zammad knowledge base, including which roles have reader or editor access and any inherited permissions. Returns: roles_reader, roles_editor, permissions, inherited. Required: knowledge_base_id.

zammad_knowledge_bases_reorder_root_categories

Reorder the root-level categories of a Zammad knowledge base by providing the complete ordered list of all top-level category IDs. Returns: KnowledgeBaseCategory, KnowledgeBase, KnowledgeBaseLocale, KnowledgeBaseTranslation, KnowledgeBaseCategoryTranslation. Required: knowledge_base_id, ordered_ids. Must provide the complete order of all top-level categories (categories with no parent).

zammad_knowledge_bases_bulk_update

Update the permission configuration for a Zammad knowledge base by specifying a map of role ids to access levels (editor or reader). Returns: roles_reader, roles_editor, permissions, inherited. Required: knowledge_base_id, permissions_dialog.

get_single_zammad_kb_category_by_id

Get a single Zammad knowledge base category by id. Returns: id, knowledge_base_id, parent_id, category_icon, position, created_at, updated_at, translation_ids, answer_ids, child_ids, permission_ids, permissions_effective. Required: knowledge_base_id, id.

create_a_zammad_kb_category

Create a new Zammad knowledge base category under a specific knowledge base. Returns: id, created_at, updated_at. Required: knowledge_base_id, translations_attributes.

update_a_zammad_kb_category_by_id

Update a Zammad knowledge base category by id, including its icon, parent, and translations. Returns: id, created_at, updated_at. Required: knowledge_base_id, id.

Why Truto

Why use Truto’s MCP server for Zammad

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Zammad in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Zammad account

Use Truto’s frontend SDK to connect your customer’s Zammad account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Zammad

Truto’s Proxy API is a 1-to-1 mapping of the Zammad API. You call us, we call Zammad, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Zammad’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Zammad on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication to Zammad work through Truto?

Your end users connect their Zammad instance to Truto, and Truto stores the credentials and instance URL per connected account. Your product calls Truto with a connection identifier and never handles Zammad tokens directly.

Can we post ticket comments on behalf of a specific Zammad user?

Yes. When creating a ticket article, Zammad supports attributing the article to a specific user rather than the API bot, so integrations can preserve authorship for both agents and end customers.

How do we handle custom fields defined by each customer's Zammad instance?

Use the object manager attribute endpoints to list existing attributes on tickets, users, and organizations, and create new ones when needed. Zammad requires executing migrations after schema changes, which is also available as an operation.

Can we search tickets by SLA breach or escalation state?

Yes. Ticket search returns SLA-related fields such as first response and update escalation timestamps, so you can filter or post-process tickets that are at risk of breach and act on them programmatically.

Is there support for GDPR deletion of Zammad users?

Zammad exposes data privacy tasks, which perform a hard deletion of a user and their associated tickets and PII. You can create and check the status of these tasks through the integration.

What ticket-adjacent objects can we manage beyond tickets themselves?

The integration covers groups, roles, ticket states, priorities, SLAs, calendars, tags, links, mentions, online notifications, shared drafts, attachments, user access tokens, and knowledge base categories, so you can model the full support workspace and not just the ticket record.

Zammad

Get Zammad integrated into your app

Our team understands what it takes to make a Zammad integration successful. A short, crisp 30 minute call with folks who understand the problem.