agentmail 0.1.7 → 0.1.9
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/README.md +2 -2
- package/dist/cjs/BaseClient.js +2 -2
- package/dist/cjs/api/resources/inboxes/client/Client.d.ts +2 -2
- package/dist/cjs/api/resources/inboxes/client/Client.js +9 -7
- package/dist/cjs/api/resources/messages/types/Message.d.ts +4 -0
- package/dist/cjs/serialization/resources/inboxes/client/create.d.ts +8 -0
- package/dist/cjs/serialization/resources/inboxes/client/create.js +6 -0
- package/dist/cjs/serialization/resources/inboxes/client/index.d.ts +1 -0
- package/dist/cjs/serialization/resources/inboxes/client/index.js +37 -0
- package/dist/cjs/serialization/resources/inboxes/index.d.ts +1 -0
- package/dist/cjs/serialization/resources/inboxes/index.js +1 -0
- package/dist/cjs/serialization/resources/messages/types/Message.d.ts +2 -0
- package/dist/cjs/serialization/resources/messages/types/Message.js +2 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/BaseClient.mjs +2 -2
- package/dist/esm/api/resources/inboxes/client/Client.d.mts +2 -2
- package/dist/esm/api/resources/inboxes/client/Client.mjs +9 -7
- package/dist/esm/api/resources/messages/types/Message.d.mts +4 -0
- package/dist/esm/serialization/resources/inboxes/client/create.d.mts +8 -0
- package/dist/esm/serialization/resources/inboxes/client/create.mjs +3 -0
- package/dist/esm/serialization/resources/inboxes/client/index.d.mts +1 -0
- package/dist/esm/serialization/resources/inboxes/client/index.mjs +1 -0
- package/dist/esm/serialization/resources/inboxes/index.d.mts +1 -0
- package/dist/esm/serialization/resources/inboxes/index.mjs +1 -0
- package/dist/esm/serialization/resources/messages/types/Message.d.mts +2 -0
- package/dist/esm/serialization/resources/messages/types/Message.mjs +2 -0
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/dist/llms-full.txt +59 -72
- package/dist/llms.txt +0 -4
- package/package.json +1 -1
- package/reference.md +1 -1
package/README.md
CHANGED
|
@@ -20,10 +20,10 @@ A full reference for this library is available [here](https://github.com/agentma
|
|
|
20
20
|
Instantiate and use the client with the following:
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
|
-
import { AgentMailClient
|
|
23
|
+
import { AgentMailClient } from "agentmail";
|
|
24
24
|
|
|
25
25
|
const client = new AgentMailClient({ apiKey: "YOUR_API_KEY" });
|
|
26
|
-
await client.inboxes.create(
|
|
26
|
+
await client.inboxes.create(undefined);
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
## Request And Response Types
|
package/dist/cjs/BaseClient.js
CHANGED
|
@@ -43,8 +43,8 @@ function normalizeClientOptions(options) {
|
|
|
43
43
|
const headers = (0, headers_js_1.mergeHeaders)({
|
|
44
44
|
"X-Fern-Language": "JavaScript",
|
|
45
45
|
"X-Fern-SDK-Name": "agentmail",
|
|
46
|
-
"X-Fern-SDK-Version": "0.1.
|
|
47
|
-
"User-Agent": "agentmail/0.1.
|
|
46
|
+
"X-Fern-SDK-Version": "0.1.9",
|
|
47
|
+
"User-Agent": "agentmail/0.1.9",
|
|
48
48
|
"X-Fern-Runtime": core.RUNTIME.type,
|
|
49
49
|
"X-Fern-Runtime-Version": core.RUNTIME.version,
|
|
50
50
|
}, options === null || options === void 0 ? void 0 : options.headers);
|
|
@@ -50,9 +50,9 @@ export declare class InboxesClient {
|
|
|
50
50
|
* @throws {@link AgentMail.ValidationError}
|
|
51
51
|
*
|
|
52
52
|
* @example
|
|
53
|
-
* await client.inboxes.create(
|
|
53
|
+
* await client.inboxes.create(undefined)
|
|
54
54
|
*/
|
|
55
|
-
create(request
|
|
55
|
+
create(request?: AgentMail.inboxes.CreateInboxRequest, requestOptions?: InboxesClient.RequestOptions): core.HttpResponsePromise<AgentMail.inboxes.Inbox>;
|
|
56
56
|
private __create;
|
|
57
57
|
/**
|
|
58
58
|
* @param {AgentMail.inboxes.InboxId} inbox_id
|
|
@@ -227,7 +227,7 @@ class InboxesClient {
|
|
|
227
227
|
* @throws {@link AgentMail.ValidationError}
|
|
228
228
|
*
|
|
229
229
|
* @example
|
|
230
|
-
* await client.inboxes.create(
|
|
230
|
+
* await client.inboxes.create(undefined)
|
|
231
231
|
*/
|
|
232
232
|
create(request, requestOptions) {
|
|
233
233
|
return core.HttpResponsePromise.fromPromise(this.__create(request, requestOptions));
|
|
@@ -244,12 +244,14 @@ class InboxesClient {
|
|
|
244
244
|
contentType: "application/json",
|
|
245
245
|
queryParameters: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams,
|
|
246
246
|
requestType: "json",
|
|
247
|
-
body:
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
247
|
+
body: request != null
|
|
248
|
+
? serializers.inboxes.create.Request.jsonOrThrow(request, {
|
|
249
|
+
unrecognizedObjectKeys: "passthrough",
|
|
250
|
+
allowUnrecognizedUnionMembers: true,
|
|
251
|
+
allowUnrecognizedEnumValues: true,
|
|
252
|
+
omitUndefined: true,
|
|
253
|
+
})
|
|
254
|
+
: undefined,
|
|
253
255
|
timeoutMs: ((_f = (_d = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) !== null && _d !== void 0 ? _d : (_e = this._options) === null || _e === void 0 ? void 0 : _e.timeoutInSeconds) !== null && _f !== void 0 ? _f : 60) * 1000,
|
|
254
256
|
maxRetries: (_g = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries) !== null && _g !== void 0 ? _g : (_h = this._options) === null || _h === void 0 ? void 0 : _h.maxRetries,
|
|
255
257
|
abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
|
|
@@ -15,6 +15,10 @@ export interface Message {
|
|
|
15
15
|
preview?: AgentMail.MessagePreview;
|
|
16
16
|
text?: AgentMail.MessageText;
|
|
17
17
|
html?: AgentMail.MessageHtml;
|
|
18
|
+
/** Extracted new text content. */
|
|
19
|
+
extractedText?: string;
|
|
20
|
+
/** Extracted new HTML content. */
|
|
21
|
+
extractedHtml?: string;
|
|
18
22
|
attachments?: AgentMail.MessageAttachments;
|
|
19
23
|
inReplyTo?: AgentMail.MessageInReplyTo;
|
|
20
24
|
references?: AgentMail.MessageReferences;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as AgentMail from "../../../../api/index.js";
|
|
2
|
+
import type * as core from "../../../../core/index.js";
|
|
3
|
+
import type * as serializers from "../../../index.js";
|
|
4
|
+
import { CreateInboxRequest } from "../types/CreateInboxRequest.js";
|
|
5
|
+
export declare const Request: core.serialization.Schema<serializers.inboxes.create.Request.Raw, AgentMail.inboxes.CreateInboxRequest | undefined>;
|
|
6
|
+
export declare namespace Request {
|
|
7
|
+
type Raw = CreateInboxRequest.Raw | null | undefined;
|
|
8
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// This file was auto-generated by Fern from our API Definition.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Request = void 0;
|
|
5
|
+
const CreateInboxRequest_js_1 = require("../types/CreateInboxRequest.js");
|
|
6
|
+
exports.Request = CreateInboxRequest_js_1.CreateInboxRequest.optional();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as create from "./create.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.create = void 0;
|
|
37
|
+
exports.create = __importStar(require("./create.js"));
|
|
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./client/index.js"), exports);
|
|
17
18
|
__exportStar(require("./types/index.js"), exports);
|
|
@@ -37,6 +37,8 @@ export declare namespace Message {
|
|
|
37
37
|
preview?: MessagePreview.Raw | null;
|
|
38
38
|
text?: MessageText.Raw | null;
|
|
39
39
|
html?: MessageHtml.Raw | null;
|
|
40
|
+
extracted_text?: string | null;
|
|
41
|
+
extracted_html?: string | null;
|
|
40
42
|
attachments?: MessageAttachments.Raw | null;
|
|
41
43
|
in_reply_to?: MessageInReplyTo.Raw | null;
|
|
42
44
|
references?: MessageReferences.Raw | null;
|
|
@@ -70,6 +70,8 @@ exports.Message = core.serialization.object({
|
|
|
70
70
|
preview: MessagePreview_js_1.MessagePreview.optional(),
|
|
71
71
|
text: MessageText_js_1.MessageText.optional(),
|
|
72
72
|
html: MessageHtml_js_1.MessageHtml.optional(),
|
|
73
|
+
extractedText: core.serialization.property("extracted_text", core.serialization.string().optional()),
|
|
74
|
+
extractedHtml: core.serialization.property("extracted_html", core.serialization.string().optional()),
|
|
73
75
|
attachments: MessageAttachments_js_1.MessageAttachments.optional(),
|
|
74
76
|
inReplyTo: core.serialization.property("in_reply_to", MessageInReplyTo_js_1.MessageInReplyTo.optional()),
|
|
75
77
|
references: MessageReferences_js_1.MessageReferences.optional(),
|
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.1.
|
|
1
|
+
export declare const SDK_VERSION = "0.1.9";
|
package/dist/cjs/version.js
CHANGED
package/dist/esm/BaseClient.mjs
CHANGED
|
@@ -6,8 +6,8 @@ export function normalizeClientOptions(options) {
|
|
|
6
6
|
const headers = mergeHeaders({
|
|
7
7
|
"X-Fern-Language": "JavaScript",
|
|
8
8
|
"X-Fern-SDK-Name": "agentmail",
|
|
9
|
-
"X-Fern-SDK-Version": "0.1.
|
|
10
|
-
"User-Agent": "agentmail/0.1.
|
|
9
|
+
"X-Fern-SDK-Version": "0.1.9",
|
|
10
|
+
"User-Agent": "agentmail/0.1.9",
|
|
11
11
|
"X-Fern-Runtime": core.RUNTIME.type,
|
|
12
12
|
"X-Fern-Runtime-Version": core.RUNTIME.version,
|
|
13
13
|
}, options === null || options === void 0 ? void 0 : options.headers);
|
|
@@ -50,9 +50,9 @@ export declare class InboxesClient {
|
|
|
50
50
|
* @throws {@link AgentMail.ValidationError}
|
|
51
51
|
*
|
|
52
52
|
* @example
|
|
53
|
-
* await client.inboxes.create(
|
|
53
|
+
* await client.inboxes.create(undefined)
|
|
54
54
|
*/
|
|
55
|
-
create(request
|
|
55
|
+
create(request?: AgentMail.inboxes.CreateInboxRequest, requestOptions?: InboxesClient.RequestOptions): core.HttpResponsePromise<AgentMail.inboxes.Inbox>;
|
|
56
56
|
private __create;
|
|
57
57
|
/**
|
|
58
58
|
* @param {AgentMail.inboxes.InboxId} inbox_id
|
|
@@ -191,7 +191,7 @@ export class InboxesClient {
|
|
|
191
191
|
* @throws {@link AgentMail.ValidationError}
|
|
192
192
|
*
|
|
193
193
|
* @example
|
|
194
|
-
* await client.inboxes.create(
|
|
194
|
+
* await client.inboxes.create(undefined)
|
|
195
195
|
*/
|
|
196
196
|
create(request, requestOptions) {
|
|
197
197
|
return core.HttpResponsePromise.fromPromise(this.__create(request, requestOptions));
|
|
@@ -208,12 +208,14 @@ export class InboxesClient {
|
|
|
208
208
|
contentType: "application/json",
|
|
209
209
|
queryParameters: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams,
|
|
210
210
|
requestType: "json",
|
|
211
|
-
body:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
211
|
+
body: request != null
|
|
212
|
+
? serializers.inboxes.create.Request.jsonOrThrow(request, {
|
|
213
|
+
unrecognizedObjectKeys: "passthrough",
|
|
214
|
+
allowUnrecognizedUnionMembers: true,
|
|
215
|
+
allowUnrecognizedEnumValues: true,
|
|
216
|
+
omitUndefined: true,
|
|
217
|
+
})
|
|
218
|
+
: undefined,
|
|
217
219
|
timeoutMs: ((_f = (_d = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) !== null && _d !== void 0 ? _d : (_e = this._options) === null || _e === void 0 ? void 0 : _e.timeoutInSeconds) !== null && _f !== void 0 ? _f : 60) * 1000,
|
|
218
220
|
maxRetries: (_g = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries) !== null && _g !== void 0 ? _g : (_h = this._options) === null || _h === void 0 ? void 0 : _h.maxRetries,
|
|
219
221
|
abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
|
|
@@ -15,6 +15,10 @@ export interface Message {
|
|
|
15
15
|
preview?: AgentMail.MessagePreview;
|
|
16
16
|
text?: AgentMail.MessageText;
|
|
17
17
|
html?: AgentMail.MessageHtml;
|
|
18
|
+
/** Extracted new text content. */
|
|
19
|
+
extractedText?: string;
|
|
20
|
+
/** Extracted new HTML content. */
|
|
21
|
+
extractedHtml?: string;
|
|
18
22
|
attachments?: AgentMail.MessageAttachments;
|
|
19
23
|
inReplyTo?: AgentMail.MessageInReplyTo;
|
|
20
24
|
references?: AgentMail.MessageReferences;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as AgentMail from "../../../../api/index.mjs";
|
|
2
|
+
import type * as core from "../../../../core/index.mjs";
|
|
3
|
+
import type * as serializers from "../../../index.mjs";
|
|
4
|
+
import { CreateInboxRequest } from "../types/CreateInboxRequest.mjs";
|
|
5
|
+
export declare const Request: core.serialization.Schema<serializers.inboxes.create.Request.Raw, AgentMail.inboxes.CreateInboxRequest | undefined>;
|
|
6
|
+
export declare namespace Request {
|
|
7
|
+
type Raw = CreateInboxRequest.Raw | null | undefined;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as create from "./create.mjs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as create from "./create.mjs";
|
|
@@ -37,6 +37,8 @@ export declare namespace Message {
|
|
|
37
37
|
preview?: MessagePreview.Raw | null;
|
|
38
38
|
text?: MessageText.Raw | null;
|
|
39
39
|
html?: MessageHtml.Raw | null;
|
|
40
|
+
extracted_text?: string | null;
|
|
41
|
+
extracted_html?: string | null;
|
|
40
42
|
attachments?: MessageAttachments.Raw | null;
|
|
41
43
|
in_reply_to?: MessageInReplyTo.Raw | null;
|
|
42
44
|
references?: MessageReferences.Raw | null;
|
|
@@ -34,6 +34,8 @@ export const Message = core.serialization.object({
|
|
|
34
34
|
preview: MessagePreview.optional(),
|
|
35
35
|
text: MessageText.optional(),
|
|
36
36
|
html: MessageHtml.optional(),
|
|
37
|
+
extractedText: core.serialization.property("extracted_text", core.serialization.string().optional()),
|
|
38
|
+
extractedHtml: core.serialization.property("extracted_html", core.serialization.string().optional()),
|
|
37
39
|
attachments: MessageAttachments.optional(),
|
|
38
40
|
inReplyTo: core.serialization.property("in_reply_to", MessageInReplyTo.optional()),
|
|
39
41
|
references: MessageReferences.optional(),
|
package/dist/esm/version.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.1.
|
|
1
|
+
export declare const SDK_VERSION = "0.1.9";
|
package/dist/esm/version.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.1.
|
|
1
|
+
export const SDK_VERSION = "0.1.9";
|
package/dist/llms-full.txt
CHANGED
|
@@ -166,12 +166,10 @@ This guide will walk you through installing the AgentMail SDK, authenticating wi
|
|
|
166
166
|
If you don't have an account yet, you can sign up directly from the console. Once you're logged in, you'll be able to manage your inboxes, view analytics, and create API keys.
|
|
167
167
|
</Step>
|
|
168
168
|
|
|
169
|
-
{" "}
|
|
170
|
-
|
|
171
169
|
<Step title="Create an API Key">
|
|
172
170
|
Now that you're in the console, you'll need to create an API key to
|
|
173
171
|
authenticate your requests. Navigate to the API Keys section in your console
|
|
174
|
-
dashboard.  Click
|
|
175
173
|
"Create New API Key" and give it a descriptive name. Once created, copy the
|
|
176
174
|
API key and store it securely. Create a `.env` file in your project's root
|
|
177
175
|
directory and add your key to it. We recommend using environment variables to
|
|
@@ -218,6 +216,16 @@ This guide will walk you through installing the AgentMail SDK, authenticating wi
|
|
|
218
216
|
print("Inbox created successfully!")
|
|
219
217
|
print(inbox)
|
|
220
218
|
|
|
219
|
+
# Send Email
|
|
220
|
+
|
|
221
|
+
client.inboxes.messages.send(
|
|
222
|
+
inbox_id="your-email@example.com",
|
|
223
|
+
to="contact@agentmail.to",
|
|
224
|
+
subject="Hello from AgentMail!",
|
|
225
|
+
text="This is my first email sent with the AgentMail API."
|
|
226
|
+
|
|
227
|
+
)
|
|
228
|
+
|
|
221
229
|
```
|
|
222
230
|
|
|
223
231
|
```typescript title="TypeScript"
|
|
@@ -238,7 +246,7 @@ This guide will walk you through installing the AgentMail SDK, authenticating wi
|
|
|
238
246
|
|
|
239
247
|
// Send an email from the new inbox
|
|
240
248
|
console.log("Sending email...");
|
|
241
|
-
await client.inboxes.messages.send(inbox.
|
|
249
|
+
await client.inboxes.messages.send(inbox.inboxId, {
|
|
242
250
|
to: "your-email@example.com",
|
|
243
251
|
subject: "Hello from AgentMail!",
|
|
244
252
|
text: "This is my first email sent with the AgentMail API.",
|
|
@@ -312,7 +320,7 @@ Unlike traditional email providers that are designed for human scale, AgentMail
|
|
|
312
320
|
|
|
313
321
|
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
322
|
|
|
315
|
-
<img src="file:
|
|
323
|
+
<img src="file:4479b8d5-647b-428f-9c43-5202aafa5175" alt="AgentMail Organizational Hierarchy" />
|
|
316
324
|
|
|
317
325
|
<Steps>
|
|
318
326
|
<Step title="Organization">
|
|
@@ -732,7 +740,7 @@ Here is an example of a well-structured and styled HTML header:
|
|
|
732
740
|
</CodeBlocks>
|
|
733
741
|
|
|
734
742
|
<Frame caption="Look how pretty this message looks!">
|
|
735
|
-
<img src="file:
|
|
743
|
+
<img src="file:a3eb4249-4892-4a88-b6d3-9bcaa7e79044" alt="rendered css" />
|
|
736
744
|
</Frame>
|
|
737
745
|
|
|
738
746
|
## Receiving `Messages`
|
|
@@ -1507,27 +1515,6 @@ Pod: "Marketing-Agent"
|
|
|
1507
1515
|
* Explore [Domains](/custom-domains) to set up custom email domains for your pods
|
|
1508
1516
|
|
|
1509
1517
|
|
|
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
1518
|
# Replit
|
|
1532
1519
|
|
|
1533
1520
|
> AgentMail's Replit integration
|
|
@@ -1602,6 +1589,7 @@ Below is a collections of prebuilt tools that Replit can use out of the box to s
|
|
|
1602
1589
|
.union([z.string(), z.array(z.string())])
|
|
1603
1590
|
.optional()
|
|
1604
1591
|
.describe('BCC recipients'),
|
|
1592
|
+
subject: z.string().optional().describe('Subject'),
|
|
1605
1593
|
})
|
|
1606
1594
|
|
|
1607
1595
|
const ReplyToMessageInput = BaseMessageInput.extend({ messageId: MessageId })
|
|
@@ -1739,24 +1727,6 @@ Email is critical to identity and communication on the internet. Much of the con
|
|
|
1739
1727
|
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
1728
|
|
|
1741
1729
|
|
|
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
|
-
|
|
1760
1730
|
# Guide: Sending & Receiving Email
|
|
1761
1731
|
|
|
1762
1732
|
> A step-by-step guide to the practical workflow of sending initial emails and handling replies to have a full conversation.
|
|
@@ -2009,7 +1979,7 @@ Configuring your domain is a three-step process: add the domain via API, copy th
|
|
|
2009
1979
|
After creating your domain in the AgentMail Console, click the "Download BIND Zone File" button to get the complete zone file.
|
|
2010
1980
|
|
|
2011
1981
|
<Frame caption="Downloading BIND zone file from AgentMail Console">
|
|
2012
|
-
<img src="file:
|
|
1982
|
+
<img src="file:9be82773-96e6-4707-90e4-049e00ecc897" alt="Download BIND Zone File from Console" />
|
|
2013
1983
|
</Frame>
|
|
2014
1984
|
|
|
2015
1985
|
<Tabs>
|
|
@@ -2020,13 +1990,13 @@ Configuring your domain is a three-step process: add the domain via API, copy th
|
|
|
2020
1990
|
2. Click **"Import zone file"** in the top right corner
|
|
2021
1991
|
|
|
2022
1992
|
<Frame caption="Importing BIND zone file in AWS Route 53">
|
|
2023
|
-
<img src="file:
|
|
1993
|
+
<img src="file:52e201a6-6877-492d-8ceb-d68103640c2d" alt="AWS Route 53 BIND Import" />
|
|
2024
1994
|
</Frame>
|
|
2025
1995
|
|
|
2026
1996
|
3. Paste the CONTENTS of downloaded BIND zone file
|
|
2027
1997
|
|
|
2028
1998
|
<Frame caption="Open the file with text editor and paste the contents. It should look similar to what we have in this image.">
|
|
2029
|
-
<img src="file:
|
|
1999
|
+
<img src="file:6afc53aa-83cf-47c5-b751-b2ff42f86fc9" alt="AWS Route 53 BIND Import" />
|
|
2030
2000
|
</Frame>
|
|
2031
2001
|
|
|
2032
2002
|
4. Review the records and click **"Import"**
|
|
@@ -2039,13 +2009,13 @@ Configuring your domain is a three-step process: add the domain via API, copy th
|
|
|
2039
2009
|
2. Navigate to **DNS > Records**
|
|
2040
2010
|
|
|
2041
2011
|
<Frame caption="This is what the page looks like">
|
|
2042
|
-
<img src="file:
|
|
2012
|
+
<img src="file:a5aac2ea-d73e-4931-b5b9-ff49cecc4f1e" alt="Cloudflare BIND Import" />
|
|
2043
2013
|
</Frame>
|
|
2044
2014
|
|
|
2045
2015
|
3. Click **"Import and Export"**
|
|
2046
2016
|
|
|
2047
2017
|
<Frame caption="You should be able to just drop the file in">
|
|
2048
|
-
<img src="file:
|
|
2018
|
+
<img src="file:d92b7899-42d5-4622-8a7c-93c3dfde145d" alt="Cloudflare BIND Import" />
|
|
2049
2019
|
</Frame>
|
|
2050
2020
|
|
|
2051
2021
|
4. Upload the downloaded BIND zone file as is
|
|
@@ -2058,13 +2028,13 @@ Configuring your domain is a three-step process: add the domain via API, copy th
|
|
|
2058
2028
|
2. Navigate to the **DNS** subtab of the domain you want to send from
|
|
2059
2029
|
|
|
2060
2030
|
<Frame caption="Click on this button!">
|
|
2061
|
-
<img src="file:
|
|
2031
|
+
<img src="file:dd25616b-848d-43b5-98da-91f256c8c435" alt="Porkbun DNS Management" />
|
|
2062
2032
|
</Frame>
|
|
2063
2033
|
|
|
2064
2034
|
3. Scroll down to the quick upload section
|
|
2065
2035
|
|
|
2066
2036
|
<Frame caption="Upload your BIND zone file here">
|
|
2067
|
-
<img src="file:
|
|
2037
|
+
<img src="file:807e2a16-6fe3-4fce-bdf8-cd5333ef8459" alt="Porkbun Zone File Import" />
|
|
2068
2038
|
</Frame>
|
|
2069
2039
|
|
|
2070
2040
|
4. Upload the downloaded BIND zone file as is
|
|
@@ -2148,7 +2118,7 @@ Configuring your domain is a three-step process: add the domain via API, copy th
|
|
|
2148
2118
|
* **Value:** Can directly copy paste the `value` from the API response (e.g., `{random_letters_numbers}.dkim.amazonses.com`).
|
|
2149
2119
|
|
|
2150
2120
|
<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!">
|
|
2151
|
-
<img src="file:
|
|
2121
|
+
<img src="file:8f29da71-dcd0-42e2-9d1d-ffd6fbc5fa62" alt="AWS Route 53 Record Configuration" />
|
|
2152
2122
|
</Frame>
|
|
2153
2123
|
|
|
2154
2124
|
* **TXT (DMARC/SPF):**
|
|
@@ -2684,13 +2654,13 @@ Ngrok creates a secure tunnel from a public URL to your local development server
|
|
|
2684
2654
|
|
|
2685
2655
|
Visit [ngrok.com](https://ngrok.com/) and click "Sign up" to create a free account.
|
|
2686
2656
|
|
|
2687
|
-
<img src="file:
|
|
2657
|
+
<img src="file:3be3ba9b-4849-4adb-85b5-b1dd53489224" alt="Ngrok homepage" />
|
|
2688
2658
|
|
|
2689
2659
|
### 1.2 Choose your platform and install
|
|
2690
2660
|
|
|
2691
2661
|
After logging in, ngrok will guide you through the setup process. Select your operating system and follow the installation instructions.
|
|
2692
2662
|
|
|
2693
|
-
<img src="file:
|
|
2663
|
+
<img src="file:3606f774-41a5-4e9a-b513-8818ded10a21" alt="Ngrok setup instructions" />
|
|
2694
2664
|
|
|
2695
2665
|
For macOS, you can install ngrok via Homebrew:
|
|
2696
2666
|
|
|
@@ -2736,7 +2706,7 @@ ngrok http 3000
|
|
|
2736
2706
|
|
|
2737
2707
|
You should see output similar to this:
|
|
2738
2708
|
|
|
2739
|
-
<img src="file:
|
|
2709
|
+
<img src="file:99864be8-6721-4b52-bae1-981cee8bd478" alt="Ngrok terminal output" />
|
|
2740
2710
|
|
|
2741
2711
|
Copy the **Forwarding URL** (e.g., `https://your-subdomain.ngrok-free.app`). This is the public URL that AgentMail will use to send webhooks.
|
|
2742
2712
|
|
|
@@ -2833,7 +2803,7 @@ python webhook_receiver.py
|
|
|
2833
2803
|
|
|
2834
2804
|
Open your browser and visit `http://127.0.0.1:3000` to see the status page confirming your webhook receiver is running:
|
|
2835
2805
|
|
|
2836
|
-
<img src="file:
|
|
2806
|
+
<img src="file:65bc3605-d0f1-41cc-bd3c-7c6138eed70c" alt="Webhook receiver status page" />
|
|
2837
2807
|
|
|
2838
2808
|
## Testing Your Setup
|
|
2839
2809
|
|
|
@@ -2955,7 +2925,7 @@ How you send your emails is just as important as what you send. If you're sendin
|
|
|
2955
2925
|
more natural to email providers. AgentMail's ability to create inboxes at
|
|
2956
2926
|
scale makes this strategy easy to implement.
|
|
2957
2927
|
|
|
2958
|
-
<img src="file:
|
|
2928
|
+
<img src="file:9510cd76-587b-4d97-97d8-d8ed463903ee" alt="Diagram comparing one inbox sending 1000 emails vs. five inboxes sending 200 each." />
|
|
2959
2929
|
</Step>
|
|
2960
2930
|
|
|
2961
2931
|
<Step title="Protect Your Reputation with Multiple Domains">
|
|
@@ -4974,7 +4944,7 @@ Done
|
|
|
4974
4944
|
|
|
4975
4945
|
Go to your AgentMail inbox and filter by labels to organize your emails:
|
|
4976
4946
|
|
|
4977
|
-
<img src="file:
|
|
4947
|
+
<img src="file:36c999f1-b941-45cb-8f04-1b062610ef6c" alt="Test image" />
|
|
4978
4948
|
|
|
4979
4949
|
**Filter by sentiment:**
|
|
4980
4950
|
|
|
@@ -6363,7 +6333,7 @@ async function main() {
|
|
|
6363
6333
|
environment: "https://api.agentmail.to",
|
|
6364
6334
|
apiKey: "YOUR_TOKEN_HERE",
|
|
6365
6335
|
});
|
|
6366
|
-
await client.inboxes.create(
|
|
6336
|
+
await client.inboxes.create();
|
|
6367
6337
|
}
|
|
6368
6338
|
main();
|
|
6369
6339
|
|
|
@@ -6386,7 +6356,6 @@ package main
|
|
|
6386
6356
|
|
|
6387
6357
|
import (
|
|
6388
6358
|
"fmt"
|
|
6389
|
-
"strings"
|
|
6390
6359
|
"net/http"
|
|
6391
6360
|
"io"
|
|
6392
6361
|
)
|
|
@@ -6395,9 +6364,7 @@ func main() {
|
|
|
6395
6364
|
|
|
6396
6365
|
url := "https://api.agentmail.to/v0/inboxes"
|
|
6397
6366
|
|
|
6398
|
-
|
|
6399
|
-
|
|
6400
|
-
req, _ := http.NewRequest("POST", url, payload)
|
|
6367
|
+
req, _ := http.NewRequest("POST", url, nil)
|
|
6401
6368
|
|
|
6402
6369
|
req.Header.Add("Authorization", "Bearer <api_key>")
|
|
6403
6370
|
req.Header.Add("Content-Type", "application/json")
|
|
@@ -6425,7 +6392,6 @@ http.use_ssl = true
|
|
|
6425
6392
|
request = Net::HTTP::Post.new(url)
|
|
6426
6393
|
request["Authorization"] = 'Bearer <api_key>'
|
|
6427
6394
|
request["Content-Type"] = 'application/json'
|
|
6428
|
-
request.body = "{}"
|
|
6429
6395
|
|
|
6430
6396
|
response = http.request(request)
|
|
6431
6397
|
puts response.read_body
|
|
@@ -6435,7 +6401,6 @@ puts response.read_body
|
|
|
6435
6401
|
HttpResponse<String> response = Unirest.post("https://api.agentmail.to/v0/inboxes")
|
|
6436
6402
|
.header("Authorization", "Bearer <api_key>")
|
|
6437
6403
|
.header("Content-Type", "application/json")
|
|
6438
|
-
.body("{}")
|
|
6439
6404
|
.asString();
|
|
6440
6405
|
```
|
|
6441
6406
|
|
|
@@ -6445,7 +6410,6 @@ HttpResponse<String> response = Unirest.post("https://api.agentmail.to/v0/inboxe
|
|
|
6445
6410
|
$client = new \GuzzleHttp\Client();
|
|
6446
6411
|
|
|
6447
6412
|
$response = $client->request('POST', 'https://api.agentmail.to/v0/inboxes', [
|
|
6448
|
-
'body' => '{}',
|
|
6449
6413
|
'headers' => [
|
|
6450
6414
|
'Authorization' => 'Bearer <api_key>',
|
|
6451
6415
|
'Content-Type' => 'application/json',
|
|
@@ -6460,7 +6424,6 @@ var client = new RestClient("https://api.agentmail.to/v0/inboxes");
|
|
|
6460
6424
|
var request = new RestRequest(Method.POST);
|
|
6461
6425
|
request.AddHeader("Authorization", "Bearer <api_key>");
|
|
6462
6426
|
request.AddHeader("Content-Type", "application/json");
|
|
6463
|
-
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
|
|
6464
6427
|
IRestResponse response = client.Execute(request);
|
|
6465
6428
|
```
|
|
6466
6429
|
|
|
@@ -6471,16 +6434,12 @@ let headers = [
|
|
|
6471
6434
|
"Authorization": "Bearer <api_key>",
|
|
6472
6435
|
"Content-Type": "application/json"
|
|
6473
6436
|
]
|
|
6474
|
-
let parameters = [] as [String : Any]
|
|
6475
|
-
|
|
6476
|
-
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
|
|
6477
6437
|
|
|
6478
6438
|
let request = NSMutableURLRequest(url: NSURL(string: "https://api.agentmail.to/v0/inboxes")! as URL,
|
|
6479
6439
|
cachePolicy: .useProtocolCachePolicy,
|
|
6480
6440
|
timeoutInterval: 10.0)
|
|
6481
6441
|
request.httpMethod = "POST"
|
|
6482
6442
|
request.allHTTPHeaderFields = headers
|
|
6483
|
-
request.httpBody = postData as Data
|
|
6484
6443
|
|
|
6485
6444
|
let session = URLSession.shared
|
|
6486
6445
|
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
|
|
@@ -7474,6 +7433,10 @@ components:
|
|
|
7474
7433
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
7475
7434
|
html:
|
|
7476
7435
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
7436
|
+
extracted_text:
|
|
7437
|
+
type: string
|
|
7438
|
+
extracted_html:
|
|
7439
|
+
type: string
|
|
7477
7440
|
attachments:
|
|
7478
7441
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
7479
7442
|
in_reply_to:
|
|
@@ -8583,6 +8546,10 @@ components:
|
|
|
8583
8546
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
8584
8547
|
html:
|
|
8585
8548
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
8549
|
+
extracted_text:
|
|
8550
|
+
type: string
|
|
8551
|
+
extracted_html:
|
|
8552
|
+
type: string
|
|
8586
8553
|
attachments:
|
|
8587
8554
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
8588
8555
|
in_reply_to:
|
|
@@ -9890,6 +9857,10 @@ components:
|
|
|
9890
9857
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
9891
9858
|
html:
|
|
9892
9859
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
9860
|
+
extracted_text:
|
|
9861
|
+
type: string
|
|
9862
|
+
extracted_html:
|
|
9863
|
+
type: string
|
|
9893
9864
|
attachments:
|
|
9894
9865
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
9895
9866
|
in_reply_to:
|
|
@@ -12671,6 +12642,10 @@ components:
|
|
|
12671
12642
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
12672
12643
|
html:
|
|
12673
12644
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
12645
|
+
extracted_text:
|
|
12646
|
+
type: string
|
|
12647
|
+
extracted_html:
|
|
12648
|
+
type: string
|
|
12674
12649
|
attachments:
|
|
12675
12650
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
12676
12651
|
in_reply_to:
|
|
@@ -16086,6 +16061,10 @@ components:
|
|
|
16086
16061
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
16087
16062
|
html:
|
|
16088
16063
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
16064
|
+
extracted_text:
|
|
16065
|
+
type: string
|
|
16066
|
+
extracted_html:
|
|
16067
|
+
type: string
|
|
16089
16068
|
attachments:
|
|
16090
16069
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
16091
16070
|
in_reply_to:
|
|
@@ -17099,6 +17078,10 @@ components:
|
|
|
17099
17078
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
17100
17079
|
html:
|
|
17101
17080
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
17081
|
+
extracted_text:
|
|
17082
|
+
type: string
|
|
17083
|
+
extracted_html:
|
|
17084
|
+
type: string
|
|
17102
17085
|
attachments:
|
|
17103
17086
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
17104
17087
|
in_reply_to:
|
|
@@ -20666,6 +20649,10 @@ components:
|
|
|
20666
20649
|
$ref: '#/components/schemas/type_messages:MessageText'
|
|
20667
20650
|
html:
|
|
20668
20651
|
$ref: '#/components/schemas/type_messages:MessageHtml'
|
|
20652
|
+
extracted_text:
|
|
20653
|
+
type: string
|
|
20654
|
+
extracted_html:
|
|
20655
|
+
type: string
|
|
20669
20656
|
attachments:
|
|
20670
20657
|
$ref: '#/components/schemas/type_messages:MessageAttachments'
|
|
20671
20658
|
in_reply_to:
|
package/dist/llms.txt
CHANGED
|
@@ -12,11 +12,7 @@
|
|
|
12
12
|
- [Labels](https://docs.agentmail.to/labels.mdx): Learn how to use Labels to manage state, track campaigns, and filter messages for powerful agentic workflows.
|
|
13
13
|
- [Attachments](https://docs.agentmail.to/attachments.mdx): Learn how to send files as attachments, and download incoming attachments from both messages and threads.
|
|
14
14
|
- [Pods](https://docs.agentmail.to/documentation/core-concepts/pods.mdx): Learn how to use pods for multi-tenant email management
|
|
15
|
-
- [Integrations](https://docs.agentmail.to/integrations/overview.mdx): Overview of AgentMail's integrations
|
|
16
15
|
- [Replit](https://docs.agentmail.to/integrations/replit.mdx): AgentMail's Replit integration
|
|
17
|
-
- [Smithery](https://docs.agentmail.to/integrations/smithery.mdx): AgentMail's Smithery integration
|
|
18
|
-
- [Mastra](https://docs.agentmail.to/integrations/mastra.mdx): AgentMail's Mastra integration
|
|
19
|
-
- [CrewAI](https://docs.agentmail.to/integrations/crewai.mdx): AgentMail's CrewAI integration
|
|
20
16
|
- [Guide: Sending & Receiving Email](https://docs.agentmail.to/sending-receiving-email.mdx): A step-by-step guide to the practical workflow of sending initial emails and handling replies to have a full conversation.
|
|
21
17
|
- [Using Custom Domains](https://docs.agentmail.to/custom-domains.mdx): A step-by-step guide to configuring your custom domain with AgentMail for enhanced branding and trust.
|
|
22
18
|
- [Managing Your Domains](https://docs.agentmail.to/managing-domains.mdx): Learn how to manage your custom domains effectively using AgentMail's API for enhanced deliverability and reputation management.
|
package/package.json
CHANGED