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 usUse Cases
Why integrate with Zammad
Common scenarios for SaaS companies building Zammad integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
Time tracking export for billing
Pull time accountings per ticket to feed invoicing, payroll, or utilization dashboards without agents leaving Zammad.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
From the Blog
Zammad integration guides
Deep dives, architecture guides, and practical tutorials for building Zammad integrations.
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.