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 processedLabels to Apply
| Classification | Labels |
|---|---|
| Sales inquiry | sales, high-priority |
| Support request | support |
| Spam/marketing | spam |
| Meeting request | meeting |
| Newsletter | newsletter, 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