agentmail-toolkit 0.1.18 → 0.1.19

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/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mcp.ts","../src/wrapper.ts","../src/schemas.ts","../src/tools.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { AgentMailClient } from 'agentmail'\n\nimport { Wrapper } from './wrapper'\nimport { tools } from './tools'\n\nexport class AgentMailMcpServer extends McpServer {\n private wrapper: Wrapper\n\n constructor(client?: AgentMailClient) {\n super({\n name: 'AgentMail',\n version: '0.1.0',\n })\n\n this.wrapper = new Wrapper(client)\n\n for (const tool of tools) {\n this.tool(tool.name, tool.description, tool.schema.shape, async (args: unknown) => ({\n content: [\n {\n type: 'text' as const,\n text: await this.wrapper.callMethodAndStringify(tool.method, args),\n },\n ],\n }))\n }\n }\n}\n","import { AgentMailClient } from 'agentmail'\n\nexport class Wrapper {\n constructor(private readonly client?: AgentMailClient) {\n if (!this.client) this.client = new AgentMailClient()\n }\n\n public async callMethod(method: string, args: unknown) {\n const parts = method.split('.')\n const methodKey = parts.pop()\n\n if (!methodKey) throw new Error('Method name empty')\n\n let parent: any = this.client\n for (const part of parts) parent = parent[part]\n\n return await parent[methodKey].call(parent, args)\n }\n\n public async callMethodAndStringify(method: string, args: unknown) {\n try {\n const result = await this.callMethod(method, args)\n return JSON.stringify(result, null, 2)\n } catch (error) {\n return JSON.stringify(error, null, 2)\n }\n }\n}\n","import { z } from 'zod'\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().describe('The maximum number of items to return'),\n last_key: z.string().optional().describe('The last key to use for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inbox_id: z.string().describe('The ID of the inbox to get'),\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('The username of the inbox to create'),\n domain: z.string().optional().describe('The domain of the inbox to create'),\n display_name: z.string().optional().describe('The display name of the inbox to create'),\n})\n\nexport const ListThreadsParams = ListItemsParams.extend({\n inbox_id: z.string().describe('The ID of the inbox to list threads for'),\n labels: z.array(z.string()).optional().describe('The labels to filter threads by'),\n})\n\nexport const GetThreadParams = z.object({\n inbox_id: z.string().describe('The ID of the inbox to get the thread for'),\n thread_id: z.string().describe('The ID of the thread to get'),\n})\n\nexport const ListMessagesParams = ListItemsParams.extend({\n inbox_id: z.string().describe('The ID of the inbox to list messages for'),\n labels: z.array(z.string()).optional().describe('The labels to filter messages by'),\n})\n\nexport const GetMessageParams = z.object({\n inbox_id: z.string().describe('The ID of the inbox to get the message for'),\n message_id: z.string().describe('The ID of the message to get'),\n})\n\nexport const GetAttachmentParams = z.object({\n inbox_id: z.string().describe('The ID of the inbox to get the attachment for'),\n message_id: z.string().describe('The ID of the message to get the attachment for'),\n attachment_id: z.string().describe('The ID of the attachment to get'),\n})\n\nexport const SendMessageParams = z.object({\n inbox_id: z.string().describe('The ID of the inbox to send the message from'),\n to: z.array(z.string()).describe('The list of recipients'),\n cc: z.array(z.string()).optional().describe('The list of CC recipients'),\n bcc: z.array(z.string()).optional().describe('The list of BCC recipients'),\n subject: z.string().optional().describe('The subject of the message'),\n text: z.string().optional().describe('The plain text body of the message'),\n html: z.string().optional().describe('The HTML body of the message'),\n})\n\nexport const ReplyToMessageParams = z.object({\n inbox_id: z.string().describe('The inbox ID of the inbox to reply to the message from'),\n message_id: z.string().describe('The message ID of the message you wish to reply to'),\n text: z.string().optional().describe('The plain text body of the reply'),\n html: z.string().optional().describe('The HTML body of the reply'),\n})\n","import { AnyZodObject } from 'zod'\n\nimport {\n ListItemsParams,\n GetInboxParams,\n CreateInboxParams,\n ListThreadsParams,\n GetThreadParams,\n ListMessagesParams,\n GetMessageParams,\n GetAttachmentParams,\n SendMessageParams,\n ReplyToMessageParams,\n} from './schemas'\n\nexport type Tool = {\n name: string\n method: string\n description: string\n schema: AnyZodObject\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n method: 'inboxes.list',\n description: 'List all inboxes',\n schema: ListItemsParams,\n },\n {\n name: 'get_inbox',\n method: 'inboxes.get',\n description: 'Get an inbox by ID',\n schema: GetInboxParams,\n },\n {\n name: 'create_inbox',\n method: 'inboxes.create',\n description: 'Create a new inbox',\n schema: CreateInboxParams,\n },\n {\n name: 'list_threads',\n method: 'threads.list',\n description: 'List all threads',\n schema: ListThreadsParams,\n },\n {\n name: 'get_thread',\n method: 'threads.get',\n description: 'Get a thread by ID',\n schema: GetThreadParams,\n },\n {\n name: 'list_messages',\n method: 'messages.list',\n description: 'List all messages',\n schema: ListMessagesParams,\n },\n {\n name: 'get_message',\n method: 'messages.get',\n description: 'Get a message by ID',\n schema: GetMessageParams,\n },\n {\n name: 'get_attachment',\n method: 'attachments.get',\n description: 'Get an attachment by ID',\n schema: GetAttachmentParams,\n },\n {\n name: 'send_message',\n method: 'messages.send',\n description: 'Send a message',\n schema: SendMessageParams,\n },\n {\n name: 'reply_to_message',\n method: 'messages.reply',\n description: 'Reply to a message',\n schema: ReplyToMessageParams,\n },\n]\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/mcp.ts","../src/wrapper.ts","../src/schemas.ts","../src/tools.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { AgentMailClient } from 'agentmail'\n\nimport { Wrapper } from './wrapper'\nimport { tools } from './tools'\n\nexport class AgentMailMcpServer extends McpServer {\n private wrapper: Wrapper\n\n constructor(client?: AgentMailClient) {\n super({\n name: 'AgentMail',\n version: '0.1.0',\n })\n\n this.wrapper = new Wrapper(client)\n\n for (const tool of tools) {\n this.tool(tool.name, tool.description, tool.schema.shape, async (args: unknown) => {\n const { isError, result } = await this.wrapper.safeCall(tool.method, args)\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }], isError }\n })\n }\n }\n}\n","import { AgentMailClient } from 'agentmail'\n\nexport class Wrapper {\n constructor(private readonly client?: AgentMailClient) {\n if (!this.client) this.client = new AgentMailClient()\n }\n\n public async call(method: string, args: any) {\n const parts = method.split('.')\n const methodKey = parts.pop()\n\n if (!methodKey) throw new Error('Method name empty')\n\n let parent: any = this.client\n for (const part of parts) parent = parent[part]\n\n const { inboxId, ...options } = args\n\n if (inboxId) return await parent[methodKey].call(parent, inboxId, options)\n else return await parent[methodKey].call(parent, options)\n }\n\n public async safeCall(method: string, args: any) {\n try {\n return { isError: false, result: await this.call(method, 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}\n","import { z } from 'zod'\n\nexport const ListItemsParams = z.object({\n limit: z.number().optional().describe('The maximum number of items to return'),\n lastKey: z.string().optional().describe('The last key to use for pagination'),\n})\n\nexport const GetInboxParams = z.object({\n inboxId: z.string().describe('The ID of the inbox to get'),\n})\n\nexport const CreateInboxParams = z.object({\n username: z.string().optional().describe('The username of the inbox to create'),\n domain: z.string().optional().describe('The domain of the inbox to create'),\n displayName: z.string().optional().describe('The display name of the inbox to create'),\n})\n\nexport const ListThreadsParams = ListItemsParams.extend({\n inboxId: z.string().describe('The ID of the inbox to list threads for'),\n labels: z.array(z.string()).optional().describe('The labels to filter threads by'),\n})\n\nexport const GetThreadParams = z.object({\n inboxId: z.string().describe('The ID of the inbox to get the thread for'),\n threadId: z.string().describe('The ID of the thread to get'),\n})\n\nexport const ListMessagesParams = ListItemsParams.extend({\n inboxId: z.string().describe('The ID of the inbox to list messages for'),\n labels: z.array(z.string()).optional().describe('The labels to filter messages by'),\n})\n\nexport const GetMessageParams = z.object({\n inboxId: z.string().describe('The ID of the inbox to get the message for'),\n messageId: z.string().describe('The ID of the message to get'),\n})\n\nexport const GetAttachmentParams = z.object({\n inboxId: z.string().describe('The ID of the inbox to get the attachment for'),\n messageId: z.string().describe('The ID of the message to get the attachment for'),\n attachmentId: z.string().describe('The ID of the attachment to get'),\n})\n\nexport const SendMessageParams = z.object({\n inboxId: z.string().describe('The ID of the inbox to send the message from'),\n to: z.array(z.string()).describe('The list of recipients'),\n cc: z.array(z.string()).optional().describe('The list of CC recipients'),\n bcc: z.array(z.string()).optional().describe('The list of BCC recipients'),\n subject: z.string().optional().describe('The subject of the message'),\n text: z.string().optional().describe('The plain text body of the message'),\n html: z.string().optional().describe('The HTML body of the message'),\n})\n\nexport const ReplyToMessageParams = z.object({\n inboxId: z.string().describe('The inbox ID of the inbox to reply to the message from'),\n messageId: z.string().describe('The message ID of the message you wish to reply to'),\n text: z.string().optional().describe('The plain text body of the reply'),\n html: z.string().optional().describe('The HTML body of the reply'),\n})\n","import { AnyZodObject } from 'zod'\n\nimport {\n ListItemsParams,\n GetInboxParams,\n CreateInboxParams,\n ListThreadsParams,\n GetThreadParams,\n ListMessagesParams,\n GetMessageParams,\n GetAttachmentParams,\n SendMessageParams,\n ReplyToMessageParams,\n} from './schemas'\n\nexport type Tool = {\n name: string\n method: string\n description: string\n schema: AnyZodObject\n}\n\nexport const tools: Tool[] = [\n {\n name: 'list_inboxes',\n method: 'inboxes.list',\n description: 'List all inboxes',\n schema: ListItemsParams,\n },\n {\n name: 'get_inbox',\n method: 'inboxes.get',\n description: 'Get an inbox by ID',\n schema: GetInboxParams,\n },\n {\n name: 'create_inbox',\n method: 'inboxes.create',\n description: 'Create a new inbox',\n schema: CreateInboxParams,\n },\n {\n name: 'list_threads',\n method: 'threads.list',\n description: 'List all threads',\n schema: ListThreadsParams,\n },\n {\n name: 'get_thread',\n method: 'threads.get',\n description: 'Get a thread by ID',\n schema: GetThreadParams,\n },\n {\n name: 'list_messages',\n method: 'messages.list',\n description: 'List all messages',\n schema: ListMessagesParams,\n },\n {\n name: 'get_message',\n method: 'messages.get',\n description: 'Get a message by ID',\n schema: GetMessageParams,\n },\n {\n name: 'get_attachment',\n method: 'attachments.get',\n description: 'Get an attachment by ID',\n schema: GetAttachmentParams,\n },\n {\n name: 'send_message',\n method: 'messages.send',\n description: 'Send a message',\n schema: SendMessageParams,\n },\n {\n name: 'reply_to_message',\n method: 'messages.reply',\n description: 'Reply to a message',\n schema: ReplyToMessageParams,\n },\n]\n"],"mappings":"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","names":[]}
package/dist/mcp.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Wrapper
3
- } from "./chunk-3TR24M4E.mjs";
3
+ } from "./chunk-XAJA2AYA.mjs";
4
4
  import {
5
5
  tools
6
- } from "./chunk-QBOE34GE.mjs";
6
+ } from "./chunk-DNXRYZOH.mjs";
7
7
 
8
8
  // src/mcp.ts
9
9
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -16,14 +16,10 @@ var AgentMailMcpServer = class extends McpServer {
16
16
  });
17
17
  this.wrapper = new Wrapper(client);
18
18
  for (const tool of tools) {
19
- this.tool(tool.name, tool.description, tool.schema.shape, async (args) => ({
20
- content: [
21
- {
22
- type: "text",
23
- text: await this.wrapper.callMethodAndStringify(tool.method, args)
24
- }
25
- ]
26
- }));
19
+ this.tool(tool.name, tool.description, tool.schema.shape, async (args) => {
20
+ const { isError, result } = await this.wrapper.safeCall(tool.method, args);
21
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], isError };
22
+ });
27
23
  }
28
24
  }
29
25
  };
package/dist/mcp.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mcp.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { AgentMailClient } from 'agentmail'\n\nimport { Wrapper } from './wrapper'\nimport { tools } from './tools'\n\nexport class AgentMailMcpServer extends McpServer {\n private wrapper: Wrapper\n\n constructor(client?: AgentMailClient) {\n super({\n name: 'AgentMail',\n version: '0.1.0',\n })\n\n this.wrapper = new Wrapper(client)\n\n for (const tool of tools) {\n this.tool(tool.name, tool.description, tool.schema.shape, async (args: unknown) => ({\n content: [\n {\n type: 'text' as const,\n text: await this.wrapper.callMethodAndStringify(tool.method, args),\n },\n ],\n }))\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,iBAAiB;AAMnB,IAAM,qBAAN,cAAiC,UAAU;AAAA,EACtC;AAAA,EAER,YAAY,QAA0B;AAClC,UAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IACb,CAAC;AAED,SAAK,UAAU,IAAI,QAAQ,MAAM;AAEjC,eAAW,QAAQ,OAAO;AACtB,WAAK,KAAK,KAAK,MAAM,KAAK,aAAa,KAAK,OAAO,OAAO,OAAO,UAAmB;AAAA,QAChF,SAAS;AAAA,UACL;AAAA,YACI,MAAM;AAAA,YACN,MAAM,MAAM,KAAK,QAAQ,uBAAuB,KAAK,QAAQ,IAAI;AAAA,UACrE;AAAA,QACJ;AAAA,MACJ,EAAE;AAAA,IACN;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/mcp.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { AgentMailClient } from 'agentmail'\n\nimport { Wrapper } from './wrapper'\nimport { tools } from './tools'\n\nexport class AgentMailMcpServer extends McpServer {\n private wrapper: Wrapper\n\n constructor(client?: AgentMailClient) {\n super({\n name: 'AgentMail',\n version: '0.1.0',\n })\n\n this.wrapper = new Wrapper(client)\n\n for (const tool of tools) {\n this.tool(tool.name, tool.description, tool.schema.shape, async (args: unknown) => {\n const { isError, result } = await this.wrapper.safeCall(tool.method, args)\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }], isError }\n })\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,iBAAiB;AAMnB,IAAM,qBAAN,cAAiC,UAAU;AAAA,EACtC;AAAA,EAER,YAAY,QAA0B;AAClC,UAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IACb,CAAC;AAED,SAAK,UAAU,IAAI,QAAQ,MAAM;AAEjC,eAAW,QAAQ,OAAO;AACtB,WAAK,KAAK,KAAK,MAAM,KAAK,aAAa,KAAK,OAAO,OAAO,OAAO,SAAkB;AAC/E,cAAM,EAAE,SAAS,OAAO,IAAI,MAAM,KAAK,QAAQ,SAAS,KAAK,QAAQ,IAAI;AACzE,eAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ;AAAA,MAClG,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;","names":[]}
@@ -0,0 +1,27 @@
1
+ import { AgentMailClient } from 'agentmail';
2
+ import { T as Tool } from './tools-DFoMkoW0.mjs';
3
+
4
+ declare class Wrapper {
5
+ private readonly client?;
6
+ constructor(client?: AgentMailClient | undefined);
7
+ call(method: string, args: any): Promise<any>;
8
+ safeCall(method: string, args: any): Promise<{
9
+ isError: boolean;
10
+ result: any;
11
+ }>;
12
+ }
13
+
14
+ declare abstract class ListToolkit<T> extends Wrapper {
15
+ protected readonly tools: T[];
16
+ constructor(client?: AgentMailClient);
17
+ protected abstract buildTool(tool: Tool): T;
18
+ getTools(): T[];
19
+ }
20
+ declare abstract class MapToolkit<T> extends Wrapper {
21
+ protected readonly tools: Record<string, T>;
22
+ constructor(client?: AgentMailClient);
23
+ protected abstract buildTool(tool: Tool): T;
24
+ getTools(): Record<string, T>;
25
+ }
26
+
27
+ export { ListToolkit as L, MapToolkit as M };
@@ -0,0 +1,27 @@
1
+ import { AgentMailClient } from 'agentmail';
2
+ import { T as Tool } from './tools-DFoMkoW0.js';
3
+
4
+ declare class Wrapper {
5
+ private readonly client?;
6
+ constructor(client?: AgentMailClient | undefined);
7
+ call(method: string, args: any): Promise<any>;
8
+ safeCall(method: string, args: any): Promise<{
9
+ isError: boolean;
10
+ result: any;
11
+ }>;
12
+ }
13
+
14
+ declare abstract class ListToolkit<T> extends Wrapper {
15
+ protected readonly tools: T[];
16
+ constructor(client?: AgentMailClient);
17
+ protected abstract buildTool(tool: Tool): T;
18
+ getTools(): T[];
19
+ }
20
+ declare abstract class MapToolkit<T> extends Wrapper {
21
+ protected readonly tools: Record<string, T>;
22
+ constructor(client?: AgentMailClient);
23
+ protected abstract buildTool(tool: Tool): T;
24
+ getTools(): Record<string, T>;
25
+ }
26
+
27
+ export { ListToolkit as L, MapToolkit as M };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentmail-toolkit",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "AgentMail Toolkit",
5
5
  "scripts": {
6
6
  "build": "tsup",