agentmail-toolkit 0.3.1 → 0.4.2
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 +186 -29
- 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/chunk-7YIXVTRA.js +611 -0
- package/dist/chunk-7YIXVTRA.js.map +1 -0
- package/dist/clawdbot.cjs +171 -28
- package/dist/clawdbot.cjs.map +1 -1
- package/dist/clawdbot.js +1 -1
- package/dist/index.cjs +171 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/langchain.cjs +186 -29
- package/dist/langchain.cjs.map +1 -1
- package/dist/langchain.js +1 -1
- package/dist/mcp.cjs +195 -31
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.js +10 -3
- package/dist/mcp.js.map +1 -1
- package/package.json +89 -88
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/util.ts","../src/toolkit.ts","../src/schemas.ts","../src/functions.ts","../src/tools.ts"],"sourcesContent":["import { AgentMailClient, AgentMailError } from 'agentmail'\nimport { getDocumentProxy, extractText } from 'unpdf'\nimport JSZip from 'jszip'\n\n// Pull the API's own explanation out of the error body (e.g. \"address already\n// taken\") instead of returning the SDK's verbose multi-line \"Status code / Body\"\n// dump. Generic across every tool.\nfunction apiErrorMessage(error: AgentMailError): string {\n const body = error.body as { message?: string; detail?: string; error?: string } | string | undefined\n const detail =\n typeof body === 'string' ? body : (body?.message ?? body?.detail ?? body?.error)\n const base = detail ?? error.message\n return error.statusCode ? `${base} (HTTP ${error.statusCode})` : base\n}\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): Promise<{ isError: boolean; result: T | string; statusCode?: number; body?: unknown }> => {\n try {\n return { isError: false, result: await func(client, args) }\n } catch (error) {\n if (error instanceof AgentMailError) {\n return {\n isError: true,\n result: apiErrorMessage(error),\n statusCode: error.statusCode,\n body: error.body,\n }\n }\n if (error instanceof Error) return { isError: true, result: error.message }\n 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'\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 { 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":["AgentMailClient","AgentMailClient"]}
|
package/dist/clawdbot.cjs
CHANGED
|
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(clawdbot_exports);
|
|
|
36
36
|
var import_zod2 = require("zod");
|
|
37
37
|
|
|
38
38
|
// src/toolkit.ts
|
|
39
|
-
var
|
|
39
|
+
var import_agentmail2 = require("agentmail");
|
|
40
40
|
|
|
41
41
|
// src/schemas.ts
|
|
42
42
|
var import_zod = require("zod");
|
|
@@ -55,18 +55,43 @@ var GetInboxParams = import_zod.z.object({
|
|
|
55
55
|
var CreateInboxParams = import_zod.z.object({
|
|
56
56
|
username: import_zod.z.string().optional().describe("Username"),
|
|
57
57
|
domain: import_zod.z.string().optional().describe("Domain"),
|
|
58
|
-
displayName: import_zod.z.string().optional().describe("Display name")
|
|
58
|
+
displayName: import_zod.z.string().optional().describe("Display name"),
|
|
59
|
+
clientId: import_zod.z.string().optional().describe("Client-provided ID for idempotent creation"),
|
|
60
|
+
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")
|
|
61
|
+
});
|
|
62
|
+
var UpdateInboxParams = import_zod.z.object({
|
|
63
|
+
inboxId: InboxIdSchema,
|
|
64
|
+
displayName: import_zod.z.string().optional().describe("Display name"),
|
|
65
|
+
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")
|
|
59
66
|
});
|
|
60
67
|
var ListInboxItemsParams = ListItemsParams.extend({
|
|
61
68
|
inboxId: InboxIdSchema,
|
|
62
69
|
labels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to filter items by"),
|
|
63
70
|
before: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items before datetime"),
|
|
71
|
+
after: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items after datetime"),
|
|
72
|
+
ascending: import_zod.z.boolean().optional().describe("Sort by oldest first instead of most recent first")
|
|
73
|
+
});
|
|
74
|
+
var ListThreadsParams = ListInboxItemsParams.extend({
|
|
75
|
+
senders: import_zod.z.array(import_zod.z.string()).optional().describe("Filter threads by senders (substring match; all values must match)"),
|
|
76
|
+
recipients: import_zod.z.array(import_zod.z.string()).optional().describe("Filter threads by recipients (substring match; all values must match)"),
|
|
77
|
+
subject: import_zod.z.array(import_zod.z.string()).optional().describe("Filter threads by subject (substring match; all values must match)"),
|
|
78
|
+
includeSpam: import_zod.z.boolean().optional().describe("Include threads in spam"),
|
|
79
|
+
includeTrash: import_zod.z.boolean().optional().describe("Include threads in trash")
|
|
80
|
+
});
|
|
81
|
+
var SearchInboxItemsParams = ListItemsParams.extend({
|
|
82
|
+
inboxId: InboxIdSchema,
|
|
83
|
+
q: import_zod.z.string().describe("Full-text search query"),
|
|
84
|
+
before: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items before datetime"),
|
|
64
85
|
after: import_zod.z.string().pipe(import_zod.z.coerce.date()).optional().describe("Filter items after datetime")
|
|
65
86
|
});
|
|
66
87
|
var GetThreadParams = import_zod.z.object({
|
|
67
88
|
inboxId: InboxIdSchema,
|
|
68
89
|
threadId: ThreadIdSchema
|
|
69
90
|
});
|
|
91
|
+
var UpdateThreadParams = GetThreadParams.extend({
|
|
92
|
+
addLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to add"),
|
|
93
|
+
removeLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to remove")
|
|
94
|
+
});
|
|
70
95
|
var GetAttachmentParams = import_zod.z.object({
|
|
71
96
|
inboxId: InboxIdSchema,
|
|
72
97
|
threadId: ThreadIdSchema,
|
|
@@ -89,11 +114,16 @@ var SendMessageParams = BaseMessageParams.extend({
|
|
|
89
114
|
to: import_zod.z.array(import_zod.z.string()).describe("Recipients"),
|
|
90
115
|
cc: import_zod.z.array(import_zod.z.string()).optional().describe("CC recipients"),
|
|
91
116
|
bcc: import_zod.z.array(import_zod.z.string()).optional().describe("BCC recipients"),
|
|
92
|
-
subject: import_zod.z.string().optional().describe("Subject")
|
|
117
|
+
subject: import_zod.z.string().optional().describe("Subject"),
|
|
118
|
+
replyTo: import_zod.z.array(import_zod.z.string()).optional().describe("Reply-to addresses")
|
|
93
119
|
});
|
|
94
120
|
var ReplyToMessageParams = BaseMessageParams.extend({
|
|
95
121
|
messageId: MessageIdSchema,
|
|
96
|
-
replyAll: import_zod.z.boolean().optional().describe("Reply to all recipients")
|
|
122
|
+
replyAll: import_zod.z.boolean().optional().describe("Reply to all recipients"),
|
|
123
|
+
to: import_zod.z.array(import_zod.z.string()).optional().describe("Override reply recipients"),
|
|
124
|
+
cc: import_zod.z.array(import_zod.z.string()).optional().describe("Override CC recipients"),
|
|
125
|
+
bcc: import_zod.z.array(import_zod.z.string()).optional().describe("Override BCC recipients"),
|
|
126
|
+
replyTo: import_zod.z.array(import_zod.z.string()).optional().describe("Reply-to addresses")
|
|
97
127
|
});
|
|
98
128
|
var ForwardMessageParams = SendMessageParams.extend({
|
|
99
129
|
messageId: MessageIdSchema
|
|
@@ -104,6 +134,13 @@ var UpdateMessageParams = import_zod.z.object({
|
|
|
104
134
|
addLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to add"),
|
|
105
135
|
removeLabels: import_zod.z.array(import_zod.z.string()).optional().describe("Labels to remove")
|
|
106
136
|
});
|
|
137
|
+
var ListMessagesParams = ListInboxItemsParams.extend({
|
|
138
|
+
from: import_zod.z.array(import_zod.z.string()).optional().describe("Filter messages by sender (substring match; all values must match)"),
|
|
139
|
+
to: import_zod.z.array(import_zod.z.string()).optional().describe("Filter messages by recipients (substring match; all values must match)"),
|
|
140
|
+
subject: import_zod.z.array(import_zod.z.string()).optional().describe("Filter messages by subject (substring match; all values must match)"),
|
|
141
|
+
includeSpam: import_zod.z.boolean().optional().describe("Include messages in spam"),
|
|
142
|
+
includeTrash: import_zod.z.boolean().optional().describe("Include messages in trash")
|
|
143
|
+
});
|
|
107
144
|
var CreateDraftParams = BaseMessageParams.extend({
|
|
108
145
|
to: import_zod.z.array(import_zod.z.string()).optional().describe("Recipients"),
|
|
109
146
|
cc: import_zod.z.array(import_zod.z.string()).optional().describe("CC recipients"),
|
|
@@ -111,7 +148,8 @@ var CreateDraftParams = BaseMessageParams.extend({
|
|
|
111
148
|
subject: import_zod.z.string().optional().describe("Subject"),
|
|
112
149
|
replyTo: import_zod.z.array(import_zod.z.string()).optional().describe("Reply-to addresses"),
|
|
113
150
|
inReplyTo: import_zod.z.string().optional().describe("Message ID this draft is replying to"),
|
|
114
|
-
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
|
+
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)"),
|
|
152
|
+
clientId: import_zod.z.string().optional().describe("Client-provided ID for idempotent creation")
|
|
115
153
|
});
|
|
116
154
|
var ListDraftsParams = ListInboxItemsParams;
|
|
117
155
|
var GetDraftParams = import_zod.z.object({
|
|
@@ -138,8 +176,10 @@ var DeleteDraftParams = import_zod.z.object({
|
|
|
138
176
|
inboxId: InboxIdSchema,
|
|
139
177
|
draftId: DraftIdSchema
|
|
140
178
|
});
|
|
179
|
+
var AuthMeParams = import_zod.z.object({});
|
|
141
180
|
|
|
142
181
|
// src/util.ts
|
|
182
|
+
var import_agentmail = require("agentmail");
|
|
143
183
|
var import_unpdf = require("unpdf");
|
|
144
184
|
var import_jszip = __toESM(require("jszip"), 1);
|
|
145
185
|
function detectFileType(bytes) {
|
|
@@ -174,6 +214,10 @@ async function getInbox(client, args) {
|
|
|
174
214
|
async function createInbox(client, args) {
|
|
175
215
|
return client.inboxes.create(args);
|
|
176
216
|
}
|
|
217
|
+
async function updateInbox(client, args) {
|
|
218
|
+
const { inboxId, ...options } = args;
|
|
219
|
+
return client.inboxes.update(inboxId, options);
|
|
220
|
+
}
|
|
177
221
|
async function deleteInbox(client, args) {
|
|
178
222
|
const { inboxId } = args;
|
|
179
223
|
return client.inboxes.delete(inboxId);
|
|
@@ -182,13 +226,25 @@ async function listThreads(client, args) {
|
|
|
182
226
|
const { inboxId, ...options } = args;
|
|
183
227
|
return client.inboxes.threads.list(inboxId, options);
|
|
184
228
|
}
|
|
229
|
+
async function searchThreads(client, args) {
|
|
230
|
+
const { inboxId, q, ...options } = args;
|
|
231
|
+
return client.inboxes.threads.search(inboxId, { q, ...options });
|
|
232
|
+
}
|
|
185
233
|
async function getThread(client, args) {
|
|
186
234
|
const { inboxId, threadId, ...options } = args;
|
|
187
235
|
return client.inboxes.threads.get(inboxId, threadId, options);
|
|
188
236
|
}
|
|
237
|
+
async function updateThread(client, args) {
|
|
238
|
+
const { inboxId, threadId, ...options } = args;
|
|
239
|
+
return client.inboxes.threads.update(inboxId, threadId, options);
|
|
240
|
+
}
|
|
241
|
+
async function deleteThread(client, args) {
|
|
242
|
+
const { inboxId, threadId } = args;
|
|
243
|
+
return client.inboxes.threads.delete(inboxId, threadId);
|
|
244
|
+
}
|
|
189
245
|
async function getAttachment(client, args) {
|
|
190
|
-
const { threadId, attachmentId } = args;
|
|
191
|
-
const attachment = await client.threads.getAttachment(threadId, attachmentId);
|
|
246
|
+
const { inboxId, threadId, attachmentId } = args;
|
|
247
|
+
const attachment = await client.inboxes.threads.getAttachment(inboxId, threadId, attachmentId);
|
|
192
248
|
try {
|
|
193
249
|
const response = await fetch(attachment.downloadUrl);
|
|
194
250
|
const arrayBuffer = await response.arrayBuffer();
|
|
@@ -203,6 +259,14 @@ async function getAttachment(client, args) {
|
|
|
203
259
|
}
|
|
204
260
|
return attachment;
|
|
205
261
|
}
|
|
262
|
+
async function listMessages(client, args) {
|
|
263
|
+
const { inboxId, ...options } = args;
|
|
264
|
+
return client.inboxes.messages.list(inboxId, options);
|
|
265
|
+
}
|
|
266
|
+
async function searchMessages(client, args) {
|
|
267
|
+
const { inboxId, q, ...options } = args;
|
|
268
|
+
return client.inboxes.messages.search(inboxId, { q, ...options });
|
|
269
|
+
}
|
|
206
270
|
async function sendMessage(client, args) {
|
|
207
271
|
const { inboxId, ...options } = args;
|
|
208
272
|
return client.inboxes.messages.send(inboxId, options);
|
|
@@ -243,12 +307,15 @@ async function deleteDraft(client, args) {
|
|
|
243
307
|
const { inboxId, draftId } = args;
|
|
244
308
|
return client.inboxes.drafts.delete(inboxId, draftId);
|
|
245
309
|
}
|
|
310
|
+
async function authMe(client) {
|
|
311
|
+
return client.auth.me();
|
|
312
|
+
}
|
|
246
313
|
|
|
247
314
|
// src/tools.ts
|
|
248
315
|
var tools = [
|
|
249
316
|
{
|
|
250
317
|
name: "list_inboxes",
|
|
251
|
-
description: "List inboxes",
|
|
318
|
+
description: "List email inboxes, paginated.",
|
|
252
319
|
paramsSchema: ListItemsParams,
|
|
253
320
|
func: listInboxes,
|
|
254
321
|
annotations: {
|
|
@@ -258,7 +325,7 @@ var tools = [
|
|
|
258
325
|
},
|
|
259
326
|
{
|
|
260
327
|
name: "get_inbox",
|
|
261
|
-
description: "Get inbox",
|
|
328
|
+
description: "Get an inbox by ID.",
|
|
262
329
|
paramsSchema: GetInboxParams,
|
|
263
330
|
func: getInbox,
|
|
264
331
|
annotations: {
|
|
@@ -268,7 +335,7 @@ var tools = [
|
|
|
268
335
|
},
|
|
269
336
|
{
|
|
270
337
|
name: "create_inbox",
|
|
271
|
-
description: "Create inbox",
|
|
338
|
+
description: "Create a new email inbox. Optionally specify username, domain, display name, and metadata.",
|
|
272
339
|
paramsSchema: CreateInboxParams,
|
|
273
340
|
func: createInbox,
|
|
274
341
|
annotations: {
|
|
@@ -278,9 +345,21 @@ var tools = [
|
|
|
278
345
|
openWorldHint: false
|
|
279
346
|
}
|
|
280
347
|
},
|
|
348
|
+
{
|
|
349
|
+
name: "update_inbox",
|
|
350
|
+
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.",
|
|
351
|
+
paramsSchema: UpdateInboxParams,
|
|
352
|
+
func: updateInbox,
|
|
353
|
+
annotations: {
|
|
354
|
+
readOnlyHint: false,
|
|
355
|
+
destructiveHint: true,
|
|
356
|
+
idempotentHint: true,
|
|
357
|
+
openWorldHint: false
|
|
358
|
+
}
|
|
359
|
+
},
|
|
281
360
|
{
|
|
282
361
|
name: "delete_inbox",
|
|
283
|
-
description: "Delete inbox",
|
|
362
|
+
description: "Delete an inbox by ID.",
|
|
284
363
|
paramsSchema: GetInboxParams,
|
|
285
364
|
func: deleteInbox,
|
|
286
365
|
annotations: {
|
|
@@ -292,17 +371,27 @@ var tools = [
|
|
|
292
371
|
},
|
|
293
372
|
{
|
|
294
373
|
name: "list_threads",
|
|
295
|
-
description: "List threads in inbox",
|
|
296
|
-
paramsSchema:
|
|
374
|
+
description: "List email threads in an inbox. Filter by labels, sender, recipient, subject, or before/after datetime, paginated.",
|
|
375
|
+
paramsSchema: ListThreadsParams,
|
|
297
376
|
func: listThreads,
|
|
298
377
|
annotations: {
|
|
299
378
|
readOnlyHint: true,
|
|
300
379
|
openWorldHint: true
|
|
301
380
|
}
|
|
302
381
|
},
|
|
382
|
+
{
|
|
383
|
+
name: "search_threads",
|
|
384
|
+
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.",
|
|
385
|
+
paramsSchema: SearchInboxItemsParams,
|
|
386
|
+
func: searchThreads,
|
|
387
|
+
annotations: {
|
|
388
|
+
readOnlyHint: true,
|
|
389
|
+
openWorldHint: true
|
|
390
|
+
}
|
|
391
|
+
},
|
|
303
392
|
{
|
|
304
393
|
name: "get_thread",
|
|
305
|
-
description: "Get thread",
|
|
394
|
+
description: "Get a thread by ID, including its messages.",
|
|
306
395
|
paramsSchema: GetThreadParams,
|
|
307
396
|
func: getThread,
|
|
308
397
|
annotations: {
|
|
@@ -312,7 +401,7 @@ var tools = [
|
|
|
312
401
|
},
|
|
313
402
|
{
|
|
314
403
|
name: "get_attachment",
|
|
315
|
-
description: "Get attachment",
|
|
404
|
+
description: "Get an attachment from a thread. Returns metadata and a download URL, plus extracted text for PDF and DOCX files.",
|
|
316
405
|
paramsSchema: GetAttachmentParams,
|
|
317
406
|
func: getAttachment,
|
|
318
407
|
annotations: {
|
|
@@ -320,57 +409,101 @@ var tools = [
|
|
|
320
409
|
openWorldHint: true
|
|
321
410
|
}
|
|
322
411
|
},
|
|
412
|
+
{
|
|
413
|
+
name: "update_thread",
|
|
414
|
+
description: "Update a thread's labels (add or remove). System labels cannot be modified.",
|
|
415
|
+
paramsSchema: UpdateThreadParams,
|
|
416
|
+
func: updateThread,
|
|
417
|
+
annotations: {
|
|
418
|
+
readOnlyHint: false,
|
|
419
|
+
destructiveHint: true,
|
|
420
|
+
idempotentHint: true,
|
|
421
|
+
openWorldHint: false
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
name: "delete_thread",
|
|
426
|
+
description: "Delete a thread from an inbox.",
|
|
427
|
+
paramsSchema: GetThreadParams,
|
|
428
|
+
func: deleteThread,
|
|
429
|
+
annotations: {
|
|
430
|
+
readOnlyHint: false,
|
|
431
|
+
destructiveHint: true,
|
|
432
|
+
idempotentHint: false,
|
|
433
|
+
openWorldHint: false
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
name: "list_messages",
|
|
438
|
+
description: "List messages in an inbox. Filter by labels, sender, recipient, subject, or before/after datetime, paginated.",
|
|
439
|
+
paramsSchema: ListMessagesParams,
|
|
440
|
+
func: listMessages,
|
|
441
|
+
annotations: {
|
|
442
|
+
readOnlyHint: true,
|
|
443
|
+
openWorldHint: true
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
name: "search_messages",
|
|
448
|
+
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.",
|
|
449
|
+
paramsSchema: SearchInboxItemsParams,
|
|
450
|
+
func: searchMessages,
|
|
451
|
+
annotations: {
|
|
452
|
+
readOnlyHint: true,
|
|
453
|
+
openWorldHint: true
|
|
454
|
+
}
|
|
455
|
+
},
|
|
323
456
|
{
|
|
324
457
|
name: "send_message",
|
|
325
|
-
description: "Send
|
|
458
|
+
description: "Send an email from an inbox to one or more recipients.",
|
|
326
459
|
paramsSchema: SendMessageParams,
|
|
327
460
|
func: sendMessage,
|
|
328
461
|
annotations: {
|
|
329
462
|
readOnlyHint: false,
|
|
330
|
-
destructiveHint:
|
|
463
|
+
destructiveHint: true,
|
|
331
464
|
idempotentHint: false,
|
|
332
465
|
openWorldHint: true
|
|
333
466
|
}
|
|
334
467
|
},
|
|
335
468
|
{
|
|
336
469
|
name: "reply_to_message",
|
|
337
|
-
description: "Reply to message",
|
|
470
|
+
description: "Reply to a message in its thread. Set replyAll to include all original recipients.",
|
|
338
471
|
paramsSchema: ReplyToMessageParams,
|
|
339
472
|
func: replyToMessage,
|
|
340
473
|
annotations: {
|
|
341
474
|
readOnlyHint: false,
|
|
342
|
-
destructiveHint:
|
|
475
|
+
destructiveHint: true,
|
|
343
476
|
idempotentHint: false,
|
|
344
477
|
openWorldHint: true
|
|
345
478
|
}
|
|
346
479
|
},
|
|
347
480
|
{
|
|
348
481
|
name: "forward_message",
|
|
349
|
-
description: "Forward message",
|
|
482
|
+
description: "Forward a message to new recipients.",
|
|
350
483
|
paramsSchema: ForwardMessageParams,
|
|
351
484
|
func: forwardMessage,
|
|
352
485
|
annotations: {
|
|
353
486
|
readOnlyHint: false,
|
|
354
|
-
destructiveHint:
|
|
487
|
+
destructiveHint: true,
|
|
355
488
|
idempotentHint: false,
|
|
356
489
|
openWorldHint: true
|
|
357
490
|
}
|
|
358
491
|
},
|
|
359
492
|
{
|
|
360
493
|
name: "update_message",
|
|
361
|
-
description: "Update message",
|
|
494
|
+
description: "Update a message's labels (add or remove).",
|
|
362
495
|
paramsSchema: UpdateMessageParams,
|
|
363
496
|
func: updateMessage,
|
|
364
497
|
annotations: {
|
|
365
498
|
readOnlyHint: false,
|
|
366
|
-
destructiveHint:
|
|
499
|
+
destructiveHint: true,
|
|
367
500
|
idempotentHint: true,
|
|
368
501
|
openWorldHint: false
|
|
369
502
|
}
|
|
370
503
|
},
|
|
371
504
|
{
|
|
372
505
|
name: "create_draft",
|
|
373
|
-
description: "Create a draft email. Use
|
|
506
|
+
description: "Create a draft email. Use sendAt (ISO 8601 datetime) to schedule it for later sending.",
|
|
374
507
|
paramsSchema: CreateDraftParams,
|
|
375
508
|
func: createDraft,
|
|
376
509
|
annotations: {
|
|
@@ -402,12 +535,12 @@ var tools = [
|
|
|
402
535
|
},
|
|
403
536
|
{
|
|
404
537
|
name: "update_draft",
|
|
405
|
-
description: "Update a draft. Use
|
|
538
|
+
description: "Update a draft. Use sendAt to reschedule a scheduled draft.",
|
|
406
539
|
paramsSchema: UpdateDraftParams,
|
|
407
540
|
func: updateDraft,
|
|
408
541
|
annotations: {
|
|
409
542
|
readOnlyHint: false,
|
|
410
|
-
destructiveHint:
|
|
543
|
+
destructiveHint: true,
|
|
411
544
|
idempotentHint: true,
|
|
412
545
|
openWorldHint: false
|
|
413
546
|
}
|
|
@@ -419,7 +552,7 @@ var tools = [
|
|
|
419
552
|
func: sendDraft,
|
|
420
553
|
annotations: {
|
|
421
554
|
readOnlyHint: false,
|
|
422
|
-
destructiveHint:
|
|
555
|
+
destructiveHint: true,
|
|
423
556
|
idempotentHint: false,
|
|
424
557
|
openWorldHint: true
|
|
425
558
|
}
|
|
@@ -435,6 +568,16 @@ var tools = [
|
|
|
435
568
|
idempotentHint: true,
|
|
436
569
|
openWorldHint: false
|
|
437
570
|
}
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
name: "auth_me",
|
|
574
|
+
description: "Get the identity and scope of the authenticated credential, including organization, pod, and inbox IDs.",
|
|
575
|
+
paramsSchema: AuthMeParams,
|
|
576
|
+
func: authMe,
|
|
577
|
+
annotations: {
|
|
578
|
+
readOnlyHint: true,
|
|
579
|
+
openWorldHint: false
|
|
580
|
+
}
|
|
438
581
|
}
|
|
439
582
|
];
|
|
440
583
|
|
|
@@ -443,7 +586,7 @@ var BaseToolkit = class {
|
|
|
443
586
|
client;
|
|
444
587
|
tools = {};
|
|
445
588
|
constructor(client) {
|
|
446
|
-
this.client = client ?? new
|
|
589
|
+
this.client = client ?? new import_agentmail2.AgentMailClient();
|
|
447
590
|
this.tools = tools.reduce(
|
|
448
591
|
(acc, tool) => {
|
|
449
592
|
acc[tool.name] = this.buildTool(tool);
|