Skip to main content
Glama

modify_message

Add or remove labels on Gmail messages to organize your inbox. Use this tool to categorize emails by applying or deleting specific labels based on message ID.

Instructions

Modify the labels on a message

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the message to modify
addLabelIdsNoA list of label IDs to add to the message
removeLabelIdsNoA list of label IDs to remove from the message

Implementation Reference

  • The handler function for the 'modify_message' tool. It invokes the Gmail API's users.messages.modify method via the shared handleTool helper to add or remove labels from a specific message.
    async (params) => { return handleTool(config, async (gmail: gmail_v1.Gmail) => { const { data } = await gmail.users.messages.modify({ userId: 'me', id: params.id, requestBody: { addLabelIds: params.addLabelIds, removeLabelIds: params.removeLabelIds } }) return formatResponse(data) }) }
  • Input schema for the 'modify_message' tool defined using Zod, specifying parameters for message ID and optional label IDs to add or remove.
    { id: z.string().describe("The ID of the message to modify"), addLabelIds: z.array(z.string()).optional().describe("A list of label IDs to add to the message"), removeLabelIds: z.array(z.string()).optional().describe("A list of label IDs to remove from the message") },
  • src/index.ts:592-604 (registration)
    Registration of the 'modify_message' tool on the MCP server, including name, description, input schema, and handler function.
    server.tool("modify_message", "Modify the labels on a message", { id: z.string().describe("The ID of the message to modify"), addLabelIds: z.array(z.string()).optional().describe("A list of label IDs to add to the message"), removeLabelIds: z.array(z.string()).optional().describe("A list of label IDs to remove from the message") }, async (params) => { return handleTool(config, async (gmail: gmail_v1.Gmail) => { const { data } = await gmail.users.messages.modify({ userId: 'me', id: params.id, requestBody: { addLabelIds: params.addLabelIds, removeLabelIds: params.removeLabelIds } }) return formatResponse(data) }) }
  • Shared helper function 'handleTool' used by the 'modify_message' handler (and other tools) to manage OAuth2 authentication, client creation, and execution of Gmail API calls.
    const handleTool = async (queryConfig: Record<string, any> | undefined, apiCall: (gmail: gmail_v1.Gmail) => Promise<any>) => { try { const oauth2Client = queryConfig ? createOAuth2Client(queryConfig) : defaultOAuth2Client if (!oauth2Client) throw new Error('OAuth2 client could not be created, please check your credentials') const credentialsAreValid = await validateCredentials(oauth2Client) if (!credentialsAreValid) throw new Error('OAuth2 credentials are invalid, please re-authenticate') const gmailClient = queryConfig ? google.gmail({ version: 'v1', auth: oauth2Client }) : defaultGmailClient if (!gmailClient) throw new Error('Gmail client could not be created, please check your credentials') const result = await apiCall(gmailClient) return result } catch (error: any) { return `Tool execution failed: ${error.message}` } }
  • Helper function 'formatResponse' used to standardize tool responses in MCP format.
    const formatResponse = (response: any) => ({ content: [{ type: "text", text: JSON.stringify(response) }] })

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HitmanLy007/gmail-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server