Skip to main content
Glama
functions.ts2.83 kB
import { AgentMailClient } from 'agentmail' import { CanvasFactory } from 'pdf-parse/worker' import { PDFParse } from 'pdf-parse' import mammoth from 'mammoth' import { fileTypeFromBuffer } from 'file-type' export type Args = Record<string, any> interface Attachment { text?: string error?: string file_type?: string } export async function listInboxes(client: AgentMailClient, args: Args) { return client.inboxes.list(args) } export async function getInbox(client: AgentMailClient, args: Args) { const { inbox_id, ...options } = args return client.inboxes.get(inbox_id, options) } export async function createInbox(client: AgentMailClient, args: Args) { return client.inboxes.create(args) } export async function deleteInbox(client: AgentMailClient, args: Args) { const { inbox_id } = args return client.inboxes.delete(inbox_id) } export async function listThreads(client: AgentMailClient, args: Args) { const { inbox_id, ...options } = args return client.inboxes.threads.list(inbox_id, options) } export async function getThread(client: AgentMailClient, args: Args) { const { inbox_id, thread_id, ...options } = args return client.inboxes.threads.get(inbox_id, thread_id, options) } export async function getAttachment(client: AgentMailClient, args: Args): Promise<Attachment> { const { thread_id, attachment_id } = args const response = await client.threads.getAttachment(thread_id, attachment_id) const fileBytes = Buffer.from(await response.arrayBuffer()) const fileKind = await fileTypeFromBuffer(fileBytes) const fileType = fileKind?.mime let text = undefined if (fileType === 'application/pdf') { const parser = new PDFParse({ data: fileBytes, CanvasFactory }) const pdfData = await parser.getText() text = pdfData.text } else if (fileType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') { const result = await mammoth.extractRawText({ buffer: fileBytes }) text = result.value } else { return { error: `Unsupported file type: ${fileType || 'unknown'}`, file_type: fileType, } } return { text, file_type: fileType } } export async function sendMessage(client: AgentMailClient, args: Args) { const { inbox_id, ...options } = args return client.inboxes.messages.send(inbox_id, options) } export async function replyToMessage(client: AgentMailClient, args: Args) { const { inbox_id, message_id, ...options } = args return client.inboxes.messages.reply(inbox_id, message_id, options) } export async function updateMessage(client: AgentMailClient, args: Args) { const { inbox_id, message_id, ...options } = args return client.inboxes.messages.update(inbox_id, message_id, options) }

Implementation Reference

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/agentmail-to/agentmail-toolkit'

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