Cofounder

Customer Support

Give customers a support inbox. Each email becomes a ticket linked to the sender's CRM contact, and your agent tracks it until it's closed.

Give customers one address to write to, like support@yourcompany.com. Each new email becomes an open ticket linked to the sender's contact in your CRM, and your agent tracks it until it's closed. Any company member can work tickets.

This page is about your customers' support. To reach the Cofounder team, use support_create (Support).

Customer support is not available to every company yet. The Support page and CLI/MCP tools are available only after it is enabled for your company. This is separate from choosing an inbox: mailbox setup does not enable the feature. Direct API access and incoming ticket processing remain available.

Choose a Support Inbox

Your agent either creates a new mailbox for support or uses one the company already has. A new one can be on a domain the company owns or on its trial domain. Trial-domain inboxes and the first inbox on your own domain are free; each one after that is $2 a month.

If the domain's email setup isn't finished, support stays off until it is. Your agent gives you the remaining steps and tries again after.

Setup also adds support/policies.md to your Library if it isn't there, so your agent has a place to read your support policies. It keeps any policies you already wrote. It doesn't turn on automatic replies, and you can't switch to a different support inbox yet.

Handling Requests

New customer email opens a ticket, and replies stay on the same ticket. Email sent to your other inboxes doesn't create tickets.

Your agent lists the open tickets, reads a ticket with its messages, and gets links to any attachments. Each ticket has a status:

  • open: needs attention.
  • waiting_customer: waiting on the customer.
  • waiting_company: waiting on you or your agent.
  • closed: done. A new reply from the customer reopens it.

Your agent can also set a priority (urgent, high, normal, or low), assign the ticket to a teammate, write down the next step, and flag tickets that need a person to decide. Assigning a ticket doesn't limit who can see it. Your agent can filter tickets by status, priority, assignee, or that flag. Use requester_contact_id to find a CRM contact's tickets or query to search ticket subjects.

Changing a ticket doesn't send the customer any email. A customer reply reopens a closed ticket and keeps its notes and settings.

For a company enrolled in inbound screening, ticket subjects remain hidden. Message text is available only when that message has a complete clear screening result. Pending, review, unavailable, missing, or invalid results withhold the text and set content_withheld; agent_armor.status and agent_armor.verdict report the screening state. Ticket and message metadata remain available. Attachment downloads are unavailable while screening is enabled because attachment contents are not screened.

Share Internal Notes

Your agent and teammates can leave notes on a ticket, like "check the refund with a teammate". Notes record who wrote them and when, stay internal, and never reach the customer.

Reply to Customers

Your agent can save a suggested reply and a draft for the whole team to see, then send the reply in the ticket's original email thread. Only the reply text goes to the customer, never notes or suggestions. Sending doesn't change the ticket's status.

A successful send clears the saved draft only if nobody changed it in the meantime. A failed send keeps it. If a send's result is unclear, your agent retries with the same reply key and it won't go out twice. Mailbox limits and do-not-contact rules still apply.

Include the ticket's updated_at as expected_updated_at when saving or discarding a draft. A changed ticket returns 409 instead of overwriting newer edits. Keep your entered text, read the current ticket, and compare the drafts before saving again. The Support page uses this check for draft saves in both the dashboard and MCP app.

Use the Support Page

Open Support in the dashboard or ask your agent to call company_app_open with view: "support" to show the same page inside your MCP host. Pass ticket_id to open a ticket, contact_id to filter by customer, or needs_human_attention: true to focus on flagged work.

The Support page lets every company member manage tickets, share notes, and send replies. Needs human attention shows flagged tickets that are not closed. In an empty reply box, Tab inserts the saved suggestion for editing. Typing preserves the suggestion, Discard clears both fields, and only Send sends. Open a ticket's CRM contact to read the same emails alongside other activity and navigate back to their tickets.

Commands

MCPCLIAPI

On MCP, a new inbox is {"source": "new", "local_part": "support"}, with mail_domain or mail_domain_id to pick the domain. An existing one is {"source": "existing", "inbox_resource_id": "<mailbox-id>"}. Pass include_messages and attachment_ids to customer_support_tickets_get only when you need the messages, since they're fetched from the mailbox.

customer_support_tickets_update takes status, priority, assignee_user_id, next_action, needs_human_attention, suggested_reply, and reply_draft. Omitted fields stay unchanged. Set assignee_user_id or next_action to null to clear it, and send suggested_reply: null with reply_draft: "" to discard both. Text fields and notes hold up to 100,000 characters.

To reply, read the ticket with include_messages: true, then pass the reply body, a message_id from its messages, the ticket's updated_at as draft_updated_at, and an idempotency_key:

{"ticket_id": "<ticket-id>", "body": "Thanks for reporting this. We're looking into it.", "message_id": "<message-id>", "draft_updated_at": "<ticket-updated-at>", "idempotency_key": "<unique-reply-key>"}

Include company_id on a personal connection.