Create Sender
create_senderCreate a new sender identity with required contact and address details to authorize email sending.
Instructions
Create a new sender identity
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nickname | Yes | Nickname for the sender | |
| from | Yes | ||
| reply_to | Yes | ||
| address | Yes | Street address | |
| city | Yes | City | |
| state | Yes | State | |
| zip | Yes | ZIP code | |
| country | Yes | Country |
Implementation Reference
- src/tools/contacts.ts:287-305 (handler)The handler function that executes the create_sender tool logic. It checks read-only mode, then makes a POST request to SendGrid's marketing/senders API with the provided sender data, and returns a success message with the result.
handler: async (senderData: any): Promise<ToolResult> => { const readOnlyCheck = checkReadOnlyMode(); if (readOnlyCheck.blocked) { return { content: [{ type: "text", text: readOnlyCheck.message! }] }; } const result = await makeRequest("https://api.sendgrid.com/v3/marketing/senders", { method: "POST", body: JSON.stringify(senderData), }); return { content: [ { type: "text", text: `Sender created successfully. ${JSON.stringify(result, null, 2)}\n\nIMPORTANT: Please verify the sender email address if the email's domain is not in the Sender Authentication settings.`, }, ], }; }, - src/tools/contacts.ts:270-285 (schema)The Zod input schema for create_sender, defining required fields: nickname, from (email+name), reply_to (email+name), address, city, state, zip, and country.
inputSchema: { nickname: z.string().describe("Nickname for the sender"), from: z.object({ email: z.string().describe("From email address"), name: z.string().describe("From name"), }), reply_to: z.object({ email: z.string().describe("Reply-to email address"), name: z.string().describe("Reply-to name"), }), address: z.string().describe("Street address"), city: z.string().describe("City"), state: z.string().describe("State"), zip: z.string().describe("ZIP code"), country: z.string().describe("Country"), }, - src/tools/contacts.ts:266-306 (registration)The create_sender tool is registered as a property of the contactTools object (exported from contacts.ts at line 6). It is then re-exported via the spread operator in src/tools/index.ts (line 12).
create_sender: { config: { title: "Create Sender", description: "Create a new sender identity", inputSchema: { nickname: z.string().describe("Nickname for the sender"), from: z.object({ email: z.string().describe("From email address"), name: z.string().describe("From name"), }), reply_to: z.object({ email: z.string().describe("Reply-to email address"), name: z.string().describe("Reply-to name"), }), address: z.string().describe("Street address"), city: z.string().describe("City"), state: z.string().describe("State"), zip: z.string().describe("ZIP code"), country: z.string().describe("Country"), }, }, handler: async (senderData: any): Promise<ToolResult> => { const readOnlyCheck = checkReadOnlyMode(); if (readOnlyCheck.blocked) { return { content: [{ type: "text", text: readOnlyCheck.message! }] }; } const result = await makeRequest("https://api.sendgrid.com/v3/marketing/senders", { method: "POST", body: JSON.stringify(senderData), }); return { content: [ { type: "text", text: `Sender created successfully. ${JSON.stringify(result, null, 2)}\n\nIMPORTANT: Please verify the sender email address if the email's domain is not in the Sender Authentication settings.`, }, ], }; }, },