← All integrations

Front

Let an agent work your shared inbox without speaking for you unchecked. It searches and reads conversations, drafts replies, comments, assigns, tags, archives and reopens them, and a reply to a customer can wait for a person.

Frontsecret · FRONT
host
api2.frontapp.com
connect
API key, per user
  • Reply to conversation

    front-reply-to-conversation

  • Create draft reply

    front-create-draft-reply

  • Add comment

    front-add-comment

  • Assign conversation

    front-assign-conversation

writes are off until switched on

Reads and writes in Front. Writes are off until you switch them on.

Each one is a named operation from the pack. Reads change nothing.

Writes

  • Reply to conversation

    read back

    front-reply-to-conversation

    Send a reply in one conversation, to its current recipients, from the conversation's channel. The customer receives it. Optionally sent as a teammate (author_id). The conversation is not archived. Front accepts the reply and creates the message a moment later.

  • Create draft reply

    read back

    front-create-draft-reply

    Create a draft reply to the last message in a conversation, from one channel, shared with the team. Nothing is sent: a teammate reviews and sends it in Front.

  • Add comment

    read back

    front-add-comment

    Add an internal comment to a conversation, optionally as a teammate. Teammates see it; the customer never does. Markdown works.

  • Assign conversation

    read back

    front-assign-conversation

    Assign a conversation to one teammate, replacing the current assignee.

  • Unassign conversation

    read back

    front-unassign-conversation

    Remove the assignee from a conversation. Pass the teammate it is assigned to now (assignee.id from get-conversation).

  • Archive conversation

    read back

    front-archive-conversation

    Archive a conversation. It leaves the open view and comes back when the customer writes again.

  • Reopen conversation

    read back

    front-reopen-conversation

    Reopen an archived conversation.

  • Tag conversation

    read back

    front-tag-conversation

    Add one existing tag to a conversation. The other tags stay.

  • Create contact

    read back

    front-create-contact

    Create a company contact with a name and one email address, optionally a description.

  • Rename contact

    read back

    front-rename-contact

    Replace a contact's name.

  • Set contact description

    read back

    front-set-contact-description

    Replace a contact's description.

  • Add contact note

    acknowledged

    front-add-contact-note

    Add a note to a contact, written as one teammate. Teammates see it in the contact's details.

Reads

  • Search conversations

    front-search-conversations

    Search conversations with Front's search syntax, newest activity first: for example `is:open inbox:inb_123`, `from:pam@example.com` or `tag:tag_123 refund`. Returns _total and up to 10 conversations a page, each with its status, assignee, recipient and tags. When _pagination.next is set, pass its page_token value as page_token. Front limits this endpoint to a share of the company's rate limit.

  • Get conversation

    front-get-conversation

    Get one conversation: subject, status (assigned, unassigned, archived), assignee, recipient, tags, links and custom fields. A merged conversation answers with a redirect to the one it was merged into.

  • List conversation messages

    front-list-conversation-messages

    List the messages in a conversation, newest first: sender and recipients, subject, HTML body and text, whether it was inbound, and attachment names. 5 a page, because bodies are long; a very long body can still be cut at the response limit. When _pagination.next is set, pass its page_token value as page_token.

  • Get message

    front-get-message

    Get one message by id: sender and recipients, subject, HTML body, text, whether it was inbound, and attachment names. Attachments themselves are not downloaded.

  • List conversation comments

    front-list-conversation-comments

    List the internal comments on a conversation, newest first: author, body and when it was posted. Customers never see comments. Front returns them all in one response, so a very long discussion can be cut at the response limit.

  • List inboxes

    front-list-inboxes

    List the inboxes the token can see, with id and name. Use an id in a search (`inbox:inb_123`). Front returns them all in one response.

  • List channels

    front-list-channels

    List the channels the token can see (email addresses, chat and SMS channels), with id, type, address and inbox. A draft reply needs a channel id. Front returns them all in one response.

  • List teammates

    front-list-teammates

    List the company's teammates: id, email, username, name, and whether they are available. Use an id to assign a conversation or to write as a teammate. Front returns them all in one response, so a very large company's list can be cut at the response limit.

  • List tags

    front-list-tags

    List the tags the token can see (company, team and teammate tags): id, name and description. 50 a page. When _pagination.next is set, pass its page_token value as page_token.

  • Get contact

    front-get-contact

    Get one contact by id: name, description, handles (email, phone and other addresses), the contact lists it is in, links and custom fields.

  • Find contact by email

    front-find-contact-by-email

    Get the contact that has this email address as a handle, the same fields as get-contact. Front answers 404 when no contact has it.

  • List contact conversations

    front-list-contact-conversations

    List one contact's conversations, newest first, with status, assignee and tags. 10 a page. When _pagination.next is set, pass its page_token value as page_token.

  • List contact notes

    front-list-contact-notes

    List the notes teammates added to a contact: author, body and when it was added. Front returns them all in one response.

How do users connect? Each one brings their own Front.

  1. 1.Call for the userYour server invokes the action for the signed-in user. Without a Front connection, the SDK throws EndUserNotConnectedError with a connect link.
  2. 2.The user pastes a keyThe link opens a form that shows where in Front's settings to create the key. The link lasts 10 minutes and works once.
  3. 3.Anlyon checks itThe key is checked with Front before it is kept, and bound to api2.frontapp.com. It is never shown back.
  4. 4.Your server confirmsYour server confirms the connection for the user who is signed in, and the call goes through.

Guardrails. Suggested limits and approvals, for you to review.

Suggested limits

  • 100 replies sent a day
  • 200 draft replies a day
  • 300 comments a day
  • 300 conversations assigned a day
  • 100 conversations unassigned a day
  • 300 conversations archived a day
  • 100 conversations reopened a day
  • 300 conversation tags added a day
  • 100 contacts created a day
  • 100 contacts renamed a day
  • 100 contact descriptions set a day
  • 200 contact notes a day

Suggested approvals

  • A person approves replying to a customer

What the key must allow

  • An API token an admin creates
  • Global resources and the shared workspaces your agent works in
  • Read, Write and Send; Delete is not needed

Good to know

  • A reply is sent once and never repeated: Front has no idempotency key for it.
  • Removing a tag is not offered.

For your own account

  1. 1.In Front, an admin opens Settings, Developers, API Tokens and creates a token.
  2. 2.In Anlyon, open Actions, then Integrations, choose Front and paste the token.
  3. 3.Anlyon checks the token with Front before storing it. It becomes a secret named FRONT, bound to api2.frontapp.com.

Front in your code. For one of your users, or for your own account.

Act for one of your users from your server, or connect your company's own Front with the CLI.

front.ts
import { Client, EndUserNotConnectedError } from "@anlyonhq/sdk";const anlyon = new Client({ apiKey: process.env.ANLYON_API_KEY! });try {  const { data } = await anlyon    .forUser(session.userId)    .actions.invoke("front-create-draft-reply", {      conversation_id: "cnv_55c8c149",      channel_id: "cha_14tfp",      body: "Hi Sam, we refunded your order."    });  return { status: "done", grade: data.grade };} catch (error) {  if (error instanceof EndUserNotConnectedError) {    // The user connects their own Front, then you call again.    return { status: "connect_required", url: error.connectUrl };  }  throw error;}

Let your agent act for your users, safely.

A few lines of server code, then send a user a connect link. Nothing to host.

$ claude mcp add --transport http anlyon https://api.anlyon.com/mcp