agentmail-toolkit 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-sdk.cjs +168 -26
- package/dist/ai-sdk.cjs.map +1 -1
- package/dist/ai-sdk.js +1 -1
- package/dist/chunk-2WFL2XH4.js +596 -0
- package/dist/chunk-2WFL2XH4.js.map +1 -0
- package/dist/clawdbot.cjs +168 -26
- package/dist/clawdbot.cjs.map +1 -1
- package/dist/clawdbot.js +1 -1
- package/dist/index.cjs +168 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/langchain.cjs +168 -26
- package/dist/langchain.cjs.map +1 -1
- package/dist/langchain.js +1 -1
- package/dist/langchain.js.map +1 -1
- package/dist/mcp.cjs +170 -27
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.js +3 -2
- package/dist/mcp.js.map +1 -1
- package/package.json +89 -88
package/dist/clawdbot.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/clawdbot.ts","../src/toolkit.ts","../src/schemas.ts","../src/util.ts","../src/functions.ts","../src/tools.ts"],"sourcesContent":["import type { AgentTool } from '@mariozechner/pi-agent-core'\nimport type { TSchema } from '@sinclair/typebox'\nimport { toJSONSchema } from 'zod'\n\nimport { ListToolkit } from './toolkit.js'\nimport type { Tool } from './tools.js'\n\n/** Convert Zod schema to JSON Schema, handling Date types as ISO datetime strings */\nfunction zodToJSONSchema(tool: Tool) {\n return toJSONSchema(tool.paramsSchema, {\n unrepresentable: 'any',\n override: (ctx) => {\n const def = ctx.zodSchema._zod.def\n if (def.type === 'date') {\n ctx.jsonSchema.type = 'string'\n ctx.jsonSchema.format = 'date-time'\n }\n },\n }) as unknown as TSchema\n}\n\nexport class AgentMailToolkit extends ListToolkit<AgentTool> {\n protected buildTool(tool: Tool): AgentTool {\n return {\n name: tool.name,\n label: tool.name,\n description: tool.description,\n parameters: zodToJSONSchema(tool),\n execute: async (_toolCallId, args) => {\n const result = await tool.func(this.client, tool.paramsSchema.parse(args))\n return {\n content: [{ type: 'text', text: JSON.stringify(result) }],\n details: result,\n }\n },\n }\n }\n}\n","import { AgentMailClient } from 'agentmail'\n\nimport { type Tool, tools } from './tools.js'\n\nexport abstract class BaseToolkit<T> {\n protected readonly client: AgentMailClient\n protected readonly tools: Record<string, T> = {}\n\n constructor(client?: AgentMailClient) {\n this.client = client ?? new AgentMailClient()\n\n this.tools = tools.reduce(\n (acc, tool) => {\n acc[tool.name] = this.buildTool(tool)\n return acc\n },\n {} as Record<string, T>\n )\n }\n\n protected abstract buildTool(tool: Tool): T\n}\n\nexport abstract class ListToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return Object.values(this.tools)\n\n return names.reduce((acc, name) => {\n if (name in this.tools) acc.push(this.tools[name])\n return acc\n }, [] as T[])\n }\n}\n\nexport abstract class MapToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return this.tools\n\n return names.reduce(\n (acc, name) => {\n if (name in this.tools) acc[name] = this.tools[name]\n return acc\n },\n {} as Record<string, T>\n )\n }\n}\n","import { z } from 'zod'\n\nconst InboxIdSchema = z.string().describe('ID of inbox')\nconst ThreadIdSchema = z.string().describe('ID of thread')\nconst MessageIdSchema = z.string().describe('ID of message')\nconst AttachmentIdSchema = z.string().describe('ID of attachment')\nconst DraftIdSchema = z.string().describe('ID of draft')\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().default(10).describe('Max number of items to return'),\n pageToken: z.string().optional().describe('Page token for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inboxId: InboxIdSchema,\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('Username'),\n domain: z.string().optional().describe('Domain'),\n displayName: z.string().optional().describe('Display name'),\n})\n\nexport const ListInboxItemsParams = ListItemsParams.extend({\n inboxId: InboxIdSchema,\n labels: z.array(z.string()).optional().describe('Labels to filter items by'),\n before: z.string().pipe(z.coerce.date()).optional().describe('Filter items before datetime'),\n after: z.string().pipe(z.coerce.date()).optional().describe('Filter items after datetime'),\n})\n\nexport const GetThreadParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n})\n\nexport const GetAttachmentParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n attachmentId: AttachmentIdSchema,\n})\n\nconst AttachmentSchema = z.object({\n filename: z.string().optional().describe('Filename'),\n content_id: z.string().optional().describe('Content ID for inline attachments'),\n content: z.string().optional().describe('Base64 encoded content'),\n url: z.url().optional().describe('URL'),\n})\n\nconst BaseMessageParams = z.object({\n inboxId: InboxIdSchema,\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n labels: z.array(z.string()).optional().describe('Labels'),\n attachments: z.array(AttachmentSchema).optional().describe('Attachments'),\n})\n\nexport const SendMessageParams = BaseMessageParams.extend({\n to: z.array(z.string()).describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n})\n\nexport const ReplyToMessageParams = BaseMessageParams.extend({\n messageId: MessageIdSchema,\n replyAll: z.boolean().optional().describe('Reply to all recipients'),\n})\n\nexport const ForwardMessageParams = SendMessageParams.extend({\n messageId: MessageIdSchema,\n})\n\nexport const UpdateMessageParams = z.object({\n inboxId: InboxIdSchema,\n messageId: MessageIdSchema,\n addLabels: z.array(z.string()).optional().describe('Labels to add'),\n removeLabels: z.array(z.string()).optional().describe('Labels to remove'),\n})\n\n// Draft schemas\n\nexport const CreateDraftParams = BaseMessageParams.extend({\n to: z.array(z.string()).optional().describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n replyTo: z.array(z.string()).optional().describe('Reply-to addresses'),\n inReplyTo: z.string().optional().describe('Message ID this draft is replying to'),\n sendAt: z.string().pipe(z.coerce.date()).optional().describe('ISO 8601 datetime to schedule sending (e.g. 2026-04-01T09:00:00Z)'),\n})\n\nexport const ListDraftsParams = ListInboxItemsParams\n\nexport const GetDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n})\n\nexport const UpdateDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n to: z.array(z.string()).optional().describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n replyTo: z.array(z.string()).optional().describe('Reply-to addresses'),\n sendAt: z.string().pipe(z.coerce.date()).optional().describe('ISO 8601 datetime to reschedule sending'),\n})\n\nexport const SendDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n})\n\nexport const DeleteDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n})\n","import { AgentMailClient } from 'agentmail'\nimport { getDocumentProxy, extractText } from 'unpdf'\nimport JSZip from 'jszip'\n\nexport const safeFunc = async <T>(\n func: (client: AgentMailClient, args: Record<string, any>) => Promise<T>,\n client: AgentMailClient,\n args: Record<string, any>\n) => {\n try {\n return { isError: false, result: await func(client, args) }\n } catch (error) {\n if (error instanceof Error) return { isError: true, result: error.message }\n else return { isError: true, result: 'Unknown error' }\n }\n}\n\nexport function detectFileType(bytes: Uint8Array): string | undefined {\n // PDF: starts with %PDF (0x25 0x50 0x44 0x46)\n if (bytes[0] === 0x25 && bytes[1] === 0x50 && bytes[2] === 0x44 && bytes[3] === 0x46) {\n return 'application/pdf'\n }\n // ZIP (DOCX is a ZIP): starts with PK\\x03\\x04 (0x50 0x4B 0x03 0x04)\n if (bytes[0] === 0x50 && bytes[1] === 0x4b && bytes[2] === 0x03 && bytes[3] === 0x04) {\n return 'application/zip'\n }\n return undefined\n}\n\nexport async function extractPdfText(bytes: Uint8Array): Promise<string> {\n const pdf = await getDocumentProxy(bytes)\n const { text } = await extractText(pdf)\n return Array.isArray(text) ? text.join('\\n') : text\n}\n\nexport async function extractDocxText(bytes: Uint8Array): Promise<string | undefined> {\n const zip = await JSZip.loadAsync(bytes)\n const documentXml = await zip.file('word/document.xml')?.async('string')\n if (!documentXml) return undefined\n return documentXml\n .replace(/<w:p[^>]*>/g, '\\n')\n .replace(/<[^>]+>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim()\n}\n","import { AgentMailClient } from 'agentmail'\nimport { detectFileType, extractPdfText, extractDocxText } from './util.js'\n\nexport type Args = Record<string, any>\n\nexport async function listInboxes(client: AgentMailClient, args: Args) {\n return client.inboxes.list(args)\n}\n\nexport async function getInbox(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.get(inboxId, options)\n}\n\nexport async function createInbox(client: AgentMailClient, args: Args) {\n return client.inboxes.create(args)\n}\n\nexport async function deleteInbox(client: AgentMailClient, args: Args) {\n const { inboxId } = args\n return client.inboxes.delete(inboxId)\n}\n\nexport async function listThreads(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.threads.list(inboxId, options)\n}\n\nexport async function getThread(client: AgentMailClient, args: Args) {\n const { inboxId, threadId, ...options } = args\n return client.inboxes.threads.get(inboxId, threadId, options)\n}\n\nexport async function getAttachment(client: AgentMailClient, args: Args) {\n const { threadId, attachmentId } = args\n\n const attachment = await client.threads.getAttachment(threadId, attachmentId)\n\n try {\n const response = await fetch(attachment.downloadUrl)\n const arrayBuffer = await response.arrayBuffer()\n const fileBytes = new Uint8Array(arrayBuffer)\n\n const detectedType = detectFileType(fileBytes)\n\n if (detectedType === 'application/pdf') {\n return { ...attachment, text: await extractPdfText(fileBytes) }\n } else if (detectedType === 'application/zip') {\n return { ...attachment, text: await extractDocxText(fileBytes) }\n }\n } catch {}\n\n return attachment\n}\n\nexport async function sendMessage(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.messages.send(inboxId, options)\n}\n\nexport async function replyToMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.reply(inboxId, messageId, options)\n}\n\nexport async function forwardMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.forward(inboxId, messageId, options)\n}\n\nexport async function updateMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.update(inboxId, messageId, options)\n}\n\n// Draft functions\n\nexport async function createDraft(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.drafts.create(inboxId, options)\n}\n\nexport async function listDrafts(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.drafts.list(inboxId, options)\n}\n\nexport async function getDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId } = args\n return client.inboxes.drafts.get(inboxId, draftId)\n}\n\nexport async function updateDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId, ...options } = args\n return client.inboxes.drafts.update(inboxId, draftId, options)\n}\n\nexport async function sendDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId } = args\n return client.inboxes.drafts.send(inboxId, draftId, {})\n}\n\nexport async function deleteDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId } = args\n return client.inboxes.drafts.delete(inboxId, draftId)\n}\n","import { z } from 'zod'\nimport { AgentMailClient } from 'agentmail'\nimport { type ToolAnnotations } from '@modelcontextprotocol/sdk/types.js'\n\nimport {\n ListItemsParams,\n ListInboxItemsParams,\n GetInboxParams,\n CreateInboxParams,\n GetThreadParams,\n GetAttachmentParams,\n SendMessageParams,\n ReplyToMessageParams,\n UpdateMessageParams,\n ForwardMessageParams,\n CreateDraftParams,\n ListDraftsParams,\n GetDraftParams,\n UpdateDraftParams,\n SendDraftParams,\n DeleteDraftParams,\n} from './schemas.js'\nimport {\n type Args,\n listInboxes,\n getInbox,\n createInbox,\n deleteInbox,\n listThreads,\n getThread,\n getAttachment,\n sendMessage,\n replyToMessage,\n updateMessage,\n forwardMessage,\n createDraft,\n listDrafts,\n getDraft,\n updateDraft,\n sendDraft,\n deleteDraft,\n} from './functions.js'\nexport interface Tool {\n name: string\n description: string\n paramsSchema: z.ZodObject<any>\n func: (client: AgentMailClient, args: Args) => Promise<any>\n annotations?: ToolAnnotations\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n description: 'List inboxes',\n paramsSchema: ListItemsParams,\n func: listInboxes,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'get_inbox',\n description: 'Get inbox',\n paramsSchema: GetInboxParams,\n func: getInbox,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'create_inbox',\n description: 'Create inbox',\n paramsSchema: CreateInboxParams,\n func: createInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n },\n },\n {\n name: 'delete_inbox',\n description: 'Delete inbox',\n paramsSchema: GetInboxParams,\n func: deleteInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'list_threads',\n description: 'List threads in inbox',\n paramsSchema: ListInboxItemsParams,\n func: listThreads,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'get_thread',\n description: 'Get thread',\n paramsSchema: GetThreadParams,\n func: getThread,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'get_attachment',\n description: 'Get attachment',\n paramsSchema: GetAttachmentParams,\n func: getAttachment,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'send_message',\n description: 'Send message',\n paramsSchema: SendMessageParams,\n func: sendMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'reply_to_message',\n description: 'Reply to message',\n paramsSchema: ReplyToMessageParams,\n func: replyToMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'forward_message',\n description: 'Forward message',\n paramsSchema: ForwardMessageParams,\n func: forwardMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'update_message',\n description: 'Update message',\n paramsSchema: UpdateMessageParams,\n func: updateMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'create_draft',\n description: 'Create a draft email. Use send_at (ISO 8601 datetime) to schedule it for later sending.',\n paramsSchema: CreateDraftParams,\n func: createDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n },\n },\n {\n name: 'list_drafts',\n description: 'List drafts in inbox. Filter by labels (e.g. \"scheduled\") to find scheduled drafts.',\n paramsSchema: ListDraftsParams,\n func: listDrafts,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'get_draft',\n description: 'Get a draft by ID, including its content, status, and scheduled send time.',\n paramsSchema: GetDraftParams,\n func: getDraft,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'update_draft',\n description: 'Update a draft. Use send_at to reschedule a scheduled draft.',\n paramsSchema: UpdateDraftParams,\n func: updateDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'send_draft',\n description: 'Send a draft immediately. The draft is converted to a sent message and deleted.',\n paramsSchema: SendDraftParams,\n func: sendDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'delete_draft',\n description: 'Delete a draft. Also used to cancel a scheduled send.',\n paramsSchema: DeleteDraftParams,\n func: deleteDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n]\n"],"mappings":"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","names":["import_zod","JSZip"]}
|
|
1
|
+
{"version":3,"sources":["../src/clawdbot.ts","../src/toolkit.ts","../src/schemas.ts","../src/util.ts","../src/functions.ts","../src/tools.ts"],"sourcesContent":["import type { AgentTool } from '@mariozechner/pi-agent-core'\nimport type { TSchema } from '@sinclair/typebox'\nimport { toJSONSchema } from 'zod'\n\nimport { ListToolkit } from './toolkit.js'\nimport type { Tool } from './tools.js'\n\n/** Convert Zod schema to JSON Schema, handling Date types as ISO datetime strings */\nfunction zodToJSONSchema(tool: Tool) {\n return toJSONSchema(tool.paramsSchema, {\n unrepresentable: 'any',\n override: (ctx) => {\n const def = ctx.zodSchema._zod.def\n if (def.type === 'date') {\n ctx.jsonSchema.type = 'string'\n ctx.jsonSchema.format = 'date-time'\n }\n },\n }) as unknown as TSchema\n}\n\nexport class AgentMailToolkit extends ListToolkit<AgentTool> {\n protected buildTool(tool: Tool): AgentTool {\n return {\n name: tool.name,\n label: tool.name,\n description: tool.description,\n parameters: zodToJSONSchema(tool),\n execute: async (_toolCallId, args) => {\n const result = await tool.func(this.client, tool.paramsSchema.parse(args))\n return {\n content: [{ type: 'text', text: JSON.stringify(result) }],\n details: result,\n }\n },\n }\n }\n}\n","import { AgentMailClient } from 'agentmail'\n\nimport { type Tool, tools } from './tools.js'\n\nexport abstract class BaseToolkit<T> {\n protected readonly client: AgentMailClient\n protected readonly tools: Record<string, T> = {}\n\n constructor(client?: AgentMailClient) {\n this.client = client ?? new AgentMailClient()\n\n this.tools = tools.reduce(\n (acc, tool) => {\n acc[tool.name] = this.buildTool(tool)\n return acc\n },\n {} as Record<string, T>\n )\n }\n\n protected abstract buildTool(tool: Tool): T\n}\n\nexport abstract class ListToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return Object.values(this.tools)\n\n return names.reduce((acc, name) => {\n if (name in this.tools) acc.push(this.tools[name])\n return acc\n }, [] as T[])\n }\n}\n\nexport abstract class MapToolkit<T> extends BaseToolkit<T> {\n public getTools(names?: string[]) {\n if (!names) return this.tools\n\n return names.reduce(\n (acc, name) => {\n if (name in this.tools) acc[name] = this.tools[name]\n return acc\n },\n {} as Record<string, T>\n )\n }\n}\n","import { z } from 'zod'\n\nconst InboxIdSchema = z.string().describe('ID of inbox')\nconst ThreadIdSchema = z.string().describe('ID of thread')\nconst MessageIdSchema = z.string().describe('ID of message')\nconst AttachmentIdSchema = z.string().describe('ID of attachment')\nconst DraftIdSchema = z.string().describe('ID of draft')\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().default(10).describe('Max number of items to return'),\n pageToken: z.string().optional().describe('Page token for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inboxId: InboxIdSchema,\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('Username'),\n domain: z.string().optional().describe('Domain'),\n displayName: z.string().optional().describe('Display name'),\n clientId: z.string().optional().describe('Client-provided ID for idempotent creation'),\n metadata: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional()\n .describe('Custom metadata key-value pairs to attach to the inbox'),\n})\n\nexport const UpdateInboxParams = z.object({\n inboxId: InboxIdSchema,\n displayName: z.string().optional().describe('Display name'),\n metadata: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))\n .nullable()\n .optional()\n .describe('Metadata to merge into existing metadata. Set a key to null to remove it, or the whole field to null to clear all metadata'),\n})\n\nexport const ListInboxItemsParams = ListItemsParams.extend({\n inboxId: InboxIdSchema,\n labels: z.array(z.string()).optional().describe('Labels to filter items by'),\n before: z.string().pipe(z.coerce.date()).optional().describe('Filter items before datetime'),\n after: z.string().pipe(z.coerce.date()).optional().describe('Filter items after datetime'),\n ascending: z.boolean().optional().describe('Sort by oldest first instead of most recent first'),\n})\n\nexport const ListThreadsParams = ListInboxItemsParams.extend({\n senders: z.array(z.string()).optional().describe('Filter threads by senders (substring match; all values must match)'),\n recipients: z.array(z.string()).optional().describe('Filter threads by recipients (substring match; all values must match)'),\n subject: z.array(z.string()).optional().describe('Filter threads by subject (substring match; all values must match)'),\n includeSpam: z.boolean().optional().describe('Include threads in spam'),\n includeTrash: z.boolean().optional().describe('Include threads in trash'),\n})\n\nexport const SearchInboxItemsParams = ListItemsParams.extend({\n inboxId: InboxIdSchema,\n q: z.string().describe('Full-text search query'),\n before: z.string().pipe(z.coerce.date()).optional().describe('Filter items before datetime'),\n after: z.string().pipe(z.coerce.date()).optional().describe('Filter items after datetime'),\n})\n\nexport const GetThreadParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n})\n\nexport const UpdateThreadParams = GetThreadParams.extend({\n addLabels: z.array(z.string()).optional().describe('Labels to add'),\n removeLabels: z.array(z.string()).optional().describe('Labels to remove'),\n})\n\nexport const GetAttachmentParams = z.object({\n inboxId: InboxIdSchema,\n threadId: ThreadIdSchema,\n attachmentId: AttachmentIdSchema,\n})\n\nconst AttachmentSchema = z.object({\n filename: z.string().optional().describe('Filename'),\n content_id: z.string().optional().describe('Content ID for inline attachments'),\n content: z.string().optional().describe('Base64 encoded content'),\n url: z.url().optional().describe('URL'),\n})\n\nconst BaseMessageParams = z.object({\n inboxId: InboxIdSchema,\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n labels: z.array(z.string()).optional().describe('Labels'),\n attachments: z.array(AttachmentSchema).optional().describe('Attachments'),\n})\n\nexport const SendMessageParams = BaseMessageParams.extend({\n to: z.array(z.string()).describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n replyTo: z.array(z.string()).optional().describe('Reply-to addresses'),\n})\n\nexport const ReplyToMessageParams = BaseMessageParams.extend({\n messageId: MessageIdSchema,\n replyAll: z.boolean().optional().describe('Reply to all recipients'),\n to: z.array(z.string()).optional().describe('Override reply recipients'),\n cc: z.array(z.string()).optional().describe('Override CC recipients'),\n bcc: z.array(z.string()).optional().describe('Override BCC recipients'),\n replyTo: z.array(z.string()).optional().describe('Reply-to addresses'),\n})\n\nexport const ForwardMessageParams = SendMessageParams.extend({\n messageId: MessageIdSchema,\n})\n\nexport const UpdateMessageParams = z.object({\n inboxId: InboxIdSchema,\n messageId: MessageIdSchema,\n addLabels: z.array(z.string()).optional().describe('Labels to add'),\n removeLabels: z.array(z.string()).optional().describe('Labels to remove'),\n})\n\nexport const ListMessagesParams = ListInboxItemsParams.extend({\n from: z.array(z.string()).optional().describe('Filter messages by sender (substring match; all values must match)'),\n to: z.array(z.string()).optional().describe('Filter messages by recipients (substring match; all values must match)'),\n subject: z.array(z.string()).optional().describe('Filter messages by subject (substring match; all values must match)'),\n includeSpam: z.boolean().optional().describe('Include messages in spam'),\n includeTrash: z.boolean().optional().describe('Include messages in trash'),\n})\n\n// Draft schemas\n\nexport const CreateDraftParams = BaseMessageParams.extend({\n to: z.array(z.string()).optional().describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n replyTo: z.array(z.string()).optional().describe('Reply-to addresses'),\n inReplyTo: z.string().optional().describe('Message ID this draft is replying to'),\n sendAt: z.string().pipe(z.coerce.date()).optional().describe('ISO 8601 datetime to schedule sending (e.g. 2026-04-01T09:00:00Z)'),\n clientId: z.string().optional().describe('Client-provided ID for idempotent creation'),\n})\n\nexport const ListDraftsParams = ListInboxItemsParams\n\nexport const GetDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n})\n\nexport const UpdateDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n to: z.array(z.string()).optional().describe('Recipients'),\n cc: z.array(z.string()).optional().describe('CC recipients'),\n bcc: z.array(z.string()).optional().describe('BCC recipients'),\n subject: z.string().optional().describe('Subject'),\n text: z.string().optional().describe('Plain text body'),\n html: z.string().optional().describe('HTML body'),\n replyTo: z.array(z.string()).optional().describe('Reply-to addresses'),\n sendAt: z.string().pipe(z.coerce.date()).optional().describe('ISO 8601 datetime to reschedule sending'),\n})\n\nexport const SendDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n})\n\nexport const DeleteDraftParams = z.object({\n inboxId: InboxIdSchema,\n draftId: DraftIdSchema,\n})\n\nexport const AuthMeParams = z.object({})\n","import { AgentMailClient } from 'agentmail'\nimport { getDocumentProxy, extractText } from 'unpdf'\nimport JSZip from 'jszip'\n\nexport const safeFunc = async <T>(\n func: (client: AgentMailClient, args: Record<string, any>) => Promise<T>,\n client: AgentMailClient,\n args: Record<string, any>\n) => {\n try {\n return { isError: false, result: await func(client, args) }\n } catch (error) {\n if (error instanceof Error) return { isError: true, result: error.message }\n else return { isError: true, result: 'Unknown error' }\n }\n}\n\nexport function detectFileType(bytes: Uint8Array): string | undefined {\n // PDF: starts with %PDF (0x25 0x50 0x44 0x46)\n if (bytes[0] === 0x25 && bytes[1] === 0x50 && bytes[2] === 0x44 && bytes[3] === 0x46) {\n return 'application/pdf'\n }\n // ZIP (DOCX is a ZIP): starts with PK\\x03\\x04 (0x50 0x4B 0x03 0x04)\n if (bytes[0] === 0x50 && bytes[1] === 0x4b && bytes[2] === 0x03 && bytes[3] === 0x04) {\n return 'application/zip'\n }\n return undefined\n}\n\nexport async function extractPdfText(bytes: Uint8Array): Promise<string> {\n const pdf = await getDocumentProxy(bytes)\n const { text } = await extractText(pdf)\n return Array.isArray(text) ? text.join('\\n') : text\n}\n\nexport async function extractDocxText(bytes: Uint8Array): Promise<string | undefined> {\n const zip = await JSZip.loadAsync(bytes)\n const documentXml = await zip.file('word/document.xml')?.async('string')\n if (!documentXml) return undefined\n return documentXml\n .replace(/<w:p[^>]*>/g, '\\n')\n .replace(/<[^>]+>/g, '')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim()\n}\n","import { AgentMailClient } from 'agentmail'\nimport { detectFileType, extractPdfText, extractDocxText } from './util.js'\n\nexport type Args = Record<string, any>\n\nexport async function listInboxes(client: AgentMailClient, args: Args) {\n return client.inboxes.list(args)\n}\n\nexport async function getInbox(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.get(inboxId, options)\n}\n\nexport async function createInbox(client: AgentMailClient, args: Args) {\n return client.inboxes.create(args)\n}\n\nexport async function updateInbox(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.update(inboxId, options)\n}\n\nexport async function deleteInbox(client: AgentMailClient, args: Args) {\n const { inboxId } = args\n return client.inboxes.delete(inboxId)\n}\n\nexport async function listThreads(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.threads.list(inboxId, options)\n}\n\nexport async function searchThreads(client: AgentMailClient, args: Args) {\n const { inboxId, q, ...options } = args\n return client.inboxes.threads.search(inboxId, { q, ...options })\n}\n\nexport async function getThread(client: AgentMailClient, args: Args) {\n const { inboxId, threadId, ...options } = args\n return client.inboxes.threads.get(inboxId, threadId, options)\n}\n\nexport async function updateThread(client: AgentMailClient, args: Args) {\n const { inboxId, threadId, ...options } = args\n return client.inboxes.threads.update(inboxId, threadId, options)\n}\n\nexport async function deleteThread(client: AgentMailClient, args: Args) {\n const { inboxId, threadId } = args\n return client.inboxes.threads.delete(inboxId, threadId)\n}\n\nexport async function getAttachment(client: AgentMailClient, args: Args) {\n const { inboxId, threadId, attachmentId } = args\n\n const attachment = await client.inboxes.threads.getAttachment(inboxId, threadId, attachmentId)\n\n try {\n const response = await fetch(attachment.downloadUrl)\n const arrayBuffer = await response.arrayBuffer()\n const fileBytes = new Uint8Array(arrayBuffer)\n\n const detectedType = detectFileType(fileBytes)\n\n if (detectedType === 'application/pdf') {\n return { ...attachment, text: await extractPdfText(fileBytes) }\n } else if (detectedType === 'application/zip') {\n return { ...attachment, text: await extractDocxText(fileBytes) }\n }\n } catch {}\n\n return attachment\n}\n\nexport async function listMessages(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.messages.list(inboxId, options)\n}\n\nexport async function searchMessages(client: AgentMailClient, args: Args) {\n const { inboxId, q, ...options } = args\n return client.inboxes.messages.search(inboxId, { q, ...options })\n}\n\nexport async function sendMessage(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.messages.send(inboxId, options)\n}\n\nexport async function replyToMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.reply(inboxId, messageId, options)\n}\n\nexport async function forwardMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.forward(inboxId, messageId, options)\n}\n\nexport async function updateMessage(client: AgentMailClient, args: Args) {\n const { inboxId, messageId, ...options } = args\n return client.inboxes.messages.update(inboxId, messageId, options)\n}\n\n// Draft functions\n\nexport async function createDraft(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.drafts.create(inboxId, options)\n}\n\nexport async function listDrafts(client: AgentMailClient, args: Args) {\n const { inboxId, ...options } = args\n return client.inboxes.drafts.list(inboxId, options)\n}\n\nexport async function getDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId } = args\n return client.inboxes.drafts.get(inboxId, draftId)\n}\n\nexport async function updateDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId, ...options } = args\n return client.inboxes.drafts.update(inboxId, draftId, options)\n}\n\nexport async function sendDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId } = args\n return client.inboxes.drafts.send(inboxId, draftId, {})\n}\n\nexport async function deleteDraft(client: AgentMailClient, args: Args) {\n const { inboxId, draftId } = args\n return client.inboxes.drafts.delete(inboxId, draftId)\n}\n\nexport async function authMe(client: AgentMailClient) {\n return client.auth.me()\n}\n","import { z } from 'zod'\nimport { AgentMailClient } from 'agentmail'\nimport { type ToolAnnotations } from '@modelcontextprotocol/sdk/types.js'\n\nimport {\n ListItemsParams,\n ListThreadsParams,\n SearchInboxItemsParams,\n GetInboxParams,\n CreateInboxParams,\n UpdateInboxParams,\n GetThreadParams,\n UpdateThreadParams,\n GetAttachmentParams,\n ListMessagesParams,\n SendMessageParams,\n ReplyToMessageParams,\n UpdateMessageParams,\n ForwardMessageParams,\n CreateDraftParams,\n ListDraftsParams,\n GetDraftParams,\n UpdateDraftParams,\n SendDraftParams,\n DeleteDraftParams,\n AuthMeParams,\n} from './schemas.js'\nimport {\n type Args,\n listInboxes,\n getInbox,\n createInbox,\n updateInbox,\n deleteInbox,\n listThreads,\n searchThreads,\n getThread,\n updateThread,\n deleteThread,\n getAttachment,\n listMessages,\n searchMessages,\n sendMessage,\n replyToMessage,\n updateMessage,\n forwardMessage,\n createDraft,\n listDrafts,\n getDraft,\n updateDraft,\n sendDraft,\n deleteDraft,\n authMe,\n} from './functions.js'\nexport interface Tool {\n name: string\n description: string\n paramsSchema: z.ZodObject<any>\n func: (client: AgentMailClient, args: Args) => Promise<any>\n annotations?: ToolAnnotations\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n description: 'List email inboxes, paginated.',\n paramsSchema: ListItemsParams,\n func: listInboxes,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'get_inbox',\n description: 'Get an inbox by ID.',\n paramsSchema: GetInboxParams,\n func: getInbox,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'create_inbox',\n description: 'Create a new email inbox. Optionally specify username, domain, display name, and metadata.',\n paramsSchema: CreateInboxParams,\n func: createInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n },\n },\n {\n name: 'update_inbox',\n description: \"Update an inbox's display name or metadata. Metadata keys are merged; set a key to null to remove it, or set metadata to null to clear all.\",\n paramsSchema: UpdateInboxParams,\n func: updateInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'delete_inbox',\n description: 'Delete an inbox by ID.',\n paramsSchema: GetInboxParams,\n func: deleteInbox,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'list_threads',\n description: 'List email threads in an inbox. Filter by labels, sender, recipient, subject, or before/after datetime, paginated.',\n paramsSchema: ListThreadsParams,\n func: listThreads,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'search_threads',\n description: 'Search threads in an inbox with a full-text query, ranked by relevance. Matches senders, recipients, subject, and message body. Spam and trash are excluded.',\n paramsSchema: SearchInboxItemsParams,\n func: searchThreads,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'get_thread',\n description: 'Get a thread by ID, including its messages.',\n paramsSchema: GetThreadParams,\n func: getThread,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'get_attachment',\n description: 'Get an attachment from a thread. Returns metadata and a download URL, plus extracted text for PDF and DOCX files.',\n paramsSchema: GetAttachmentParams,\n func: getAttachment,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'update_thread',\n description: \"Update a thread's labels (add or remove). System labels cannot be modified.\",\n paramsSchema: UpdateThreadParams,\n func: updateThread,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'delete_thread',\n description: 'Delete a thread from an inbox.',\n paramsSchema: GetThreadParams,\n func: deleteThread,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: false,\n },\n },\n {\n name: 'list_messages',\n description: 'List messages in an inbox. Filter by labels, sender, recipient, subject, or before/after datetime, paginated.',\n paramsSchema: ListMessagesParams,\n func: listMessages,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'search_messages',\n description: 'Search messages in an inbox with a full-text query, ranked by relevance. Matches sender, recipients, subject, and message body. Spam and trash are excluded.',\n paramsSchema: SearchInboxItemsParams,\n func: searchMessages,\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n {\n name: 'send_message',\n description: 'Send an email from an inbox to one or more recipients.',\n paramsSchema: SendMessageParams,\n func: sendMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'reply_to_message',\n description: 'Reply to a message in its thread. Set replyAll to include all original recipients.',\n paramsSchema: ReplyToMessageParams,\n func: replyToMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'forward_message',\n description: 'Forward a message to new recipients.',\n paramsSchema: ForwardMessageParams,\n func: forwardMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'update_message',\n description: \"Update a message's labels (add or remove).\",\n paramsSchema: UpdateMessageParams,\n func: updateMessage,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'create_draft',\n description: 'Create a draft email. Use sendAt (ISO 8601 datetime) to schedule it for later sending.',\n paramsSchema: CreateDraftParams,\n func: createDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: false,\n },\n },\n {\n name: 'list_drafts',\n description: 'List drafts in inbox. Filter by labels (e.g. \"scheduled\") to find scheduled drafts.',\n paramsSchema: ListDraftsParams,\n func: listDrafts,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'get_draft',\n description: 'Get a draft by ID, including its content, status, and scheduled send time.',\n paramsSchema: GetDraftParams,\n func: getDraft,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'update_draft',\n description: 'Update a draft. Use sendAt to reschedule a scheduled draft.',\n paramsSchema: UpdateDraftParams,\n func: updateDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'send_draft',\n description: 'Send a draft immediately. The draft is converted to a sent message and deleted.',\n paramsSchema: SendDraftParams,\n func: sendDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n {\n name: 'delete_draft',\n description: 'Delete a draft. Also used to cancel a scheduled send.',\n paramsSchema: DeleteDraftParams,\n func: deleteDraft,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n {\n name: 'auth_me',\n description: 'Get the identity and scope of the authenticated credential, including organization, pod, and inbox IDs.',\n paramsSchema: AuthMeParams,\n func: authMe,\n annotations: {\n readOnlyHint: true,\n openWorldHint: false,\n },\n },\n]\n"],"mappings":"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","names":["import_zod","JSZip"]}
|
package/dist/clawdbot.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -54,18 +54,43 @@ var GetInboxParams = import_zod.z.object({
|
|
|
54
54
|
var CreateInboxParams = import_zod.z.object({
|
|
55
55
|
username: import_zod.z.string().optional().describe("Username"),
|
|
56
56
|
domain: import_zod.z.string().optional().describe("Domain"),
|
|
57
|
-
displayName: import_zod.z.string().optional().describe("Display name")
|
|
57
|
+
displayName: import_zod.z.string().optional().describe("Display name"),
|
|
58
|
+
clientId: import_zod.z.string().optional().describe("Client-provided ID for idempotent creation"),
|
|
59
|
+
metadata: import_zod.z.record(import_zod.z.string(), import_zod.z.union([import_zod.z.string(), import_zod.z.number(), import_zod.z.boolean()])).optional().describe("Custom metadata key-value pairs to attach to the inbox")
|
|
60
|
+
});
|
|
61
|
+
var UpdateInboxParams = import_zod.z.object({
|
|
62
|
+
inboxId: InboxIdSchema,
|
|
63
|
+
displayName: import_zod.z.string().optional().describe("Display name"),
|
|
64
|
+
metadata: import_zod.z.record(import_zod.z.string(), import_zod.z.union([import_zod.z.string(), import_zod.z.number(), import_zod.z.boolean(), import_zod.z.null()])).nullable().optional().describe("Metadata to merge into existing metadata. Set a key to null to remove it, or the whole field to null to clear all metadata")
|
|
58
65
|
});
|
|
59
66
|
var ListInboxItemsParams = ListItemsParams.extend({
|
|
60
67
|
inboxId: InboxIdSchema,
|
|
61
68
|
labels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to filter items by"),
|
|
62
69
|
before: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items before datetime"),
|
|
70
|
+
after: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items after datetime"),
|
|
71
|
+
ascending: import_zod.z.boolean().optional().describe("Sort by oldest first instead of most recent first")
|
|
72
|
+
});
|
|
73
|
+
var ListThreadsParams = ListInboxItemsParams.extend({
|
|
74
|
+
senders: import_zod.z.array(import_zod.z.string()).optional().describe("Filter threads by senders (substring match; all values must match)"),
|
|
75
|
+
recipients: import_zod.z.array(import_zod.z.string()).optional().describe("Filter threads by recipients (substring match; all values must match)"),
|
|
76
|
+
subject: import_zod.z.array(import_zod.z.string()).optional().describe("Filter threads by subject (substring match; all values must match)"),
|
|
77
|
+
includeSpam: import_zod.z.boolean().optional().describe("Include threads in spam"),
|
|
78
|
+
includeTrash: import_zod.z.boolean().optional().describe("Include threads in trash")
|
|
79
|
+
});
|
|
80
|
+
var SearchInboxItemsParams = ListItemsParams.extend({
|
|
81
|
+
inboxId: InboxIdSchema,
|
|
82
|
+
q: import_zod.z.string().describe("Full-text search query"),
|
|
83
|
+
before: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items before datetime"),
|
|
63
84
|
after: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items after datetime")
|
|
64
85
|
});
|
|
65
86
|
var GetThreadParams = import_zod.z.object({
|
|
66
87
|
inboxId: InboxIdSchema,
|
|
67
88
|
threadId: ThreadIdSchema
|
|
68
89
|
});
|
|
90
|
+
var UpdateThreadParams = GetThreadParams.extend({
|
|
91
|
+
addLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to add"),
|
|
92
|
+
removeLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to remove")
|
|
93
|
+
});
|
|
69
94
|
var GetAttachmentParams = import_zod.z.object({
|
|
70
95
|
inboxId: InboxIdSchema,
|
|
71
96
|
threadId: ThreadIdSchema,
|
|
@@ -88,11 +113,16 @@ var SendMessageParams = BaseMessageParams.extend({
|
|
|
88
113
|
to: import_zod.z.array(import_zod.z.string()).describe("Recipients"),
|
|
89
114
|
cc: import_zod.z.array(import_zod.z.string()).optional().describe("CC recipients"),
|
|
90
115
|
bcc: import_zod.z.array(import_zod.z.string()).optional().describe("BCC recipients"),
|
|
91
|
-
subject: import_zod.z.string().optional().describe("Subject")
|
|
116
|
+
subject: import_zod.z.string().optional().describe("Subject"),
|
|
117
|
+
replyTo: import_zod.z.array(import_zod.z.string()).optional().describe("Reply-to addresses")
|
|
92
118
|
});
|
|
93
119
|
var ReplyToMessageParams = BaseMessageParams.extend({
|
|
94
120
|
messageId: MessageIdSchema,
|
|
95
|
-
replyAll: import_zod.z.boolean().optional().describe("Reply to all recipients")
|
|
121
|
+
replyAll: import_zod.z.boolean().optional().describe("Reply to all recipients"),
|
|
122
|
+
to: import_zod.z.array(import_zod.z.string()).optional().describe("Override reply recipients"),
|
|
123
|
+
cc: import_zod.z.array(import_zod.z.string()).optional().describe("Override CC recipients"),
|
|
124
|
+
bcc: import_zod.z.array(import_zod.z.string()).optional().describe("Override BCC recipients"),
|
|
125
|
+
replyTo: import_zod.z.array(import_zod.z.string()).optional().describe("Reply-to addresses")
|
|
96
126
|
});
|
|
97
127
|
var ForwardMessageParams = SendMessageParams.extend({
|
|
98
128
|
messageId: MessageIdSchema
|
|
@@ -103,6 +133,13 @@ var UpdateMessageParams = import_zod.z.object({
|
|
|
103
133
|
addLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to add"),
|
|
104
134
|
removeLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to remove")
|
|
105
135
|
});
|
|
136
|
+
var ListMessagesParams = ListInboxItemsParams.extend({
|
|
137
|
+
from: import_zod.z.array(import_zod.z.string()).optional().describe("Filter messages by sender (substring match; all values must match)"),
|
|
138
|
+
to: import_zod.z.array(import_zod.z.string()).optional().describe("Filter messages by recipients (substring match; all values must match)"),
|
|
139
|
+
subject: import_zod.z.array(import_zod.z.string()).optional().describe("Filter messages by subject (substring match; all values must match)"),
|
|
140
|
+
includeSpam: import_zod.z.boolean().optional().describe("Include messages in spam"),
|
|
141
|
+
includeTrash: import_zod.z.boolean().optional().describe("Include messages in trash")
|
|
142
|
+
});
|
|
106
143
|
var CreateDraftParams = BaseMessageParams.extend({
|
|
107
144
|
to: import_zod.z.array(import_zod.z.string()).optional().describe("Recipients"),
|
|
108
145
|
cc: import_zod.z.array(import_zod.z.string()).optional().describe("CC recipients"),
|
|
@@ -110,7 +147,8 @@ var CreateDraftParams = BaseMessageParams.extend({
|
|
|
110
147
|
subject: import_zod.z.string().optional().describe("Subject"),
|
|
111
148
|
replyTo: import_zod.z.array(import_zod.z.string()).optional().describe("Reply-to addresses"),
|
|
112
149
|
inReplyTo: import_zod.z.string().optional().describe("Message ID this draft is replying to"),
|
|
113
|
-
sendAt: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("ISO 8601 datetime to schedule sending (e.g. 2026-04-01T09:00:00Z)")
|
|
150
|
+
sendAt: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("ISO 8601 datetime to schedule sending (e.g. 2026-04-01T09:00:00Z)"),
|
|
151
|
+
clientId: import_zod.z.string().optional().describe("Client-provided ID for idempotent creation")
|
|
114
152
|
});
|
|
115
153
|
var ListDraftsParams = ListInboxItemsParams;
|
|
116
154
|
var GetDraftParams = import_zod.z.object({
|
|
@@ -137,6 +175,7 @@ var DeleteDraftParams = import_zod.z.object({
|
|
|
137
175
|
inboxId: InboxIdSchema,
|
|
138
176
|
draftId: DraftIdSchema
|
|
139
177
|
});
|
|
178
|
+
var AuthMeParams = import_zod.z.object({});
|
|
140
179
|
|
|
141
180
|
// src/util.ts
|
|
142
181
|
var import_unpdf = require("unpdf");
|
|
@@ -173,6 +212,10 @@ async function getInbox(client, args) {
|
|
|
173
212
|
async function createInbox(client, args) {
|
|
174
213
|
return client.inboxes.create(args);
|
|
175
214
|
}
|
|
215
|
+
async function updateInbox(client, args) {
|
|
216
|
+
const { inboxId, ...options } = args;
|
|
217
|
+
return client.inboxes.update(inboxId, options);
|
|
218
|
+
}
|
|
176
219
|
async function deleteInbox(client, args) {
|
|
177
220
|
const { inboxId } = args;
|
|
178
221
|
return client.inboxes.delete(inboxId);
|
|
@@ -181,13 +224,25 @@ async function listThreads(client, args) {
|
|
|
181
224
|
const { inboxId, ...options } = args;
|
|
182
225
|
return client.inboxes.threads.list(inboxId, options);
|
|
183
226
|
}
|
|
227
|
+
async function searchThreads(client, args) {
|
|
228
|
+
const { inboxId, q, ...options } = args;
|
|
229
|
+
return client.inboxes.threads.search(inboxId, { q, ...options });
|
|
230
|
+
}
|
|
184
231
|
async function getThread(client, args) {
|
|
185
232
|
const { inboxId, threadId, ...options } = args;
|
|
186
233
|
return client.inboxes.threads.get(inboxId, threadId, options);
|
|
187
234
|
}
|
|
235
|
+
async function updateThread(client, args) {
|
|
236
|
+
const { inboxId, threadId, ...options } = args;
|
|
237
|
+
return client.inboxes.threads.update(inboxId, threadId, options);
|
|
238
|
+
}
|
|
239
|
+
async function deleteThread(client, args) {
|
|
240
|
+
const { inboxId, threadId } = args;
|
|
241
|
+
return client.inboxes.threads.delete(inboxId, threadId);
|
|
242
|
+
}
|
|
188
243
|
async function getAttachment(client, args) {
|
|
189
|
-
const { threadId, attachmentId } = args;
|
|
190
|
-
const attachment = await client.threads.getAttachment(threadId, attachmentId);
|
|
244
|
+
const { inboxId, threadId, attachmentId } = args;
|
|
245
|
+
const attachment = await client.inboxes.threads.getAttachment(inboxId, threadId, attachmentId);
|
|
191
246
|
try {
|
|
192
247
|
const response = await fetch(attachment.downloadUrl);
|
|
193
248
|
const arrayBuffer = await response.arrayBuffer();
|
|
@@ -202,6 +257,14 @@ async function getAttachment(client, args) {
|
|
|
202
257
|
}
|
|
203
258
|
return attachment;
|
|
204
259
|
}
|
|
260
|
+
async function listMessages(client, args) {
|
|
261
|
+
const { inboxId, ...options } = args;
|
|
262
|
+
return client.inboxes.messages.list(inboxId, options);
|
|
263
|
+
}
|
|
264
|
+
async function searchMessages(client, args) {
|
|
265
|
+
const { inboxId, q, ...options } = args;
|
|
266
|
+
return client.inboxes.messages.search(inboxId, { q, ...options });
|
|
267
|
+
}
|
|
205
268
|
async function sendMessage(client, args) {
|
|
206
269
|
const { inboxId, ...options } = args;
|
|
207
270
|
return client.inboxes.messages.send(inboxId, options);
|
|
@@ -242,12 +305,15 @@ async function deleteDraft(client, args) {
|
|
|
242
305
|
const { inboxId, draftId } = args;
|
|
243
306
|
return client.inboxes.drafts.delete(inboxId, draftId);
|
|
244
307
|
}
|
|
308
|
+
async function authMe(client) {
|
|
309
|
+
return client.auth.me();
|
|
310
|
+
}
|
|
245
311
|
|
|
246
312
|
// src/tools.ts
|
|
247
313
|
var tools = [
|
|
248
314
|
{
|
|
249
315
|
name: "list_inboxes",
|
|
250
|
-
description: "List inboxes",
|
|
316
|
+
description: "List email inboxes, paginated.",
|
|
251
317
|
paramsSchema: ListItemsParams,
|
|
252
318
|
func: listInboxes,
|
|
253
319
|
annotations: {
|
|
@@ -257,7 +323,7 @@ var tools = [
|
|
|
257
323
|
},
|
|
258
324
|
{
|
|
259
325
|
name: "get_inbox",
|
|
260
|
-
description: "Get inbox",
|
|
326
|
+
description: "Get an inbox by ID.",
|
|
261
327
|
paramsSchema: GetInboxParams,
|
|
262
328
|
func: getInbox,
|
|
263
329
|
annotations: {
|
|
@@ -267,7 +333,7 @@ var tools = [
|
|
|
267
333
|
},
|
|
268
334
|
{
|
|
269
335
|
name: "create_inbox",
|
|
270
|
-
description: "Create inbox",
|
|
336
|
+
description: "Create a new email inbox. Optionally specify username, domain, display name, and metadata.",
|
|
271
337
|
paramsSchema: CreateInboxParams,
|
|
272
338
|
func: createInbox,
|
|
273
339
|
annotations: {
|
|
@@ -277,9 +343,21 @@ var tools = [
|
|
|
277
343
|
openWorldHint: false
|
|
278
344
|
}
|
|
279
345
|
},
|
|
346
|
+
{
|
|
347
|
+
name: "update_inbox",
|
|
348
|
+
description: "Update an inbox's display name or metadata. Metadata keys are merged; set a key to null to remove it, or set metadata to null to clear all.",
|
|
349
|
+
paramsSchema: UpdateInboxParams,
|
|
350
|
+
func: updateInbox,
|
|
351
|
+
annotations: {
|
|
352
|
+
readOnlyHint: false,
|
|
353
|
+
destructiveHint: true,
|
|
354
|
+
idempotentHint: true,
|
|
355
|
+
openWorldHint: false
|
|
356
|
+
}
|
|
357
|
+
},
|
|
280
358
|
{
|
|
281
359
|
name: "delete_inbox",
|
|
282
|
-
description: "Delete inbox",
|
|
360
|
+
description: "Delete an inbox by ID.",
|
|
283
361
|
paramsSchema: GetInboxParams,
|
|
284
362
|
func: deleteInbox,
|
|
285
363
|
annotations: {
|
|
@@ -291,17 +369,27 @@ var tools = [
|
|
|
291
369
|
},
|
|
292
370
|
{
|
|
293
371
|
name: "list_threads",
|
|
294
|
-
description: "List threads in inbox",
|
|
295
|
-
paramsSchema:
|
|
372
|
+
description: "List email threads in an inbox. Filter by labels, sender, recipient, subject, or before/after datetime, paginated.",
|
|
373
|
+
paramsSchema: ListThreadsParams,
|
|
296
374
|
func: listThreads,
|
|
297
375
|
annotations: {
|
|
298
376
|
readOnlyHint: true,
|
|
299
377
|
openWorldHint: true
|
|
300
378
|
}
|
|
301
379
|
},
|
|
380
|
+
{
|
|
381
|
+
name: "search_threads",
|
|
382
|
+
description: "Search threads in an inbox with a full-text query, ranked by relevance. Matches senders, recipients, subject, and message body. Spam and trash are excluded.",
|
|
383
|
+
paramsSchema: SearchInboxItemsParams,
|
|
384
|
+
func: searchThreads,
|
|
385
|
+
annotations: {
|
|
386
|
+
readOnlyHint: true,
|
|
387
|
+
openWorldHint: true
|
|
388
|
+
}
|
|
389
|
+
},
|
|
302
390
|
{
|
|
303
391
|
name: "get_thread",
|
|
304
|
-
description: "Get thread",
|
|
392
|
+
description: "Get a thread by ID, including its messages.",
|
|
305
393
|
paramsSchema: GetThreadParams,
|
|
306
394
|
func: getThread,
|
|
307
395
|
annotations: {
|
|
@@ -311,7 +399,7 @@ var tools = [
|
|
|
311
399
|
},
|
|
312
400
|
{
|
|
313
401
|
name: "get_attachment",
|
|
314
|
-
description: "Get attachment",
|
|
402
|
+
description: "Get an attachment from a thread. Returns metadata and a download URL, plus extracted text for PDF and DOCX files.",
|
|
315
403
|
paramsSchema: GetAttachmentParams,
|
|
316
404
|
func: getAttachment,
|
|
317
405
|
annotations: {
|
|
@@ -319,57 +407,101 @@ var tools = [
|
|
|
319
407
|
openWorldHint: true
|
|
320
408
|
}
|
|
321
409
|
},
|
|
410
|
+
{
|
|
411
|
+
name: "update_thread",
|
|
412
|
+
description: "Update a thread's labels (add or remove). System labels cannot be modified.",
|
|
413
|
+
paramsSchema: UpdateThreadParams,
|
|
414
|
+
func: updateThread,
|
|
415
|
+
annotations: {
|
|
416
|
+
readOnlyHint: false,
|
|
417
|
+
destructiveHint: true,
|
|
418
|
+
idempotentHint: true,
|
|
419
|
+
openWorldHint: false
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
name: "delete_thread",
|
|
424
|
+
description: "Delete a thread from an inbox.",
|
|
425
|
+
paramsSchema: GetThreadParams,
|
|
426
|
+
func: deleteThread,
|
|
427
|
+
annotations: {
|
|
428
|
+
readOnlyHint: false,
|
|
429
|
+
destructiveHint: true,
|
|
430
|
+
idempotentHint: false,
|
|
431
|
+
openWorldHint: false
|
|
432
|
+
}
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
name: "list_messages",
|
|
436
|
+
description: "List messages in an inbox. Filter by labels, sender, recipient, subject, or before/after datetime, paginated.",
|
|
437
|
+
paramsSchema: ListMessagesParams,
|
|
438
|
+
func: listMessages,
|
|
439
|
+
annotations: {
|
|
440
|
+
readOnlyHint: true,
|
|
441
|
+
openWorldHint: true
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
name: "search_messages",
|
|
446
|
+
description: "Search messages in an inbox with a full-text query, ranked by relevance. Matches sender, recipients, subject, and message body. Spam and trash are excluded.",
|
|
447
|
+
paramsSchema: SearchInboxItemsParams,
|
|
448
|
+
func: searchMessages,
|
|
449
|
+
annotations: {
|
|
450
|
+
readOnlyHint: true,
|
|
451
|
+
openWorldHint: true
|
|
452
|
+
}
|
|
453
|
+
},
|
|
322
454
|
{
|
|
323
455
|
name: "send_message",
|
|
324
|
-
description: "Send
|
|
456
|
+
description: "Send an email from an inbox to one or more recipients.",
|
|
325
457
|
paramsSchema: SendMessageParams,
|
|
326
458
|
func: sendMessage,
|
|
327
459
|
annotations: {
|
|
328
460
|
readOnlyHint: false,
|
|
329
|
-
destructiveHint:
|
|
461
|
+
destructiveHint: true,
|
|
330
462
|
idempotentHint: false,
|
|
331
463
|
openWorldHint: true
|
|
332
464
|
}
|
|
333
465
|
},
|
|
334
466
|
{
|
|
335
467
|
name: "reply_to_message",
|
|
336
|
-
description: "Reply to message",
|
|
468
|
+
description: "Reply to a message in its thread. Set replyAll to include all original recipients.",
|
|
337
469
|
paramsSchema: ReplyToMessageParams,
|
|
338
470
|
func: replyToMessage,
|
|
339
471
|
annotations: {
|
|
340
472
|
readOnlyHint: false,
|
|
341
|
-
destructiveHint:
|
|
473
|
+
destructiveHint: true,
|
|
342
474
|
idempotentHint: false,
|
|
343
475
|
openWorldHint: true
|
|
344
476
|
}
|
|
345
477
|
},
|
|
346
478
|
{
|
|
347
479
|
name: "forward_message",
|
|
348
|
-
description: "Forward message",
|
|
480
|
+
description: "Forward a message to new recipients.",
|
|
349
481
|
paramsSchema: ForwardMessageParams,
|
|
350
482
|
func: forwardMessage,
|
|
351
483
|
annotations: {
|
|
352
484
|
readOnlyHint: false,
|
|
353
|
-
destructiveHint:
|
|
485
|
+
destructiveHint: true,
|
|
354
486
|
idempotentHint: false,
|
|
355
487
|
openWorldHint: true
|
|
356
488
|
}
|
|
357
489
|
},
|
|
358
490
|
{
|
|
359
491
|
name: "update_message",
|
|
360
|
-
description: "Update message",
|
|
492
|
+
description: "Update a message's labels (add or remove).",
|
|
361
493
|
paramsSchema: UpdateMessageParams,
|
|
362
494
|
func: updateMessage,
|
|
363
495
|
annotations: {
|
|
364
496
|
readOnlyHint: false,
|
|
365
|
-
destructiveHint:
|
|
497
|
+
destructiveHint: true,
|
|
366
498
|
idempotentHint: true,
|
|
367
499
|
openWorldHint: false
|
|
368
500
|
}
|
|
369
501
|
},
|
|
370
502
|
{
|
|
371
503
|
name: "create_draft",
|
|
372
|
-
description: "Create a draft email. Use
|
|
504
|
+
description: "Create a draft email. Use sendAt (ISO 8601 datetime) to schedule it for later sending.",
|
|
373
505
|
paramsSchema: CreateDraftParams,
|
|
374
506
|
func: createDraft,
|
|
375
507
|
annotations: {
|
|
@@ -401,12 +533,12 @@ var tools = [
|
|
|
401
533
|
},
|
|
402
534
|
{
|
|
403
535
|
name: "update_draft",
|
|
404
|
-
description: "Update a draft. Use
|
|
536
|
+
description: "Update a draft. Use sendAt to reschedule a scheduled draft.",
|
|
405
537
|
paramsSchema: UpdateDraftParams,
|
|
406
538
|
func: updateDraft,
|
|
407
539
|
annotations: {
|
|
408
540
|
readOnlyHint: false,
|
|
409
|
-
destructiveHint:
|
|
541
|
+
destructiveHint: true,
|
|
410
542
|
idempotentHint: true,
|
|
411
543
|
openWorldHint: false
|
|
412
544
|
}
|
|
@@ -418,7 +550,7 @@ var tools = [
|
|
|
418
550
|
func: sendDraft,
|
|
419
551
|
annotations: {
|
|
420
552
|
readOnlyHint: false,
|
|
421
|
-
destructiveHint:
|
|
553
|
+
destructiveHint: true,
|
|
422
554
|
idempotentHint: false,
|
|
423
555
|
openWorldHint: true
|
|
424
556
|
}
|
|
@@ -434,6 +566,16 @@ var tools = [
|
|
|
434
566
|
idempotentHint: true,
|
|
435
567
|
openWorldHint: false
|
|
436
568
|
}
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
name: "auth_me",
|
|
572
|
+
description: "Get the identity and scope of the authenticated credential, including organization, pod, and inbox IDs.",
|
|
573
|
+
paramsSchema: AuthMeParams,
|
|
574
|
+
func: authMe,
|
|
575
|
+
annotations: {
|
|
576
|
+
readOnlyHint: true,
|
|
577
|
+
openWorldHint: false
|
|
578
|
+
}
|
|
437
579
|
}
|
|
438
580
|
];
|
|
439
581
|
|