MCP-Logic
by angrysky56
- src
- constants
import { Tool } from "@modelcontextprotocol/sdk/types.js";
export const TOOL_ERROR_MESSAGES = {
UNKNOWN_TOOL: "Unknown tool:",
TOOL_CALL_FAILED: "Tool call failed:",
} as const;
export const TOOL_RESPONSE_MESSAGES = {
ASYNC_PROCESSING: "Request is being processed asynchronously",
} as const;
export const TOOLS: Tool[] = [
{
name: "gmail_list_emails",
description: "Lists recent Gmail messages from the user's inbox with optional filtering.",
inputSchema: {
type: "object",
properties: {
maxResults: {
type: "number",
description:
"Maximum number of emails to return. Default 5. Never more than 10, for token limits.",
},
after: {
type: "string",
description:
"Return emails after this date. Format: YYYY/MM/DD or RFC3339 timestamp (e.g. 2024-03-20T10:00:00Z)",
},
before: {
type: "string",
description:
"Return emails before this date. Format: YYYY/MM/DD or RFC3339 timestamp (e.g. 2024-03-20T10:00:00Z)",
},
sender: {
type: "string",
description: "Filter emails by sender email address. Can be a partial match.",
},
to: {
type: "string",
description: "Filter emails by recipient email address. Can be a partial match.",
},
subject: {
type: "string",
description: "Filter emails by subject line. Can be a partial match.",
},
hasAttachment: {
type: "boolean",
description:
"If true, only return emails with attachments. If false, only return emails without attachments.",
},
label: {
type: "string",
description:
"Filter emails by Gmail label name (e.g. 'INBOX', 'SENT', 'IMPORTANT', or custom labels).",
},
},
},
},
{
name: "gmail_get_email",
description: "Retrieves the full content of a specific Gmail message by its ID.",
inputSchema: {
type: "object",
properties: {
messageId: {
type: "string",
description:
"The unique ID of the Gmail message to retrieve. This can be obtained from list_emails or search_messages results.",
},
},
required: ["messageId"],
},
},
{
name: "gmail_search_emails",
description: "Searches Gmail messages using Gmail's search syntax.",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description:
"Gmail search query using Gmail's search operators (e.g. 'from:example@gmail.com has:attachment')",
},
maxResults: {
type: "number",
description:
"Maximum number of search results to return. Defaults to 10 if not specified.",
},
after: {
type: "string",
description:
"Return emails after this date. Format: YYYY/MM/DD or RFC3339 timestamp (e.g. 2024-03-20T10:00:00Z)",
},
before: {
type: "string",
description:
"Return emails before this date. Format: YYYY/MM/DD or RFC3339 timestamp (e.g. 2024-03-20T10:00:00Z)",
},
},
required: ["query"],
},
},
{
name: "gmail_send_email_ai",
description:
"Uses AI to generate and send an email or reply based on user instructions. User must specify AI or manual. This is AI.",
inputSchema: {
type: "object",
properties: {
to: {
type: "string",
description:
"Recipient email address(es). Multiple addresses can be comma-separated. Must be a valid email address",
},
userInstructions: {
type: "string",
description:
"Detailed user instructions for an AI system to generate a HTML email. Should be a description of the email contents used to guide AI to generate the content.",
},
replyTo: {
type: "string",
description:
"Optional message ID to reply to. If provided, this will be treated as a reply to that email",
},
},
required: ["to", "userInstructions"],
},
},
{
name: "gmail_send_email_manual",
description:
"Sends an email or reply with the provided content directly. User must specify AI or manual. This is manual.",
inputSchema: {
type: "object",
properties: {
to: {
type: "string",
description: "Recipient email address(es). Multiple addresses can be comma-separated.",
},
subject: {
type: "string",
description: "Email subject line. Not required if this is a reply (replyTo is provided)",
},
body: {
type: "string",
description: "Email body content",
},
cc: {
type: "string",
description: "CC recipient email address(es)",
},
bcc: {
type: "string",
description: "BCC recipient email address(es)",
},
isHtml: {
type: "boolean",
description: "Whether the body content is HTML",
},
replyTo: {
type: "string",
description:
"Optional message ID to reply to. If provided, this will be treated as a reply to that email",
},
},
required: ["to", "body"],
},
},
{
name: "gmail_trash_message",
description: "Moves a Gmail message to the trash by its ID.",
inputSchema: {
type: "object",
properties: {
messageId: {
type: "string",
description:
"The unique ID of the Gmail message to move to trash. This can be obtained from list_emails or search_messages results.",
},
},
required: ["messageId"],
},
},
{
name: "gmail_get_draft",
description: "Retrieves the full content of a specific Gmail draft by its ID.",
inputSchema: {
type: "object",
properties: {
draftId: {
type: "string",
description:
"The unique ID of the Gmail draft to retrieve. This can be obtained from list_drafts results.",
},
},
required: ["draftId"],
},
},
{
name: "gmail_create_draft_ai",
description:
"Uses AI to generate and send an email or reply based on user instructions. User must specify AI or manual. This is AI.",
inputSchema: {
type: "object",
properties: {
to: {
type: "string",
description:
"Recipient email address(es). Multiple addresses can be comma-separated. Must be a valid email address",
},
userInstructions: {
type: "string",
description:
"Detailed user instructions for an AI system to generate a HTML email. Should be a description of the email contents used to guide AI to generate the content.",
},
replyTo: {
type: "string",
description:
"Optional message ID to reply to. If provided, this will be treated as a reply to that email",
},
},
required: ["to", "userInstructions"],
},
},
{
name: "gmail_edit_draft_ai",
description:
"Uses AI to generate and send an email or reply based on user instructions. User must specify AI or manual. This is AI.",
inputSchema: {
type: "object",
properties: {
draftId: {
type: "string",
description: "The ID of the draft email to edit",
},
userInstructions: {
type: "string",
description:
"Detailed user instructions for an AI system to generate a HTML email. Should be a description of the email contents used to guide AI to generate the content.",
},
},
required: ["draftId", "userInstructions"],
},
},
{
name: "gmail_list_drafts",
description: "Lists all draft emails in the user's account.",
inputSchema: {
type: "object",
properties: {
maxResults: {
type: "number",
description: "Maximum number of draft emails to return. Defaults to 10 if not specified.",
},
},
},
},
{
name: "gmail_delete_draft",
description: "Deletes a draft email by its ID.",
inputSchema: {
type: "object",
properties: {
draftId: {
type: "string",
description:
"The unique ID of the draft email to delete. This can be obtained from list_drafts results.",
},
},
required: ["draftId"],
},
},
];