Skip to main content
Glama
email_models.py3.2 kB
""" Pydantic models for email operations """ from pydantic import BaseModel, Field, EmailStr from typing import Optional, List, Dict, Any from datetime import datetime from enum import Enum class EmailCategory(str, Enum): """Email categories""" WORK = "work" PERSONAL = "personal" JOB_APPLICATION = "job_application" URGENT = "urgent" SPAM = "spam" NEWSLETTER = "newsletter" SOCIAL = "social" FINANCIAL = "financial" OTHER = "other" class EmailPriority(str, Enum): """Email priority levels""" LOW = "low" MEDIUM = "medium" HIGH = "high" URGENT = "urgent" class EmailStatus(str, Enum): """Email processing status""" UNREAD = "unread" READ = "read" ARCHIVED = "archived" REPLIED = "replied" FOLLOW_UP = "follow_up" class Email(BaseModel): """Email data model""" id: str = Field(..., description="Email ID") thread_id: str = Field(..., description="Thread ID") from_email: str = Field(..., description="Sender email") from_name: Optional[str] = None to: List[str] = Field(default_factory=list) cc: List[str] = Field(default_factory=list) bcc: List[str] = Field(default_factory=list) subject: str = Field(..., description="Email subject") body: str = Field(..., description="Email body") snippet: Optional[str] = None date: datetime = Field(..., description="Email date") labels: List[str] = Field(default_factory=list) category: Optional[EmailCategory] = None priority: EmailPriority = EmailPriority.MEDIUM status: EmailStatus = EmailStatus.UNREAD has_attachments: bool = False attachments: List[Dict[str, Any]] = Field(default_factory=list) metadata: Dict[str, Any] = Field(default_factory=dict) class EmailSummary(BaseModel): """Email summary for batch processing""" total_emails: int unread_count: int by_category: Dict[str, int] by_priority: Dict[str, int] urgent_emails: List[Email] action_required: List[Email] top_senders: List[Dict[str, Any]] period: str generated_at: datetime = Field(default_factory=datetime.now) class EmailFilter(BaseModel): """Email filter criteria""" query: Optional[str] = None from_email: Optional[str] = None to_email: Optional[str] = None subject_contains: Optional[str] = None category: Optional[EmailCategory] = None priority: Optional[EmailPriority] = None has_attachment: Optional[bool] = None is_unread: Optional[bool] = None after_date: Optional[datetime] = None before_date: Optional[datetime] = None labels: Optional[List[str]] = None max_results: int = 100 class EmailDraft(BaseModel): """Email draft for sending""" to: List[EmailStr] subject: str body: str cc: Optional[List[EmailStr]] = None bcc: Optional[List[EmailStr]] = None reply_to: Optional[str] = None in_reply_to: Optional[str] = None html: bool = False attachments: Optional[List[str]] = None class EmailAction(BaseModel): """Email action to perform""" email_id: str action: str # reply, forward, archive, delete, mark_spam, mark_read data: Optional[Dict[str, Any]] = None

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pbulbule13/mcpwithgoogle'

If you have feedback or need assistance with the MCP directory API, please join our Discord server