agentmail 0.1.6 → 0.1.7

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.
Files changed (233) hide show
  1. package/README.md +63 -0
  2. package/dist/cjs/BaseClient.d.ts +14 -1
  3. package/dist/cjs/BaseClient.js +59 -0
  4. package/dist/cjs/Client.d.ts +30 -29
  5. package/dist/cjs/Client.js +12 -53
  6. package/dist/cjs/api/resources/apiKeys/client/Client.d.ts +12 -12
  7. package/dist/cjs/api/resources/apiKeys/client/Client.js +29 -31
  8. package/dist/cjs/api/resources/domains/client/Client.d.ts +19 -19
  9. package/dist/cjs/api/resources/domains/client/Client.js +60 -53
  10. package/dist/cjs/api/resources/drafts/client/Client.d.ts +10 -10
  11. package/dist/cjs/api/resources/drafts/client/Client.js +23 -28
  12. package/dist/cjs/api/resources/events/types/DomainVerifiedEvent.d.ts +7 -0
  13. package/dist/cjs/api/resources/{webhooks → events}/types/EventType.d.ts +1 -0
  14. package/dist/cjs/api/resources/{webhooks → events}/types/EventType.js +1 -0
  15. package/dist/cjs/api/resources/events/types/EventTypes.d.ts +5 -0
  16. package/dist/cjs/api/resources/events/types/EventTypes.js +3 -0
  17. package/dist/cjs/api/resources/events/types/index.d.ts +3 -0
  18. package/dist/cjs/api/resources/events/types/index.js +3 -0
  19. package/dist/cjs/api/resources/inboxes/client/Client.d.ts +30 -30
  20. package/dist/cjs/api/resources/inboxes/client/Client.js +55 -51
  21. package/dist/cjs/api/resources/inboxes/resources/drafts/client/Client.d.ts +27 -27
  22. package/dist/cjs/api/resources/inboxes/resources/drafts/client/Client.js +77 -70
  23. package/dist/cjs/api/resources/inboxes/resources/messages/client/Client.d.ts +25 -25
  24. package/dist/cjs/api/resources/inboxes/resources/messages/client/Client.js +83 -73
  25. package/dist/cjs/api/resources/inboxes/resources/metrics/client/Client.d.ts +8 -8
  26. package/dist/cjs/api/resources/inboxes/resources/metrics/client/Client.js +17 -25
  27. package/dist/cjs/api/resources/inboxes/resources/threads/client/Client.d.ts +17 -17
  28. package/dist/cjs/api/resources/inboxes/resources/threads/client/Client.js +51 -50
  29. package/dist/cjs/api/resources/metrics/client/Client.d.ts +7 -7
  30. package/dist/cjs/api/resources/metrics/client/Client.js +12 -20
  31. package/dist/cjs/api/resources/pods/client/Client.d.ts +27 -27
  32. package/dist/cjs/api/resources/pods/client/Client.js +44 -43
  33. package/dist/cjs/api/resources/pods/resources/domains/client/Client.d.ts +15 -15
  34. package/dist/cjs/api/resources/pods/resources/domains/client/Client.js +41 -43
  35. package/dist/cjs/api/resources/pods/resources/drafts/client/Client.d.ts +12 -12
  36. package/dist/cjs/api/resources/pods/resources/drafts/client/Client.js +30 -35
  37. package/dist/cjs/api/resources/pods/resources/inboxes/client/Client.d.ts +19 -19
  38. package/dist/cjs/api/resources/pods/resources/inboxes/client/Client.js +53 -52
  39. package/dist/cjs/api/resources/pods/resources/threads/client/Client.d.ts +13 -13
  40. package/dist/cjs/api/resources/pods/resources/threads/client/Client.js +39 -41
  41. package/dist/cjs/api/resources/threads/client/Client.d.ts +11 -11
  42. package/dist/cjs/api/resources/threads/client/Client.js +32 -34
  43. package/dist/cjs/api/resources/webhooks/client/Client.d.ts +15 -15
  44. package/dist/cjs/api/resources/webhooks/client/Client.js +40 -39
  45. package/dist/cjs/api/resources/webhooks/types/CreateWebhookRequest.d.ts +1 -1
  46. package/dist/cjs/api/resources/webhooks/types/Webhook.d.ts +1 -1
  47. package/dist/cjs/api/resources/webhooks/types/index.d.ts +0 -2
  48. package/dist/cjs/api/resources/webhooks/types/index.js +0 -2
  49. package/dist/cjs/api/resources/websockets/client/Client.d.ts +6 -6
  50. package/dist/cjs/api/resources/websockets/client/Client.js +8 -19
  51. package/dist/cjs/api/resources/websockets/client/Socket.d.ts +1 -1
  52. package/dist/cjs/api/resources/websockets/types/Subscribe.d.ts +5 -1
  53. package/dist/cjs/api/resources/websockets/types/Subscribed.d.ts +5 -1
  54. package/dist/cjs/auth/BearerAuthProvider.d.ts +14 -0
  55. package/dist/cjs/auth/BearerAuthProvider.js +72 -0
  56. package/dist/cjs/auth/index.d.ts +1 -0
  57. package/dist/cjs/auth/index.js +5 -0
  58. package/dist/cjs/core/auth/AuthProvider.d.ts +4 -1
  59. package/dist/cjs/core/auth/BearerToken.d.ts +3 -1
  60. package/dist/cjs/core/auth/BearerToken.js +7 -6
  61. package/dist/cjs/core/auth/NoOpAuthProvider.d.ts +5 -0
  62. package/dist/cjs/core/auth/NoOpAuthProvider.js +9 -0
  63. package/dist/cjs/core/auth/index.d.ts +1 -0
  64. package/dist/cjs/core/auth/index.js +3 -1
  65. package/dist/cjs/core/exports.d.ts +1 -0
  66. package/dist/cjs/core/exports.js +1 -0
  67. package/dist/cjs/core/fetcher/Fetcher.d.ts +4 -1
  68. package/dist/cjs/core/fetcher/Fetcher.js +202 -9
  69. package/dist/cjs/core/fetcher/getRequestBody.d.ts +1 -1
  70. package/dist/cjs/core/fetcher/getRequestBody.js +4 -0
  71. package/dist/cjs/core/fetcher/makeRequest.d.ts +1 -1
  72. package/dist/cjs/core/fetcher/makeRequest.js +0 -2
  73. package/dist/cjs/core/fetcher/requestWithRetries.js +0 -9
  74. package/dist/cjs/core/fetcher/signals.d.ts +0 -6
  75. package/dist/cjs/core/fetcher/signals.js +0 -12
  76. package/dist/cjs/core/headers.js +6 -4
  77. package/dist/cjs/core/index.d.ts +1 -0
  78. package/dist/cjs/core/index.js +2 -1
  79. package/dist/cjs/core/logging/exports.d.ts +18 -0
  80. package/dist/cjs/core/logging/exports.js +45 -0
  81. package/dist/cjs/core/logging/index.d.ts +1 -0
  82. package/dist/cjs/core/logging/index.js +17 -0
  83. package/dist/cjs/core/logging/logger.d.ts +126 -0
  84. package/dist/cjs/core/logging/logger.js +144 -0
  85. package/dist/cjs/core/schemas/Schema.d.ts +1 -0
  86. package/dist/cjs/core/schemas/Schema.js +1 -0
  87. package/dist/cjs/core/schemas/builders/primitives/index.d.ts +1 -0
  88. package/dist/cjs/core/schemas/builders/primitives/index.js +3 -1
  89. package/dist/cjs/core/schemas/builders/primitives/never.d.ts +2 -0
  90. package/dist/cjs/core/schemas/builders/primitives/never.js +14 -0
  91. package/dist/cjs/core/url/join.js +0 -1
  92. package/dist/cjs/serialization/resources/events/types/DomainVerifiedEvent.d.ts +14 -0
  93. package/dist/cjs/serialization/resources/events/types/DomainVerifiedEvent.js +46 -0
  94. package/dist/cjs/serialization/resources/{webhooks → events}/types/EventType.d.ts +2 -2
  95. package/dist/cjs/serialization/resources/{webhooks → events}/types/EventType.js +1 -0
  96. package/dist/cjs/serialization/resources/{webhooks → events}/types/EventTypes.d.ts +1 -1
  97. package/dist/cjs/serialization/resources/events/types/index.d.ts +3 -0
  98. package/dist/cjs/serialization/resources/events/types/index.js +3 -0
  99. package/dist/cjs/serialization/resources/webhooks/types/CreateWebhookRequest.d.ts +1 -1
  100. package/dist/cjs/serialization/resources/webhooks/types/CreateWebhookRequest.js +1 -1
  101. package/dist/cjs/serialization/resources/webhooks/types/Webhook.d.ts +1 -1
  102. package/dist/cjs/serialization/resources/webhooks/types/Webhook.js +1 -1
  103. package/dist/cjs/serialization/resources/webhooks/types/index.d.ts +0 -2
  104. package/dist/cjs/serialization/resources/webhooks/types/index.js +0 -2
  105. package/dist/cjs/serialization/resources/websockets/client/socket/WebsocketsSocketResponse.d.ts +3 -2
  106. package/dist/cjs/serialization/resources/websockets/client/socket/WebsocketsSocketResponse.js +2 -0
  107. package/dist/cjs/serialization/resources/websockets/types/Subscribe.d.ts +4 -1
  108. package/dist/cjs/serialization/resources/websockets/types/Subscribe.js +4 -1
  109. package/dist/cjs/serialization/resources/websockets/types/Subscribed.d.ts +4 -1
  110. package/dist/cjs/serialization/resources/websockets/types/Subscribed.js +4 -1
  111. package/dist/cjs/version.d.ts +1 -1
  112. package/dist/cjs/version.js +1 -1
  113. package/dist/esm/BaseClient.d.mts +14 -1
  114. package/dist/esm/BaseClient.mjs +24 -1
  115. package/dist/esm/Client.d.mts +30 -29
  116. package/dist/esm/Client.mjs +21 -29
  117. package/dist/esm/api/resources/apiKeys/client/Client.d.mts +12 -12
  118. package/dist/esm/api/resources/apiKeys/client/Client.mjs +28 -30
  119. package/dist/esm/api/resources/domains/client/Client.d.mts +19 -19
  120. package/dist/esm/api/resources/domains/client/Client.mjs +59 -52
  121. package/dist/esm/api/resources/drafts/client/Client.d.mts +10 -10
  122. package/dist/esm/api/resources/drafts/client/Client.mjs +22 -27
  123. package/dist/esm/api/resources/events/types/DomainVerifiedEvent.d.mts +7 -0
  124. package/dist/esm/api/resources/{webhooks → events}/types/EventType.d.mts +1 -0
  125. package/dist/esm/api/resources/{webhooks → events}/types/EventType.mjs +1 -0
  126. package/dist/esm/api/resources/events/types/EventTypes.d.mts +5 -0
  127. package/dist/esm/api/resources/events/types/EventTypes.mjs +2 -0
  128. package/dist/esm/api/resources/events/types/index.d.mts +3 -0
  129. package/dist/esm/api/resources/events/types/index.mjs +3 -0
  130. package/dist/esm/api/resources/inboxes/client/Client.d.mts +30 -30
  131. package/dist/esm/api/resources/inboxes/client/Client.mjs +58 -54
  132. package/dist/esm/api/resources/inboxes/resources/drafts/client/Client.d.mts +27 -27
  133. package/dist/esm/api/resources/inboxes/resources/drafts/client/Client.mjs +76 -69
  134. package/dist/esm/api/resources/inboxes/resources/messages/client/Client.d.mts +25 -25
  135. package/dist/esm/api/resources/inboxes/resources/messages/client/Client.mjs +82 -72
  136. package/dist/esm/api/resources/inboxes/resources/metrics/client/Client.d.mts +8 -8
  137. package/dist/esm/api/resources/inboxes/resources/metrics/client/Client.mjs +16 -24
  138. package/dist/esm/api/resources/inboxes/resources/threads/client/Client.d.mts +17 -17
  139. package/dist/esm/api/resources/inboxes/resources/threads/client/Client.mjs +50 -49
  140. package/dist/esm/api/resources/metrics/client/Client.d.mts +7 -7
  141. package/dist/esm/api/resources/metrics/client/Client.mjs +11 -19
  142. package/dist/esm/api/resources/pods/client/Client.d.mts +27 -27
  143. package/dist/esm/api/resources/pods/client/Client.mjs +47 -46
  144. package/dist/esm/api/resources/pods/resources/domains/client/Client.d.mts +15 -15
  145. package/dist/esm/api/resources/pods/resources/domains/client/Client.mjs +40 -42
  146. package/dist/esm/api/resources/pods/resources/drafts/client/Client.d.mts +12 -12
  147. package/dist/esm/api/resources/pods/resources/drafts/client/Client.mjs +29 -34
  148. package/dist/esm/api/resources/pods/resources/inboxes/client/Client.d.mts +19 -19
  149. package/dist/esm/api/resources/pods/resources/inboxes/client/Client.mjs +52 -51
  150. package/dist/esm/api/resources/pods/resources/threads/client/Client.d.mts +13 -13
  151. package/dist/esm/api/resources/pods/resources/threads/client/Client.mjs +38 -40
  152. package/dist/esm/api/resources/threads/client/Client.d.mts +11 -11
  153. package/dist/esm/api/resources/threads/client/Client.mjs +31 -33
  154. package/dist/esm/api/resources/webhooks/client/Client.d.mts +15 -15
  155. package/dist/esm/api/resources/webhooks/client/Client.mjs +39 -38
  156. package/dist/esm/api/resources/webhooks/types/CreateWebhookRequest.d.mts +1 -1
  157. package/dist/esm/api/resources/webhooks/types/Webhook.d.mts +1 -1
  158. package/dist/esm/api/resources/webhooks/types/index.d.mts +0 -2
  159. package/dist/esm/api/resources/webhooks/types/index.mjs +0 -2
  160. package/dist/esm/api/resources/websockets/client/Client.d.mts +6 -6
  161. package/dist/esm/api/resources/websockets/client/Client.mjs +7 -18
  162. package/dist/esm/api/resources/websockets/client/Socket.d.mts +1 -1
  163. package/dist/esm/api/resources/websockets/types/Subscribe.d.mts +5 -1
  164. package/dist/esm/api/resources/websockets/types/Subscribed.d.mts +5 -1
  165. package/dist/esm/auth/BearerAuthProvider.d.mts +14 -0
  166. package/dist/esm/auth/BearerAuthProvider.mjs +35 -0
  167. package/dist/esm/auth/index.d.mts +1 -0
  168. package/dist/esm/auth/index.mjs +1 -0
  169. package/dist/esm/core/auth/AuthProvider.d.mts +4 -1
  170. package/dist/esm/core/auth/BearerToken.d.mts +3 -1
  171. package/dist/esm/core/auth/BearerToken.mjs +7 -6
  172. package/dist/esm/core/auth/NoOpAuthProvider.d.mts +5 -0
  173. package/dist/esm/core/auth/NoOpAuthProvider.mjs +5 -0
  174. package/dist/esm/core/auth/index.d.mts +1 -0
  175. package/dist/esm/core/auth/index.mjs +1 -0
  176. package/dist/esm/core/exports.d.mts +1 -0
  177. package/dist/esm/core/exports.mjs +1 -0
  178. package/dist/esm/core/fetcher/Fetcher.d.mts +4 -1
  179. package/dist/esm/core/fetcher/Fetcher.mjs +202 -9
  180. package/dist/esm/core/fetcher/getRequestBody.d.mts +1 -1
  181. package/dist/esm/core/fetcher/getRequestBody.mjs +4 -0
  182. package/dist/esm/core/fetcher/makeRequest.d.mts +1 -1
  183. package/dist/esm/core/fetcher/makeRequest.mjs +0 -2
  184. package/dist/esm/core/fetcher/requestWithRetries.mjs +0 -9
  185. package/dist/esm/core/fetcher/signals.d.mts +0 -6
  186. package/dist/esm/core/fetcher/signals.mjs +0 -12
  187. package/dist/esm/core/headers.mjs +6 -4
  188. package/dist/esm/core/index.d.mts +1 -0
  189. package/dist/esm/core/index.mjs +1 -0
  190. package/dist/esm/core/logging/exports.d.mts +18 -0
  191. package/dist/esm/core/logging/exports.mjs +9 -0
  192. package/dist/esm/core/logging/index.d.mts +1 -0
  193. package/dist/esm/core/logging/index.mjs +1 -0
  194. package/dist/esm/core/logging/logger.d.mts +126 -0
  195. package/dist/esm/core/logging/logger.mjs +138 -0
  196. package/dist/esm/core/schemas/Schema.d.mts +1 -0
  197. package/dist/esm/core/schemas/Schema.mjs +1 -0
  198. package/dist/esm/core/schemas/builders/primitives/index.d.mts +1 -0
  199. package/dist/esm/core/schemas/builders/primitives/index.mjs +1 -0
  200. package/dist/esm/core/schemas/builders/primitives/never.d.mts +2 -0
  201. package/dist/esm/core/schemas/builders/primitives/never.mjs +11 -0
  202. package/dist/esm/core/url/join.mjs +0 -1
  203. package/dist/esm/serialization/resources/events/types/DomainVerifiedEvent.d.mts +14 -0
  204. package/dist/esm/serialization/resources/events/types/DomainVerifiedEvent.mjs +10 -0
  205. package/dist/esm/serialization/resources/{webhooks → events}/types/EventType.d.mts +2 -2
  206. package/dist/esm/serialization/resources/{webhooks → events}/types/EventType.mjs +1 -0
  207. package/dist/esm/serialization/resources/{webhooks → events}/types/EventTypes.d.mts +1 -1
  208. package/dist/esm/serialization/resources/events/types/index.d.mts +3 -0
  209. package/dist/esm/serialization/resources/events/types/index.mjs +3 -0
  210. package/dist/esm/serialization/resources/webhooks/types/CreateWebhookRequest.d.mts +1 -1
  211. package/dist/esm/serialization/resources/webhooks/types/CreateWebhookRequest.mjs +1 -1
  212. package/dist/esm/serialization/resources/webhooks/types/Webhook.d.mts +1 -1
  213. package/dist/esm/serialization/resources/webhooks/types/Webhook.mjs +1 -1
  214. package/dist/esm/serialization/resources/webhooks/types/index.d.mts +0 -2
  215. package/dist/esm/serialization/resources/webhooks/types/index.mjs +0 -2
  216. package/dist/esm/serialization/resources/websockets/client/socket/WebsocketsSocketResponse.d.mts +3 -2
  217. package/dist/esm/serialization/resources/websockets/client/socket/WebsocketsSocketResponse.mjs +2 -0
  218. package/dist/esm/serialization/resources/websockets/types/Subscribe.d.mts +4 -1
  219. package/dist/esm/serialization/resources/websockets/types/Subscribe.mjs +4 -1
  220. package/dist/esm/serialization/resources/websockets/types/Subscribed.d.mts +4 -1
  221. package/dist/esm/serialization/resources/websockets/types/Subscribed.mjs +4 -1
  222. package/dist/esm/version.d.mts +1 -1
  223. package/dist/esm/version.mjs +1 -1
  224. package/dist/llms-full.txt +620 -54
  225. package/dist/llms.txt +6 -1
  226. package/package.json +1 -1
  227. package/reference.md +170 -170
  228. package/dist/cjs/api/resources/webhooks/types/EventTypes.d.ts +0 -5
  229. package/dist/esm/api/resources/webhooks/types/EventTypes.d.mts +0 -5
  230. /package/dist/cjs/api/resources/{webhooks/types/EventTypes.js → events/types/DomainVerifiedEvent.js} +0 -0
  231. /package/dist/cjs/serialization/resources/{webhooks → events}/types/EventTypes.js +0 -0
  232. /package/dist/esm/api/resources/{webhooks/types/EventTypes.mjs → events/types/DomainVerifiedEvent.mjs} +0 -0
  233. /package/dist/esm/serialization/resources/{webhooks → events}/types/EventTypes.mjs +0 -0
@@ -171,7 +171,7 @@ This guide will walk you through installing the AgentMail SDK, authenticating wi
171
171
  <Step title="Create an API Key">
172
172
  Now that you're in the console, you'll need to create an API key to
173
173
  authenticate your requests. Navigate to the API Keys section in your console
174
- dashboard. ![API Key Creation Screenshot](file:f8c5320f-b15c-44e7-a569-670c5f1d2a88) Click
174
+ dashboard. ![API Key Creation Screenshot](file:2ed6166f-567f-4666-8c03-00684ce19aa3) Click
175
175
  "Create New API Key" and give it a descriptive name. Once created, copy the
176
176
  API key and store it securely. Create a `.env` file in your project's root
177
177
  directory and add your key to it. We recommend using environment variables to
@@ -312,7 +312,7 @@ Unlike traditional email providers that are designed for human scale, AgentMail
312
312
 
313
313
  As the diagram below illustrates, your `organization` is the top-level container that holds all your resources. You can provision many `Inboxes` within your `organization`, each with its own `Threads`, `Messages`, and `Attachments`, allowing you to manage a large fleet of agents seamlessly.
314
314
 
315
- <img src="file:ac426e5d-2c1a-40b1-bf52-5c97883187df" alt="AgentMail Organizational Hierarchy" />
315
+ <img src="file:5059430e-56d3-4f25-8e53-c039ee07eae3" alt="AgentMail Organizational Hierarchy" />
316
316
 
317
317
  <Steps>
318
318
  <Step title="Organization">
@@ -732,7 +732,7 @@ Here is an example of a well-structured and styled HTML header:
732
732
  </CodeBlocks>
733
733
 
734
734
  <Frame caption="Look how pretty this message looks!">
735
- <img src="file:3e435f8a-5583-4ddd-83a3-c3f87c5f3aac" alt="rendered css" />
735
+ <img src="file:c026b6cd-f41d-4bc0-9818-5058474f4b79" alt="rendered css" />
736
736
  </Frame>
737
737
 
738
738
  ## Receiving `Messages`
@@ -1507,6 +1507,256 @@ Pod: "Marketing-Agent"
1507
1507
  * Explore [Domains](/custom-domains) to set up custom email domains for your pods
1508
1508
 
1509
1509
 
1510
+ # Integrations
1511
+
1512
+ > Overview of AgentMail's integrations
1513
+
1514
+ ## Platforms
1515
+
1516
+ <CardGroup>
1517
+ <Card title="Replit" icon="fa-solid fa-box-open" href="replit" />
1518
+
1519
+ <Card title="Smithery" icon="fa-solid fa-box-open" href="smithery" />
1520
+ </CardGroup>
1521
+
1522
+ ## Frameworks
1523
+
1524
+ <CardGroup>
1525
+ <Card title="Mastra" icon="fa-solid fa-box-open" href="mastra" />
1526
+
1527
+ <Card title="CrewAI" icon="fa-solid fa-box-open" href="crewai" />
1528
+ </CardGroup>
1529
+
1530
+
1531
+ # Replit
1532
+
1533
+ > AgentMail's Replit integration
1534
+
1535
+ ## Getting started
1536
+
1537
+ Replit is a cloud-based app and agent builder with a built in IDE, AI assistant, and deployment infrastructure.
1538
+
1539
+ AgentMail is a "connector" integration on Replit, meaning your Replit apps and agents can use it directly.
1540
+
1541
+ ### Setup
1542
+
1543
+ Navigate to the Intregrations tab in the Replit builder. Find AgentMail and click Connect/Sign in. Then paste in your AgentMail API key from the AgentMail Console. That's it.
1544
+
1545
+ ## How it works
1546
+
1547
+ Replit uses Mastra, a TypeScript framework for building agents. Everytime you create a new app/agent Replit will generate a set of Mastra tools to interface with the AgentMail API, based on your use case and requirements.
1548
+
1549
+ Below is a collections of prebuilt tools that Replit can use out of the box to serve virtually any use case.
1550
+
1551
+ ### Tools
1552
+
1553
+ <CodeBlocks>
1554
+ ```typescript title="TypeScript"
1555
+ import { createTool } from '@mastra/core/tools'
1556
+ import { z } from 'zod'
1557
+
1558
+ import { AgentMailClient } from 'agentmail'
1559
+
1560
+ const ListItemsInput = z.object({
1561
+ limit: z.number().optional().describe('Max number of items to return'),
1562
+ pageToken: z.string().optional().describe('Pagination page token'),
1563
+ })
1564
+
1565
+ const InboxId = z.string().describe('ID of inbox')
1566
+
1567
+ const GetInboxInput = z.object({ inboxId: InboxId })
1568
+
1569
+ const CreateInboxInput = z.object({
1570
+ username: z.string().optional().describe('Username'),
1571
+ domain: z.string().optional().describe('Domain'),
1572
+ displayName: z.string().optional().describe('Display name'),
1573
+ })
1574
+
1575
+ const ListInboxItemsInput = ListItemsInput.extend({
1576
+ inboxId: InboxId,
1577
+ labels: z.array(z.string()).optional().describe('Filter items with labels'),
1578
+ before: z.coerce.date().optional().describe('Filter items before datetime'),
1579
+ after: z.coerce.date().optional().describe('Filter items after datetime'),
1580
+ })
1581
+
1582
+ const GetThreadInput = GetInboxInput.extend({
1583
+ threadId: z.string().describe('ID of thread'),
1584
+ })
1585
+
1586
+ const MessageId = z.string().describe('ID of message')
1587
+
1588
+ const BaseMessageInput = z.object({
1589
+ inboxId: InboxId,
1590
+ text: z.string().optional().describe('Plain text body'),
1591
+ html: z.string().optional().describe('HTML body'),
1592
+ labels: z.array(z.string()).optional().describe('Labels'),
1593
+ })
1594
+
1595
+ const SendMessageInput = BaseMessageInput.extend({
1596
+ to: z.union([z.string(), z.array(z.string())]).describe('To recipients'),
1597
+ cc: z
1598
+ .union([z.string(), z.array(z.string())])
1599
+ .optional()
1600
+ .describe('CC recipients'),
1601
+ bcc: z
1602
+ .union([z.string(), z.array(z.string())])
1603
+ .optional()
1604
+ .describe('BCC recipients'),
1605
+ })
1606
+
1607
+ const ReplyToMessageInput = BaseMessageInput.extend({ messageId: MessageId })
1608
+
1609
+ const UpdateMessageInput = z.object({
1610
+ inboxId: InboxId,
1611
+ messageId: MessageId,
1612
+ addLabels: z.array(z.string()).optional().describe('Labels to add'),
1613
+ removeLabels: z.array(z.string()).optional().describe('Labels to remove'),
1614
+ })
1615
+
1616
+ const listInboxesTool = createTool({
1617
+ id: 'list-inboxes',
1618
+ description: 'List inboxes',
1619
+ inputSchema: ListItemsInput,
1620
+ execute: ({ context }) => {
1621
+ const client = new AgentMailClient()
1622
+ return client.inboxes.list(context)
1623
+ },
1624
+ })
1625
+
1626
+ const createInboxTool = createTool({
1627
+ id: 'create-inbox',
1628
+ description: 'Create inbox',
1629
+ inputSchema: CreateInboxInput,
1630
+ execute: ({ context }) => {
1631
+ const client = new AgentMailClient()
1632
+ return client.inboxes.create(context)
1633
+ },
1634
+ })
1635
+
1636
+ const deleteInboxTool = createTool({
1637
+ id: 'delete-inbox',
1638
+ description: 'Delete inbox',
1639
+ inputSchema: GetInboxInput,
1640
+ execute: ({ context }) => {
1641
+ const client = new AgentMailClient()
1642
+ return client.inboxes.delete(context.inboxId)
1643
+ },
1644
+ })
1645
+
1646
+ const listThreadsTool = createTool({
1647
+ id: 'list-threads',
1648
+ description: 'List threads',
1649
+ inputSchema: ListInboxItemsInput,
1650
+ execute: ({ context }) => {
1651
+ const client = new AgentMailClient()
1652
+ return client.inboxes.threads.list(context.inboxId, context)
1653
+ },
1654
+ })
1655
+
1656
+ const getThreadTool = createTool({
1657
+ id: 'get-thread',
1658
+ description: 'Get thread and its messages',
1659
+ inputSchema: GetThreadInput,
1660
+ execute: ({ context }) => {
1661
+ const client = new AgentMailClient()
1662
+ return client.inboxes.threads.get(context.inboxId, context.threadId)
1663
+ },
1664
+ })
1665
+
1666
+ const sendMessageTool = createTool({
1667
+ id: 'send-message',
1668
+ description: 'Send message',
1669
+ inputSchema: SendMessageInput,
1670
+ execute: ({ context }) => {
1671
+ const client = new AgentMailClient()
1672
+ return client.inboxes.messages.send(context.inboxId, context)
1673
+ },
1674
+ })
1675
+
1676
+ const replyToMessageTool = createTool({
1677
+ id: 'reply-to-message',
1678
+ description: 'Reply to message',
1679
+ inputSchema: ReplyToMessageInput,
1680
+ execute: ({ context }) => {
1681
+ const client = new AgentMailClient()
1682
+ return client.inboxes.messages.reply(context.inboxId, context.messageId, context)
1683
+ },
1684
+ })
1685
+
1686
+ const updateMessageTool = createTool({
1687
+ id: 'update-message',
1688
+ description: 'Update message',
1689
+ inputSchema: UpdateMessageInput,
1690
+ execute: ({ context }) => {
1691
+ const client = new AgentMailClient()
1692
+ return client.inboxes.messages.update(context.inboxId, context.messageId, context)
1693
+ },
1694
+ })
1695
+
1696
+ export const tools = {
1697
+ listInboxesTool,
1698
+ createInboxTool,
1699
+ deleteInboxTool,
1700
+ listThreadsTool,
1701
+ getThreadTool,
1702
+ sendMessageTool,
1703
+ replyToMessageTool,
1704
+ updateMessageTool,
1705
+ }
1706
+ ```
1707
+ </CodeBlocks>
1708
+
1709
+ ## About AgentMail
1710
+
1711
+ AgentMail is the email inbox API for AI agents. It gives agents their own email inboxes, like Gmail does for humans. Unlike other email APIs, AgentMail is for both sending and receiving, supporting two-way email conversations.
1712
+
1713
+ Email is critical to identity and communication on the internet. Much of the context that people use for their work exists within email. AgentMail enables AI agents to meet people where they work and use the internet like humans do.
1714
+
1715
+ ### Features
1716
+
1717
+ 1. **Programmatic inboxes:** Create, manage, and delete inboxes via API
1718
+ 2. **Threads and replies:** Facilitate 2-way emals conversations with persistant and relevant context
1719
+ 3. **Attachments:** Send, receive, and download attachments so agents can work with documents
1720
+ 4. **Realtime events:** Build event-driven agents and systems with Webhooks and Websockets
1721
+ 5. **Custom domains:** Whitelabel your or your customers' inboxes to automate client-facing work
1722
+ 6. **Language/Framework SDKs:** Use your prefered language and framework
1723
+
1724
+ ### Use cases
1725
+
1726
+ 1. **Process inbound:** Receive, triage, and process inbound emails
1727
+ 2. **Automate outbound:** Draft, schedule, and send outbound emails
1728
+ 3. **Join conversations:** Address an agent directly or CC it in an existing email thread
1729
+ 4. **Identify and authenticate:** Agents can sign up, receive 2FA code, and authenticate with any application
1730
+
1731
+ ### Verticals
1732
+
1733
+ 1. **Operations:** Automate internal workflows, vendor communications, and cross-team coordination
1734
+ 2. **Support:** Handle customer inquiries, ticket management, and automated responses at scale
1735
+ 3. **Procurement:** Streamline vendor onboarding, RFP processes, and purchase order management
1736
+ 4. **Sales:** Automate lead qualification, follow-ups, and customer outreach campaigns
1737
+ 5. **Recruiting:** Automate candidate outreach, interview scheduling, and applicant communication
1738
+
1739
+ These are just a few select verticals, but we have seen AgentMail be effective in automating any email task across every function. If a human does it with email, it can be automated with AgentMail.
1740
+
1741
+
1742
+ # Smithery
1743
+
1744
+ > AgentMail's Smithery integration
1745
+
1746
+
1747
+
1748
+ # Mastra
1749
+
1750
+ > AgentMail's Mastra integration
1751
+
1752
+
1753
+
1754
+ # CrewAI
1755
+
1756
+ > AgentMail's CrewAI integration
1757
+
1758
+
1759
+
1510
1760
  # Guide: Sending & Receiving Email
1511
1761
 
1512
1762
  > A step-by-step guide to the practical workflow of sending initial emails and handling replies to have a full conversation.
@@ -1759,7 +2009,7 @@ Configuring your domain is a three-step process: add the domain via API, copy th
1759
2009
  After creating your domain in the AgentMail Console, click the "Download BIND Zone File" button to get the complete zone file.
1760
2010
 
1761
2011
  <Frame caption="Downloading BIND zone file from AgentMail Console">
1762
- <img src="file:fdcf475d-78f0-49a1-aa38-5bd877368f56" alt="Download BIND Zone File from Console" />
2012
+ <img src="file:abd861e7-e3c4-4253-843d-5e1877e84487" alt="Download BIND Zone File from Console" />
1763
2013
  </Frame>
1764
2014
 
1765
2015
  <Tabs>
@@ -1770,13 +2020,13 @@ Configuring your domain is a three-step process: add the domain via API, copy th
1770
2020
  2. Click **"Import zone file"** in the top right corner
1771
2021
 
1772
2022
  <Frame caption="Importing BIND zone file in AWS Route 53">
1773
- <img src="file:01476e8c-76ae-4414-b008-0547631c47f1" alt="AWS Route 53 BIND Import" />
2023
+ <img src="file:1381b9e1-8945-463b-8211-f3cb7d8ff390" alt="AWS Route 53 BIND Import" />
1774
2024
  </Frame>
1775
2025
 
1776
2026
  3. Paste the CONTENTS of downloaded BIND zone file
1777
2027
 
1778
2028
  <Frame caption="Open the file with text editor and paste the contents. It should look similar to what we have in this image.">
1779
- <img src="file:86767929-19ef-4ded-b528-ed42ede218fe" alt="AWS Route 53 BIND Import" />
2029
+ <img src="file:a1ec7b55-2283-4e6c-af6f-5bfca7ad00d6" alt="AWS Route 53 BIND Import" />
1780
2030
  </Frame>
1781
2031
 
1782
2032
  4. Review the records and click **"Import"**
@@ -1789,13 +2039,13 @@ Configuring your domain is a three-step process: add the domain via API, copy th
1789
2039
  2. Navigate to **DNS > Records**
1790
2040
 
1791
2041
  <Frame caption="This is what the page looks like">
1792
- <img src="file:1886368e-04ae-4bfe-a117-83246de25118" alt="Cloudflare BIND Import" />
2042
+ <img src="file:ba36964f-3f3e-439c-80f0-c71884757f68" alt="Cloudflare BIND Import" />
1793
2043
  </Frame>
1794
2044
 
1795
2045
  3. Click **"Import and Export"**
1796
2046
 
1797
2047
  <Frame caption="You should be able to just drop the file in">
1798
- <img src="file:b966738e-c0e6-425d-86d1-0ce95b9a326d" alt="Cloudflare BIND Import" />
2048
+ <img src="file:990c0430-f086-4365-813f-a3b6463d5e07" alt="Cloudflare BIND Import" />
1799
2049
  </Frame>
1800
2050
 
1801
2051
  4. Upload the downloaded BIND zone file as is
@@ -1808,13 +2058,13 @@ Configuring your domain is a three-step process: add the domain via API, copy th
1808
2058
  2. Navigate to the **DNS** subtab of the domain you want to send from
1809
2059
 
1810
2060
  <Frame caption="Click on this button!">
1811
- <img src="file:57da42f8-9541-4e8a-9b20-7c81ca585355" alt="Porkbun DNS Management" />
2061
+ <img src="file:86a3ef0e-6f6e-4eb3-a721-52c1730f0b49" alt="Porkbun DNS Management" />
1812
2062
  </Frame>
1813
2063
 
1814
2064
  3. Scroll down to the quick upload section
1815
2065
 
1816
2066
  <Frame caption="Upload your BIND zone file here">
1817
- <img src="file:2824bdf3-c4c7-4dfe-b67a-1373865ecf22" alt="Porkbun Zone File Import" />
2067
+ <img src="file:295db837-0235-4696-b96d-5318f68b49f5" alt="Porkbun Zone File Import" />
1818
2068
  </Frame>
1819
2069
 
1820
2070
  4. Upload the downloaded BIND zone file as is
@@ -1898,7 +2148,7 @@ Configuring your domain is a three-step process: add the domain via API, copy th
1898
2148
  * **Value:** Can directly copy paste the `value` from the API response (e.g., `{random_letters_numbers}.dkim.amazonses.com`).
1899
2149
 
1900
2150
  <Frame caption="Example of adding a CNAME record in Route 53. Notice that AWS already appends the root domain (agentmail.cc) to the end of the name value!">
1901
- <img src="file:62bea4af-5b5e-4f88-86ce-b569f26f8a74" alt="AWS Route 53 Record Configuration" />
2151
+ <img src="file:e57473d0-08bd-4ddc-ba64-0ff6c2e49ccc" alt="AWS Route 53 Record Configuration" />
1902
2152
  </Frame>
1903
2153
 
1904
2154
  * **TXT (DMARC/SPF):**
@@ -2434,13 +2684,13 @@ Ngrok creates a secure tunnel from a public URL to your local development server
2434
2684
 
2435
2685
  Visit [ngrok.com](https://ngrok.com/) and click "Sign up" to create a free account.
2436
2686
 
2437
- <img src="file:845efbdc-7a3b-44be-b7b6-d85c15baabfd" alt="Ngrok homepage" />
2687
+ <img src="file:b2e9355e-36a9-46dc-bbe0-8192253fc301" alt="Ngrok homepage" />
2438
2688
 
2439
2689
  ### 1.2 Choose your platform and install
2440
2690
 
2441
2691
  After logging in, ngrok will guide you through the setup process. Select your operating system and follow the installation instructions.
2442
2692
 
2443
- <img src="file:6bf31cc4-f08c-4b45-9abd-b93966def3ab" alt="Ngrok setup instructions" />
2693
+ <img src="file:3905deb7-315f-48fe-adee-1f4e4a115bcd" alt="Ngrok setup instructions" />
2444
2694
 
2445
2695
  For macOS, you can install ngrok via Homebrew:
2446
2696
 
@@ -2486,7 +2736,7 @@ ngrok http 3000
2486
2736
 
2487
2737
  You should see output similar to this:
2488
2738
 
2489
- <img src="file:190c3920-7025-4399-8718-b2b9a4895382" alt="Ngrok terminal output" />
2739
+ <img src="file:96fe265e-bc8e-40fc-8bb1-a53acadb74ca" alt="Ngrok terminal output" />
2490
2740
 
2491
2741
  Copy the **Forwarding URL** (e.g., `https://your-subdomain.ngrok-free.app`). This is the public URL that AgentMail will use to send webhooks.
2492
2742
 
@@ -2583,7 +2833,7 @@ python webhook_receiver.py
2583
2833
 
2584
2834
  Open your browser and visit `http://127.0.0.1:3000` to see the status page confirming your webhook receiver is running:
2585
2835
 
2586
- <img src="file:933ee151-1684-4e56-b2a9-4dd7e81f9f5d" alt="Webhook receiver status page" />
2836
+ <img src="file:6e602847-1e91-47d2-8aa0-c4d8ca72fed4" alt="Webhook receiver status page" />
2587
2837
 
2588
2838
  ## Testing Your Setup
2589
2839
 
@@ -2705,7 +2955,7 @@ How you send your emails is just as important as what you send. If you're sendin
2705
2955
  more natural to email providers. AgentMail's ability to create inboxes at
2706
2956
  scale makes this strategy easy to implement.
2707
2957
 
2708
- <img src="file:256ac0e7-42b8-4fdd-a3f1-6136fbec2725" alt="Diagram comparing one inbox sending 1000 emails vs. five inboxes sending 200 each." />
2958
+ <img src="file:d79176d8-08fb-4eba-b880-66bfcf164f59" alt="Diagram comparing one inbox sending 1000 emails vs. five inboxes sending 200 each." />
2709
2959
  </Step>
2710
2960
 
2711
2961
  <Step title="Protect Your Reputation with Multiple Domains">
@@ -4724,7 +4974,7 @@ Done
4724
4974
 
4725
4975
  Go to your AgentMail inbox and filter by labels to organize your emails:
4726
4976
 
4727
- <img src="file:0cf3d744-bb78-46de-acc7-e3de13a39cf9" alt="Test image" />
4977
+ <img src="file:19536629-9971-42f0-b8c1-ffa1f9849fd5" alt="Test image" />
4728
4978
 
4729
4979
  **Filter by sentiment:**
4730
4980
 
@@ -5636,6 +5886,8 @@ components:
5636
5886
  type: string
5637
5887
  type_:Count:
5638
5888
  type: integer
5889
+ type_pods:PodId:
5890
+ type: string
5639
5891
  type_inboxes:InboxId:
5640
5892
  type: string
5641
5893
  type_inboxes:DisplayName:
@@ -5645,6 +5897,8 @@ components:
5645
5897
  type_inboxes:Inbox:
5646
5898
  type: object
5647
5899
  properties:
5900
+ pod_id:
5901
+ $ref: '#/components/schemas/type_pods:PodId'
5648
5902
  inbox_id:
5649
5903
  $ref: '#/components/schemas/type_inboxes:InboxId'
5650
5904
  display_name:
@@ -5658,6 +5912,7 @@ components:
5658
5912
  type: string
5659
5913
  format: date-time
5660
5914
  required:
5915
+ - pod_id
5661
5916
  - inbox_id
5662
5917
  - updated_at
5663
5918
  - created_at
@@ -5851,6 +6106,8 @@ components:
5851
6106
  schemas:
5852
6107
  type_inboxes:InboxId:
5853
6108
  type: string
6109
+ type_pods:PodId:
6110
+ type: string
5854
6111
  type_inboxes:DisplayName:
5855
6112
  type: string
5856
6113
  type_inboxes:ClientId:
@@ -5858,6 +6115,8 @@ components:
5858
6115
  type_inboxes:Inbox:
5859
6116
  type: object
5860
6117
  properties:
6118
+ pod_id:
6119
+ $ref: '#/components/schemas/type_pods:PodId'
5861
6120
  inbox_id:
5862
6121
  $ref: '#/components/schemas/type_inboxes:InboxId'
5863
6122
  display_name:
@@ -5871,6 +6130,7 @@ components:
5871
6130
  type: string
5872
6131
  format: date-time
5873
6132
  required:
6133
+ - pod_id
5874
6134
  - inbox_id
5875
6135
  - updated_at
5876
6136
  - created_at
@@ -6064,11 +6324,15 @@ components:
6064
6324
  $ref: '#/components/schemas/type_inboxes:DisplayName'
6065
6325
  client_id:
6066
6326
  $ref: '#/components/schemas/type_inboxes:ClientId'
6327
+ type_pods:PodId:
6328
+ type: string
6067
6329
  type_inboxes:InboxId:
6068
6330
  type: string
6069
6331
  type_inboxes:Inbox:
6070
6332
  type: object
6071
6333
  properties:
6334
+ pod_id:
6335
+ $ref: '#/components/schemas/type_pods:PodId'
6072
6336
  inbox_id:
6073
6337
  $ref: '#/components/schemas/type_inboxes:InboxId'
6074
6338
  display_name:
@@ -6082,6 +6346,7 @@ components:
6082
6346
  type: string
6083
6347
  format: date-time
6084
6348
  required:
6349
+ - pod_id
6085
6350
  - inbox_id
6086
6351
  - updated_at
6087
6352
  - created_at
@@ -6293,11 +6558,15 @@ components:
6293
6558
  $ref: '#/components/schemas/type_inboxes:DisplayName'
6294
6559
  required:
6295
6560
  - display_name
6561
+ type_pods:PodId:
6562
+ type: string
6296
6563
  type_inboxes:ClientId:
6297
6564
  type: string
6298
6565
  type_inboxes:Inbox:
6299
6566
  type: object
6300
6567
  properties:
6568
+ pod_id:
6569
+ $ref: '#/components/schemas/type_pods:PodId'
6301
6570
  inbox_id:
6302
6571
  $ref: '#/components/schemas/type_inboxes:InboxId'
6303
6572
  display_name:
@@ -6311,6 +6580,7 @@ components:
6311
6580
  type: string
6312
6581
  format: date-time
6313
6582
  required:
6583
+ - pod_id
6314
6584
  - inbox_id
6315
6585
  - updated_at
6316
6586
  - created_at
@@ -8951,6 +9221,10 @@ components:
8951
9221
  type: array
8952
9222
  items:
8953
9223
  $ref: '#/components/schemas/type_attachments:SendAttachment'
9224
+ type_messages:SendMessageHeaders:
9225
+ type: object
9226
+ additionalProperties:
9227
+ type: string
8954
9228
  type_messages:SendMessageRequest:
8955
9229
  type: object
8956
9230
  properties:
@@ -8972,6 +9246,8 @@ components:
8972
9246
  $ref: '#/components/schemas/type_messages:MessageHtml'
8973
9247
  attachments:
8974
9248
  $ref: '#/components/schemas/type_messages:SendMessageAttachments'
9249
+ headers:
9250
+ $ref: '#/components/schemas/type_messages:SendMessageHeaders'
8975
9251
  type_messages:MessageId:
8976
9252
  type: string
8977
9253
  type_threads:ThreadId:
@@ -9244,6 +9520,10 @@ components:
9244
9520
  type: array
9245
9521
  items:
9246
9522
  $ref: '#/components/schemas/type_attachments:SendAttachment'
9523
+ type_messages:SendMessageHeaders:
9524
+ type: object
9525
+ additionalProperties:
9526
+ type: string
9247
9527
  type_messages:ReplyToMessageRequest:
9248
9528
  type: object
9249
9529
  properties:
@@ -9263,6 +9543,8 @@ components:
9263
9543
  $ref: '#/components/schemas/type_messages:MessageHtml'
9264
9544
  attachments:
9265
9545
  $ref: '#/components/schemas/type_messages:SendMessageAttachments'
9546
+ headers:
9547
+ $ref: '#/components/schemas/type_messages:SendMessageHeaders'
9266
9548
  type_threads:ThreadId:
9267
9549
  type: string
9268
9550
  type_messages:SendMessageResponse:
@@ -13476,6 +13758,8 @@ components:
13476
13758
  type: string
13477
13759
  type_:Count:
13478
13760
  type: integer
13761
+ type_pods:PodId:
13762
+ type: string
13479
13763
  type_domains:DomainId:
13480
13764
  type: string
13481
13765
  type_domains:FeedbackEnabled:
@@ -13485,6 +13769,8 @@ components:
13485
13769
  type_domains:DomainItem:
13486
13770
  type: object
13487
13771
  properties:
13772
+ pod_id:
13773
+ $ref: '#/components/schemas/type_pods:PodId'
13488
13774
  domain_id:
13489
13775
  $ref: '#/components/schemas/type_domains:DomainId'
13490
13776
  feedback_enabled:
@@ -13692,6 +13978,8 @@ components:
13692
13978
  schemas:
13693
13979
  type_domains:DomainId:
13694
13980
  type: string
13981
+ type_pods:PodId:
13982
+ type: string
13695
13983
  type_domains:VerificationStatus:
13696
13984
  type: string
13697
13985
  enum:
@@ -13734,6 +14022,8 @@ components:
13734
14022
  type_domains:Domain:
13735
14023
  type: object
13736
14024
  properties:
14025
+ pod_id:
14026
+ $ref: '#/components/schemas/type_pods:PodId'
13737
14027
  domain_id:
13738
14028
  $ref: '#/components/schemas/type_domains:DomainId'
13739
14029
  status:
@@ -14125,6 +14415,8 @@ components:
14125
14415
  required:
14126
14416
  - domain
14127
14417
  - feedback_enabled
14418
+ type_pods:PodId:
14419
+ type: string
14128
14420
  type_domains:DomainId:
14129
14421
  type: string
14130
14422
  type_domains:VerificationStatus:
@@ -14167,6 +14459,8 @@ components:
14167
14459
  type_domains:Domain:
14168
14460
  type: object
14169
14461
  properties:
14462
+ pod_id:
14463
+ $ref: '#/components/schemas/type_pods:PodId'
14170
14464
  domain_id:
14171
14465
  $ref: '#/components/schemas/type_domains:DomainId'
14172
14466
  status:
@@ -14751,7 +15045,7 @@ components:
14751
15045
  type: string
14752
15046
  type_webhooks:Url:
14753
15047
  type: string
14754
- type_webhooks:EventType:
15048
+ type_events:EventType:
14755
15049
  type: string
14756
15050
  enum:
14757
15051
  - value: message.received
@@ -14760,10 +15054,11 @@ components:
14760
15054
  - value: message.bounced
14761
15055
  - value: message.complained
14762
15056
  - value: message.rejected
14763
- type_webhooks:EventTypes:
15057
+ - value: domain.verified
15058
+ type_events:EventTypes:
14764
15059
  type: array
14765
15060
  items:
14766
- $ref: '#/components/schemas/type_webhooks:EventType'
15061
+ $ref: '#/components/schemas/type_events:EventType'
14767
15062
  type_webhooks:InboxIds:
14768
15063
  type: array
14769
15064
  items:
@@ -14778,7 +15073,7 @@ components:
14778
15073
  url:
14779
15074
  $ref: '#/components/schemas/type_webhooks:Url'
14780
15075
  event_types:
14781
- $ref: '#/components/schemas/type_webhooks:EventTypes'
15076
+ $ref: '#/components/schemas/type_events:EventTypes'
14782
15077
  inbox_ids:
14783
15078
  $ref: '#/components/schemas/type_webhooks:InboxIds'
14784
15079
  secret:
@@ -14992,7 +15287,7 @@ components:
14992
15287
  type: string
14993
15288
  type_webhooks:Url:
14994
15289
  type: string
14995
- type_webhooks:EventType:
15290
+ type_events:EventType:
14996
15291
  type: string
14997
15292
  enum:
14998
15293
  - value: message.received
@@ -15001,10 +15296,11 @@ components:
15001
15296
  - value: message.bounced
15002
15297
  - value: message.complained
15003
15298
  - value: message.rejected
15004
- type_webhooks:EventTypes:
15299
+ - value: domain.verified
15300
+ type_events:EventTypes:
15005
15301
  type: array
15006
15302
  items:
15007
- $ref: '#/components/schemas/type_webhooks:EventType'
15303
+ $ref: '#/components/schemas/type_events:EventType'
15008
15304
  type_webhooks:InboxIds:
15009
15305
  type: array
15010
15306
  items:
@@ -15019,7 +15315,7 @@ components:
15019
15315
  url:
15020
15316
  $ref: '#/components/schemas/type_webhooks:Url'
15021
15317
  event_types:
15022
- $ref: '#/components/schemas/type_webhooks:EventTypes'
15318
+ $ref: '#/components/schemas/type_events:EventTypes'
15023
15319
  inbox_ids:
15024
15320
  $ref: '#/components/schemas/type_webhooks:InboxIds'
15025
15321
  secret:
@@ -15218,7 +15514,7 @@ components:
15218
15514
  schemas:
15219
15515
  type_webhooks:Url:
15220
15516
  type: string
15221
- type_webhooks:EventType:
15517
+ type_events:EventType:
15222
15518
  type: string
15223
15519
  enum:
15224
15520
  - value: message.received
@@ -15227,10 +15523,11 @@ components:
15227
15523
  - value: message.bounced
15228
15524
  - value: message.complained
15229
15525
  - value: message.rejected
15230
- type_webhooks:EventTypes:
15526
+ - value: domain.verified
15527
+ type_events:EventTypes:
15231
15528
  type: array
15232
15529
  items:
15233
- $ref: '#/components/schemas/type_webhooks:EventType'
15530
+ $ref: '#/components/schemas/type_events:EventType'
15234
15531
  type_webhooks:InboxIds:
15235
15532
  type: array
15236
15533
  items:
@@ -15243,7 +15540,7 @@ components:
15243
15540
  url:
15244
15541
  $ref: '#/components/schemas/type_webhooks:Url'
15245
15542
  event_types:
15246
- $ref: '#/components/schemas/type_webhooks:EventTypes'
15543
+ $ref: '#/components/schemas/type_events:EventTypes'
15247
15544
  inbox_ids:
15248
15545
  $ref: '#/components/schemas/type_webhooks:InboxIds'
15249
15546
  client_id:
@@ -15261,7 +15558,7 @@ components:
15261
15558
  url:
15262
15559
  $ref: '#/components/schemas/type_webhooks:Url'
15263
15560
  event_types:
15264
- $ref: '#/components/schemas/type_webhooks:EventTypes'
15561
+ $ref: '#/components/schemas/type_events:EventTypes'
15265
15562
  inbox_ids:
15266
15563
  $ref: '#/components/schemas/type_webhooks:InboxIds'
15267
15564
  secret:
@@ -16407,6 +16704,159 @@ components:
16407
16704
 
16408
16705
  ```
16409
16706
 
16707
+ # Domain Verified
16708
+
16709
+ POST
16710
+
16711
+ Reference: https://docs.agentmail.to/api-reference/webhooks/events/domain-verified
16712
+
16713
+ ## OpenAPI 3.1 Webhook Specification
16714
+
16715
+ ```yaml
16716
+ openapi: 3.1.1
16717
+ info:
16718
+ title: Domain Verified
16719
+ version: subpackage_webhooks/events.domainVerified
16720
+ webhooks:
16721
+ domain-verified:
16722
+ post:
16723
+ operationId: domain-verified
16724
+ summary: Domain Verified
16725
+ tags:
16726
+ - subpackage_webhooks,subpackage_webhooks/events
16727
+ parameters:
16728
+ - name: svix-id
16729
+ in: header
16730
+ required: true
16731
+ schema:
16732
+ $ref: '#/components/schemas/type_webhooks/events:SvixId'
16733
+ - name: svix-signature
16734
+ in: header
16735
+ required: true
16736
+ schema:
16737
+ $ref: '#/components/schemas/type_webhooks/events:SvixSignature'
16738
+ - name: svix-timestamp
16739
+ in: header
16740
+ required: true
16741
+ schema:
16742
+ $ref: '#/components/schemas/type_webhooks/events:SvixTimestamp'
16743
+ responses:
16744
+ '200':
16745
+ description: Webhook received successfully
16746
+ requestBody:
16747
+ content:
16748
+ application/json:
16749
+ schema:
16750
+ $ref: '#/components/schemas/type_events:DomainVerifiedEvent'
16751
+ components:
16752
+ schemas:
16753
+ type_webhooks/events:SvixId:
16754
+ type: string
16755
+ type_webhooks/events:SvixSignature:
16756
+ type: string
16757
+ type_webhooks/events:SvixTimestamp:
16758
+ type: string
16759
+ format: date-time
16760
+ type_events:EventId:
16761
+ type: string
16762
+ type_pods:PodId:
16763
+ type: string
16764
+ type_domains:DomainId:
16765
+ type: string
16766
+ type_domains:VerificationStatus:
16767
+ type: string
16768
+ enum:
16769
+ - value: PENDING
16770
+ - value: VERIFYING
16771
+ - value: READY
16772
+ type_domains:FeedbackEnabled:
16773
+ type: boolean
16774
+ type_domains:RecordType:
16775
+ type: string
16776
+ enum:
16777
+ - value: TXT
16778
+ - value: CNAME
16779
+ - value: MX
16780
+ type_domains:RecordStatus:
16781
+ type: string
16782
+ enum:
16783
+ - value: MISSING
16784
+ - value: VERIFIED
16785
+ type_domains:VerificationRecord:
16786
+ type: object
16787
+ properties:
16788
+ type:
16789
+ $ref: '#/components/schemas/type_domains:RecordType'
16790
+ name:
16791
+ type: string
16792
+ value:
16793
+ type: string
16794
+ status:
16795
+ $ref: '#/components/schemas/type_domains:RecordStatus'
16796
+ priority:
16797
+ type: integer
16798
+ required:
16799
+ - type
16800
+ - name
16801
+ - value
16802
+ - status
16803
+ type_domains:ClientId:
16804
+ type: string
16805
+ type_domains:Domain:
16806
+ type: object
16807
+ properties:
16808
+ pod_id:
16809
+ $ref: '#/components/schemas/type_pods:PodId'
16810
+ domain_id:
16811
+ $ref: '#/components/schemas/type_domains:DomainId'
16812
+ status:
16813
+ $ref: '#/components/schemas/type_domains:VerificationStatus'
16814
+ feedback_enabled:
16815
+ $ref: '#/components/schemas/type_domains:FeedbackEnabled'
16816
+ records:
16817
+ type: array
16818
+ items:
16819
+ $ref: '#/components/schemas/type_domains:VerificationRecord'
16820
+ client_id:
16821
+ $ref: '#/components/schemas/type_domains:ClientId'
16822
+ updated_at:
16823
+ type: string
16824
+ format: date-time
16825
+ created_at:
16826
+ type: string
16827
+ format: date-time
16828
+ required:
16829
+ - domain_id
16830
+ - status
16831
+ - feedback_enabled
16832
+ - records
16833
+ - updated_at
16834
+ - created_at
16835
+ type_events:DomainVerifiedEvent:
16836
+ type: object
16837
+ properties:
16838
+ type:
16839
+ type: string
16840
+ enum:
16841
+ - type: stringLiteral
16842
+ value: event
16843
+ event_type:
16844
+ type: string
16845
+ enum:
16846
+ - type: stringLiteral
16847
+ value: domain.verified
16848
+ event_id:
16849
+ $ref: '#/components/schemas/type_events:EventId'
16850
+ domain:
16851
+ $ref: '#/components/schemas/type_domains:Domain'
16852
+ required:
16853
+ - type
16854
+ - event_type
16855
+ - event_id
16856
+ - domain
16857
+
16858
+ ```
16859
+
16410
16860
  # Connect
16411
16861
 
16412
16862
  GET /v0
@@ -16448,6 +16898,8 @@ channels:
16448
16898
  #/components/messages/subpackage_websockets.websockets-server-5-message_complained
16449
16899
  - $ref: >-
16450
16900
  #/components/messages/subpackage_websockets.websockets-server-6-message_rejected
16901
+ - $ref: >-
16902
+ #/components/messages/subpackage_websockets.websockets-server-7-domain_verified
16451
16903
  subscribe:
16452
16904
  operationId: websockets-subscribe
16453
16905
  summary: Client message
@@ -16493,7 +16945,25 @@ components:
16493
16945
  name: message_rejected
16494
16946
  payload:
16495
16947
  $ref: '#/components/schemas/type_events:MessageRejectedEvent'
16948
+ subpackage_websockets.websockets-server-7-domain_verified:
16949
+ name: domain_verified
16950
+ payload:
16951
+ $ref: '#/components/schemas/type_events:DomainVerifiedEvent'
16496
16952
  schemas:
16953
+ type_events:EventType:
16954
+ type: string
16955
+ enum:
16956
+ - value: message.received
16957
+ - value: message.sent
16958
+ - value: message.delivered
16959
+ - value: message.bounced
16960
+ - value: message.complained
16961
+ - value: message.rejected
16962
+ - value: domain.verified
16963
+ type_events:EventTypes:
16964
+ type: array
16965
+ items:
16966
+ $ref: '#/components/schemas/type_events:EventType'
16497
16967
  type_websockets:Subscribed:
16498
16968
  type: object
16499
16969
  properties:
@@ -16502,13 +16972,18 @@ components:
16502
16972
  enum:
16503
16973
  - type: stringLiteral
16504
16974
  value: subscribed
16975
+ event_types:
16976
+ $ref: '#/components/schemas/type_events:EventTypes'
16505
16977
  inbox_ids:
16506
16978
  type: array
16507
16979
  items:
16508
16980
  type: string
16981
+ pod_ids:
16982
+ type: array
16983
+ items:
16984
+ type: string
16509
16985
  required:
16510
16986
  - type
16511
- - inbox_ids
16512
16987
  type_events:EventId:
16513
16988
  type: string
16514
16989
  type_inboxes:InboxId:
@@ -16907,6 +17382,101 @@ components:
16907
17382
  - event_type
16908
17383
  - event_id
16909
17384
  - reject
17385
+ type_pods:PodId:
17386
+ type: string
17387
+ type_domains:DomainId:
17388
+ type: string
17389
+ type_domains:VerificationStatus:
17390
+ type: string
17391
+ enum:
17392
+ - value: PENDING
17393
+ - value: VERIFYING
17394
+ - value: READY
17395
+ type_domains:FeedbackEnabled:
17396
+ type: boolean
17397
+ type_domains:RecordType:
17398
+ type: string
17399
+ enum:
17400
+ - value: TXT
17401
+ - value: CNAME
17402
+ - value: MX
17403
+ type_domains:RecordStatus:
17404
+ type: string
17405
+ enum:
17406
+ - value: MISSING
17407
+ - value: VERIFIED
17408
+ type_domains:VerificationRecord:
17409
+ type: object
17410
+ properties:
17411
+ type:
17412
+ $ref: '#/components/schemas/type_domains:RecordType'
17413
+ name:
17414
+ type: string
17415
+ value:
17416
+ type: string
17417
+ status:
17418
+ $ref: '#/components/schemas/type_domains:RecordStatus'
17419
+ priority:
17420
+ type: integer
17421
+ required:
17422
+ - type
17423
+ - name
17424
+ - value
17425
+ - status
17426
+ type_domains:ClientId:
17427
+ type: string
17428
+ type_domains:Domain:
17429
+ type: object
17430
+ properties:
17431
+ pod_id:
17432
+ $ref: '#/components/schemas/type_pods:PodId'
17433
+ domain_id:
17434
+ $ref: '#/components/schemas/type_domains:DomainId'
17435
+ status:
17436
+ $ref: '#/components/schemas/type_domains:VerificationStatus'
17437
+ feedback_enabled:
17438
+ $ref: '#/components/schemas/type_domains:FeedbackEnabled'
17439
+ records:
17440
+ type: array
17441
+ items:
17442
+ $ref: '#/components/schemas/type_domains:VerificationRecord'
17443
+ client_id:
17444
+ $ref: '#/components/schemas/type_domains:ClientId'
17445
+ updated_at:
17446
+ type: string
17447
+ format: date-time
17448
+ created_at:
17449
+ type: string
17450
+ format: date-time
17451
+ required:
17452
+ - domain_id
17453
+ - status
17454
+ - feedback_enabled
17455
+ - records
17456
+ - updated_at
17457
+ - created_at
17458
+ type_events:DomainVerifiedEvent:
17459
+ type: object
17460
+ properties:
17461
+ type:
17462
+ type: string
17463
+ enum:
17464
+ - type: stringLiteral
17465
+ value: event
17466
+ event_type:
17467
+ type: string
17468
+ enum:
17469
+ - type: stringLiteral
17470
+ value: domain.verified
17471
+ event_id:
17472
+ $ref: '#/components/schemas/type_events:EventId'
17473
+ domain:
17474
+ $ref: '#/components/schemas/type_domains:Domain'
17475
+ required:
17476
+ - type
17477
+ - event_type
17478
+ - event_id
17479
+ - domain
16910
17480
  type_websockets:Subscribe:
16911
17481
  type: object
16912
17482
  properties:
@@ -16915,13 +17485,18 @@ components:
16915
17485
  enum:
16916
17486
  - type: stringLiteral
16917
17487
  value: subscribe
17488
+ event_types:
17489
+ $ref: '#/components/schemas/type_events:EventTypes'
16918
17490
  inbox_ids:
16919
17491
  type: array
16920
17492
  items:
16921
17493
  type: string
17494
+ pod_ids:
17495
+ type: array
17496
+ items:
17497
+ type: string
16922
17498
  required:
16923
17499
  - type
16924
- - inbox_ids
16925
17500
 
16926
17501
  ```
16927
17502
 
@@ -18725,6 +19300,8 @@ components:
18725
19300
  type_inboxes:Inbox:
18726
19301
  type: object
18727
19302
  properties:
19303
+ pod_id:
19304
+ $ref: '#/components/schemas/type_pods:PodId'
18728
19305
  inbox_id:
18729
19306
  $ref: '#/components/schemas/type_inboxes:InboxId'
18730
19307
  display_name:
@@ -18738,6 +19315,7 @@ components:
18738
19315
  type: string
18739
19316
  format: date-time
18740
19317
  required:
19318
+ - pod_id
18741
19319
  - inbox_id
18742
19320
  - updated_at
18743
19321
  - created_at
@@ -18948,6 +19526,8 @@ components:
18948
19526
  type_inboxes:Inbox:
18949
19527
  type: object
18950
19528
  properties:
19529
+ pod_id:
19530
+ $ref: '#/components/schemas/type_pods:PodId'
18951
19531
  inbox_id:
18952
19532
  $ref: '#/components/schemas/type_inboxes:InboxId'
18953
19533
  display_name:
@@ -18961,6 +19541,7 @@ components:
18961
19541
  type: string
18962
19542
  format: date-time
18963
19543
  required:
19544
+ - pod_id
18964
19545
  - inbox_id
18965
19546
  - updated_at
18966
19547
  - created_at
@@ -19168,6 +19749,8 @@ components:
19168
19749
  type_inboxes:Inbox:
19169
19750
  type: object
19170
19751
  properties:
19752
+ pod_id:
19753
+ $ref: '#/components/schemas/type_pods:PodId'
19171
19754
  inbox_id:
19172
19755
  $ref: '#/components/schemas/type_inboxes:InboxId'
19173
19756
  display_name:
@@ -19181,6 +19764,7 @@ components:
19181
19764
  type: string
19182
19765
  format: date-time
19183
19766
  required:
19767
+ - pod_id
19184
19768
  - inbox_id
19185
19769
  - updated_at
19186
19770
  - created_at
@@ -21250,6 +21834,8 @@ components:
21250
21834
  type_domains:DomainItem:
21251
21835
  type: object
21252
21836
  properties:
21837
+ pod_id:
21838
+ $ref: '#/components/schemas/type_pods:PodId'
21253
21839
  domain_id:
21254
21840
  $ref: '#/components/schemas/type_domains:DomainId'
21255
21841
  feedback_enabled:
@@ -21522,6 +22108,8 @@ components:
21522
22108
  type_domains:Domain:
21523
22109
  type: object
21524
22110
  properties:
22111
+ pod_id:
22112
+ $ref: '#/components/schemas/type_pods:PodId'
21525
22113
  domain_id:
21526
22114
  $ref: '#/components/schemas/type_domains:DomainId'
21527
22115
  status:
@@ -21886,25 +22474,3 @@ let dataTask = session.dataTask(with: request as URLRequest, completionHandler:
21886
22474
  dataTask.resume()
21887
22475
  ```
21888
22476
 
21889
- # August 13, 2025
21890
-
21891
- ## Summary
21892
-
21893
- We're excited to introduce **Metrics Endpoints** - two new powerful endpoints that give you deep insights into your email deliverability and agent performance. Track critical events like bounces, deliveries, rejections, and complaints with detailed timestamps.
21894
-
21895
- ### What's new?
21896
-
21897
- New endpoints:
21898
-
21899
- * `GET /metrics` - Get comprehensive metrics across all your inboxes
21900
- * `GET /inboxes/{inbox_id}/metrics` - Get metrics for a specific inbox
21901
-
21902
- Build smarter agents that monitor their own bounce rates, optimize send timing, and automatically adjust behavior based on deliverability metrics. This unlocks exciting possibilities for self-optimizing agents that can pause campaigns when performance drops or implement intelligent retry strategies.
21903
-
21904
- <Note>
21905
- Ready to build smarter agents? Check out our [metrics
21906
- documentation](https://docs.agentmail.to/api-reference/metrics) to get
21907
- started.
21908
- </Note>
21909
-
21910
-