MailgentMailgent
Examples

Email Classifier

Automatically classify and label incoming emails

An agent that reads incoming emails and applies labels based on content.

How It Works

1. Poll for new unread emails
2. Classify each email using an LLM
3. Apply labels based on classification
4. Mark as processed

Labels to Apply

ClassificationLabels
Sales inquirysales, high-priority
Support requestsupport
Spam/marketingspam
Meeting requestmeeting
Newsletternewsletter, low-priority

MCP Flow

Tell Claude:

"Check my inbox and classify each unread email as sales, support, spam, meeting, or newsletter. Label them accordingly."

API Flow

def classify_email(text):
    response = llm.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "system",
            "content": "Classify this email as one of: sales, support, spam, meeting, newsletter. Reply with just the category."
        }, {
            "role": "user",
            "content": text
        }]
    )
    return response.choices[0].message.content.strip().lower()

def process_inbox():
    res = requests.get(f"{BASE}/messages?labels=unread", headers=headers)

    for msg in res.json()["messages"]:
        category = classify_email(msg["extractedText"] or msg["text"])

        labels = [category]
        if category == "sales":
            labels.append("high-priority")
        if category in ["spam", "newsletter"]:
            labels.append("low-priority")

        requests.patch(
            f"{BASE}/messages/{msg['messageId']}",
            headers=headers,
            json={
                "addLabels": ["read", "classified", *labels],
                "removeLabels": ["unread"]
            }
        )

Query Classified Emails

# Get all sales inquiries
GET /v0/messages?labels=sales

# Get high priority items
GET /v0/messages?labels=high-priority

# Get unprocessed
GET /v0/messages?labels=unread

On this page